Fluo WACL — WhatsApp Conversion Linker — contrato v1 COMO USAR Abra o WhatsApp com um protocolo confirmado e guarde UTMs/metadados para consulta protegida. Não há painel ou cadastro por cliente. Hostnames, segredos e políticas são configuração protegida do serviço. Mensagem pré-preenchida não confirma envio nem conversão. LINK DE CAPTURA https://wa.vocatio.marketing/SEU_TELEFONE?text=Ol%C3%A1%21%20%7Bcodigo_numerico%7D&utm_source=google&utm_custom=a&utm_custom=b Alias: /v1/wa/SEU_TELEFONE?mensagem=... Telefone: 8–15 dígitos internacionais, primeiro diferente de zero. mensagem e text são aliases: uma ocorrência total. Ausente/vazia usa Olá! {codigo_atendimento_alfanumerico}. MARCADORES (um tipo por mensagem; repetição do mesmo tipo é permitida) {codigo_numerico} → Código: 12 dígitos {codigo_alfanumerico} → Código: 10 letras/números {codigo_atendimento_numerico} → Código de atendimento: 12 dígitos {codigo_atendimento_alfanumerico} → Código de atendimento: 10 letras/números Sem marcador, o padrão é acrescentado. Texto limitado a 1.000 caracteres Unicode. Código só é emitido depois de gravação confirmada; protocolo não é senha. INSTALAR NO SITE https://wa.vocatio.marketing/install?site=https%3A%2F%2Fwww.seusite.example Opcionais: telefone, mensagem e redirect_host (somente um host já habilitado). Sem telefone, retorna script e instruções; com telefone, também botão completo. Site é normalizado para origem, não é buscado nem cadastrado. Em host exclusivo de ajuda/API, informe redirect_host. O auxiliar prepara links estáticos/dinâmicos, teclado e nova aba, sem chamada prévia nem bloqueio da navegação. Campanha explícita no link prevalece; depois página atual; depois última campanha da aba somente se o site autorizar data-wacl-session="enabled". Campanha nova substitui a anterior. Padrão: sem storage/cookies. Cookies de marketing nunca são lidos automaticamente. JavaScript bloqueado, carga tardia ou dados nunca disponíveis podem impedir metadados. DADOS E LIMITES Todos os utm_* personalizados e repetidos, incluindo valores vazios: até 64 pares, nome 96 bytes, valor 1.024 bytes e grupo 4.096 bytes. URL final: 16 KiB; evento: 8 KiB. Grupos opcionais são limitados e reduzidos com diagnóstico. IDs: gclid,dclid,gbraid,wbraid,fbclid,msclkid,ttclid,twclid,li_fat_id,sccid,rdt_cid,epik. Também: fbc/fbp, ga_client_id/ga_session_id explicitamente encaminhados; ad_id/adset_id/campaign_id/creative_id/placement/network/device/keyword/matchtype/gad_source/gad_campaignid; meta_* (16 pares), pagina/entrada sanitizadas, click_observed_at e declarações consent_ad_user_data/consent_ad_personalization. IP confiável, User-Agent, idioma, Referer sanitizado, client hints e contexto Cloudflare são observados quando disponíveis. Não provam identidade ou humanidade. Query/fragmento/credenciais das páginas e Referer são removidos. Não guardar cookies, formulários, Authorization ou parâmetros desconhecidos. Chaves UTM/meta sensíveis são redigidas. PROTEÇÃO E FALHAS Proteção rápida, gravação direta no Supabase e redirect 302. Excesso de repetição/quota ou falha sem confirmação abre WhatsApp sem novo código, sem reutilizar código antigo. Pode haver perda de rastreio e falso positivo raro. Não há D1/fila nem captura garantida durante falha. Limpeza/condensação acontece só depois e preserva protocolos e observações; expurgo automático não está habilitado. Política inicial: assinatura 5/min, host/IP 60/min, host 6.000/min; assinatura-base 200/dia e host 5.000/dia. Contadores diários usam horário de Porto Alegre. Limites de borda são aproximados. GET cria captura admitida; HEAD apenas valida, sem gravar. Outros métodos: 405. URL excessiva: 414; configuração inválida: 400; rota/host desconhecido: 404. CONSULTA API (servidor/n8n) GET https://wa.vocatio.marketing/api/v1/protocols/SEU_CODIGO?hostname=wa.vocatio.marketing Authorization: Bearer SUA_CREDENCIAL Credencial própria com escopo de hostname; não usar service role no navegador ou n8n. Após commit, não há espera de lote. Se a consulta correr antes do clique, retry limitado em 2, 5 e 15 segundos. 200 encontrado; 400 inválido; 401 sem credencial válida; 403 sem escopo; 404 ausência confirmada; 410 só com evidência de expiração; 429 limite de consulta; 503 banco indisponível/inconsistência (não é ausência). Respeite Retry-After; API tem limite próprio inicial 120/min por credencial/host. ROTAS PÚBLICAS / e /help: esta ajuda; /install: HTML copiável em texto; /track.v1.js: auxiliar versionado. Ajuda/gerador não consultam banco, criam cliques, fazem fetch externo, ativam domínio ou revelam outros clientes. Nunca coloque segredos nas URLs.