Regras inteligentes: atributos, operadores e valores
Todos os atributos, operadores e valores aceitos pelas Regras inteligentes — nomes de dispositivo, códigos de país, região, continente e idioma, formatos de referenciador e UTM — além de limites, mensagens de validação, precedência e planos.

Use esta página para consultar o que uma Regra inteligente consegue testar, quais valores combinam e os limites que o app e a API aplicam. Para a lógica de decisão e a solução de problemas veja Como as Regras inteligentes escolhem o destino; para payloads veja Crie Regras inteligentes com a API, o MCP e automações.
Disponibilidade
- Plano — Business ou superior. Free, Starter e Pro: o botão mostra o selo Business; a API devolve
403 forbiddenpara qualquerrulesnão vazio - Links — todos os links; seção Regras inteligentes no construtor de links
- QR Codes — apenas QR Codes dinâmicos do tipo URL; QR Codes estáticos e de outros tipos (Wi-Fi, vCard, WhatsApp, texto, e-mail, telefone) não avaliam regras
- Superfícies — app web, API REST (
rulesem links e QR Codes), MCP (create_link,update_link), automações via API, webhooks (link.created,link.updatedcarregamrules)
Anatomia de uma regra
- Condição — No app: atributo + é / não é + valor · Na API:
attribute,operator,value· Obrigatório: os três, ou nenhum (= Todo o tráfego) - Destino — No app: URL de destino · Na API:
url· Obrigatório: um entreurl/split - Divisão — No app: Dividir tráfego (teste A/B) → URL da variante + Peso da variante (%) ×2–4 · Na API:
split: [{ url, weight }]· Obrigatório: um entreurl/split
Atributos
- Dispositivo —
attributena API:device· O que é comparado: nome do sistema operacional no user agent · Valores aceitos:iOS,Android,Windows,Mac OS(exibido como macOS),Linux· Exemplo:iOS - País —
attributena API:country· O que é comparado: país do endereço IP do visitante · Valores aceitos: ISO 3166-1 alfa-2, duas letras (lista no app) · Exemplo:BR,PT,US - Região (estado) —
attributena API:region· O que é comparado: subdivisão do endereço IP do visitante · Valores aceitos: código ISO 3166-2 sem o prefixo do país · Exemplo:SP,RJ,CA - Cidade —
attributena API:city· O que é comparado: cidade do endereço IP do visitante · Valores aceitos: nome da cidade como reportado pela geolocalização · Exemplo:São Paulo,Lisboa - Continente —
attributena API:continent· O que é comparado: continente do endereço IP do visitante · Valores aceitos:AFÁfrica,ANAntártida,ASÁsia,EUEuropa,NAAmérica do Norte,OCOceania,SAAmérica do Sul · Exemplo:SA - Idioma —
attributena API:language· O que é comparado: primeiro idioma suportado noAccept-Languagedo navegador, sem a região · Valores aceitos:pt,en,es,fr,de,zh,ru,it,ja,ko(Português, English, Español, Français, Deutsch, 中文, Русский, Italiano, 日本語, 한국어) · Exemplo:pt(combina compt-BR,pt-PT) - Referenciador —
attributena API:referrer· O que é comparado: hostname da página de origem, sem owww.inicial · Valores aceitos: domínio puro · Exemplo:instagram.com,l.facebook.com - Origem UTM —
attributena API:utm_source· O que é comparado:utm_sourcena query string do link curto · Valores aceitos: qualquer texto · Exemplo:newsletter - Mídia UTM —
attributena API:utm_medium· O que é comparado:utm_mediumna query string do link curto · Valores aceitos: qualquer texto · Exemplo:email - Campanha UTM —
attributena API:utm_campaign· O que é comparado:utm_campaignna query string do link curto · Valores aceitos: qualquer texto · Exemplo:promo-agosto - Termo UTM —
attributena API:utm_term· O que é comparado:utm_termna query string do link curto · Valores aceitos: qualquer texto · Exemplo:qr code - Conteúdo UTM —
attributena API:utm_content· O que é comparado:utm_contentna query string do link curto · Valores aceitos: qualquer texto · Exemplo:cartaz-a
Observações:
- O app oferece listas para Dispositivo, País, Idioma e Continente; os demais atributos são texto livre.
- A API grava qualquer string de 1 a 190 caracteres como
value. Um valor que a requisição nunca carrega (mobile,desktop,tablet,Brasil,BR-SP, uma URL completa de referenciador) é salvo e nunca combina. - Dispositivo é o sistema operacional, então não existe "celular" nem "tablet". iPad com Safari em modo desktop reporta macOS.
- Idioma não é localização: vem do navegador. Navegadores que preferem um idioma fora dos dez acima não combinam com nenhuma regra de Idioma.
- Os valores de UTM são lidos do link curto como foi clicado (
https://go.example.com/promo?utm_source=newsletter), não da URL de destino nem dos campos UTM salvos do link.utm_idnão está disponível. - Quando a requisição não traz valor para o atributo (localização desconhecida, sem referenciador,
?utm_source=vazio, idioma não suportado), a regra não combina — nem com é nem com não é.
Operadores
- é —
operatorna API:equals· Combina quando: o valor da requisição é igual ao valor da regra, comparando a string inteira, sem diferenciar maiúsculas - não é —
operatorna API:not_equals· Combina quando: a requisição traz um valor para o atributo e ele é diferente do valor da regra
Não existe "contém", "começa com", expressão regular nem lista de valores. Cada regra tem exatamente uma condição; use várias regras em ordem para combiná-las.
Dividir tráfego
- Variantes — 2 a 4
- Peso — número inteiro de 1 a 100 por variante; os pesos somam exatamente 100
- Distribuir igualmente — 2 → 50/50, 3 → 34/33/33, 4 → 25/25/25/25 (o resto vai para a primeira variante)
- Atribuição — hash do link + ID do clique → balde 0–99 → variante pelo peso acumulado
- Fixa por — 1 hora, ou 30 dias quando o Monitoramento de conversão está ativo (cookie
cq_idno caminho do link curto) - Onde é permitida — em qualquer regra (com ou sem condição); uma regra sem condição (Todo o tráfego) sempre divide e precisa ser a última
- Resultados — Análise → card URLs, uma linha por URL de destino
Limites
- Regras por link ou QR Code — 20
- Tamanho do valor — 1–190 caracteres
- Regras sem condição — no máximo uma, na última posição
- URLs de destino — precisam ser URLs válidas; toda URL de regra e de variante passa pela mesma verificação de segurança do destino principal
Mensagens de validação
App (embaixo da regra): Os pesos precisam somar 100%. · Cada peso precisa ser um número inteiro entre 1 e 100. · Toda variante precisa de uma URL. · Uma regra sem condição sempre divide o tráfego entre as variantes. (dica no botão de divisão desabilitado de uma regra Todo o tráfego) · Smart rules are only available for dynamic QR codes (dica no botão desabilitado de um QR Code estático — texto em inglês no app).
API (400, error.code unprocessable_entity, mensagem prefixada com o índice da regra): A rule needs either a destination url or a traffic split, never both · A rule condition needs attribute, operator and value together · A rule without a condition must split traffic · Split weights must add up to 100 · A rule without a condition matches all traffic, so it must be the last one · Invalid URL · Invalid enum value. Expected 'device' | 'country' | … · String must contain at most 190 character(s) · Array must contain at most 20 element(s).
API (403 forbidden): Smart rules are available on the Business plan and above. Upgrade to Business to use this feature. · Smart rules can only be used on dynamic QR codes.
Precedência
- Proteção por senha, expiração, links banidos e o formulário de pré-redirecionamento são tratados antes de qualquer regra de redirecionamento.
- Camuflagem de links vence as Regras inteligentes: um link camuflado mostra a sua URL de destino; as regras são ignoradas.
- Regras inteligentes, de cima para baixo, a primeira que combina vence.
- Segmentação iOS, Segmentação Android, Segmentação Geográfica (botões antigos), nessa ordem.
- A URL de destino do link.
Os parâmetros de query recebidos são anexados ao destino escolhido; com Monitoramento de conversão ativo, cq_id é acrescentado. Os redirecionamentos respondem 302 (301 para um domínio raiz).