Dashboard
Visão geral das suas campanhas
Tráfego — Hoje
Campanhas Recentes
| Nome | Origem | Clicks | Reais | Bloqueados | Status |
|---|
Top Motivos de Bloqueio
| Motivo | Qtd | % |
|---|
Campanhas
Gerencie suas campanhas de cloaking
| Nome | Origem | Clicks | Status | Link de Cloaking | UTMs para o Anúncio | Ações |
|---|
Nenhuma campanha criada
Clique em "Nova Campanha" para começar
Domínios
Gerencie seus domínios de cloaking
Nenhum domínio adicionado
Adicione um domínio para gerar links de cloaking
White Pages
Páginas seguras para moderação
| Nome | Nicho | URL | Criado em | Ações |
|---|
Nenhuma white page criada
Crie páginas seguras para moderação das plataformas
Tracking Utmify
Configure pixels e API token pra marcar vendas, PageView e InitiateCheckout no painel da Utmify
Por que isso importa
A Utmify precisa de duas peças separadas pra trackear tudo corretamente:
- Pixel IDs (TikTok + Meta): disparam
PageVieweInitiateCheckoutautomáticos - API Token (x-api-token): envia as vendas (pendente + aprovada) com os UTMs pra Utmify atribuir a campanha
Atenção: trocou de conta Utmify? Tem que trocar TANTO os pixel IDs QUANTO o token. Trocar só um deixa metade do tracking quebrado.
Como configurar (4 partes)
Parte 1: Loader sequencial de pixels (cole no <head> de TODAS as páginas). Substitua os IDs nos arrays pelos seus.
<script>
(function(){
var TIKTOK_IDS = [
"SEU_PIXEL_TIKTOK_1",
"SEU_PIXEL_TIKTOK_2"
];
var META_IDS = [
"SEU_PIXEL_META_1",
"SEU_PIXEL_META_2"
];
function loadSeq(ids, varName, baseUrl){
var i = 0;
function next(){
if(i >= ids.length) return;
window[varName] = ids[i];
var s = document.createElement('script');
s.src = baseUrl + '?v=' + encodeURIComponent(ids[i]);
s.onload = function(){ i++; next(); };
s.onerror = function(){ i++; next(); };
document.head.appendChild(s);
}
next();
}
loadSeq(TIKTOK_IDS, 'tikTokPixelId', 'https://cdn.utmify.com.br/scripts/pixel/pixel-tiktok.js');
loadSeq(META_IDS, 'pixelId', 'https://cdn.utmify.com.br/scripts/pixel/pixel.js');
})();
</script>
Por que sequencial? O pixel.js da Utmify lê window.pixelId NO momento da execução. Se você carregar 2 scripts async sobrescrevendo a variável, só 1 funciona. O loader resolve isso esperando cada um terminar antes de carregar o próximo.
Parte 2: Captura de UTMs (cole no <head>):
<script src="https://cdn.utmify.com.br/scripts/utms/latest.js" async defer></script>
Parte 3: POST de venda PENDENTE (chama quando gerar o PIX). Substitua SEU_TOKEN_UTMIFY pelo seu token:
fetch('https://api.utmify.com.br/api-credentials/orders', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-token': 'SEU_TOKEN_UTMIFY'
},
body: JSON.stringify({
orderId: transactionId,
platform: 'other',
paymentMethod: 'pix',
status: 'waiting_payment',
createdAt: new Date().toISOString(),
approvedDate: null,
customer: { name, email, phone, document: cpf },
products: [{
id: 'produto-id', name: 'Nome Produto',
planId: 'produto-id', planName: 'Nome Produto',
quantity: 1, priceInCents: amountCents
}],
trackingParameters: {
utm_source: utms.utm_source || null,
utm_medium: utms.utm_medium || null,
utm_campaign: utms.utm_campaign || null,
utm_content: utms.utm_content || null,
utm_term: utms.utm_term || null
},
commission: { totalPriceInCents: amountCents, gatewayFeeInCents: 0, userCommissionInCents: amountCents },
src: utms.src || ''
})
}).catch(()=>{});
Parte 4: POST de venda APROVADA (chama quando o PIX for confirmado pelo webhook). MESMO orderId da Parte 3:
fetch('https://api.utmify.com.br/api-credentials/orders', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-token': 'SEU_TOKEN_UTMIFY'
},
body: JSON.stringify({
orderId: transactionId,
platform: 'other',
paymentMethod: 'pix',
status: 'paid',
createdAt: createdAtISO,
approvedDate: new Date().toISOString(),
customer: { name, email, phone, document: cpf },
products: [{
id: 'produto-id', name: 'Nome Produto',
planId: 'produto-id', planName: 'Nome Produto',
quantity: 1, priceInCents: amountCents
}],
trackingParameters: {
utm_source: utms.utm_source || null,
utm_medium: utms.utm_medium || null,
utm_campaign: utms.utm_campaign || null,
utm_content: utms.utm_content || null,
utm_term: utms.utm_term || null
},
commission: { totalPriceInCents: amountCents, gatewayFeeInCents: 0, userCommissionInCents: amountCents },
src: utms.src || ''
})
}).catch(()=>{});
Implementação com IA
Copie o prompt abaixo, cole no Claude / ChatGPT / Cursor dentro do seu projeto e troque os campos [COLE AQUI...] pelos seus dados. A IA vai fazer toda a integração pra você.
Preciso configurar tracking completo de Utmify no meu funil. Faz pra mim:
1) TOKEN DA API UTMIFY (x-api-token usado nas chamadas pra https://api.utmify.com.br/api-credentials/orders):
[COLE AQUI SEU TOKEN UTMIFY]
- Substitua qualquer token antigo de utmify no projeto inteiro (HTML, PHP, JS) por esse.
- Aplica nos POSTs com status="waiting_payment" (geração do PIX) e status="paid" (confirmação).
2) PIXELS UTMIFY (PageView + InitiateCheckout):
- TikTok pixels (window.tikTokPixelId, https://cdn.utmify.com.br/scripts/pixel/pixel-tiktok.js):
[COLE AQUI OS IDS DE PIXEL TIKTOK, UM POR LINHA]
- Meta pixels (window.pixelId, https://cdn.utmify.com.br/scripts/pixel/pixel.js):
[COLE AQUI OS IDS DE PIXEL META, UM POR LINHA]
3) IMPORTANTE — LOADER SEQUENCIAL:
Os scripts pixel.js / pixel-tiktok.js leem window.pixelId / window.tikTokPixelId NO MOMENTO da execução. Se eu carregar 2+ blocos <script async> sobrescrevendo a variável e apontando pra mesma URL, o browser cacheia e só executa 1 vez. Use loader sequencial com onload + cache-buster por ID. Modelo:
<script>
(function(){
var TIKTOK_IDS = ["id1","id2"];
var META_IDS = ["id1","id2"];
function loadSeq(ids, varName, baseUrl){
var i=0; function next(){
if(i >= ids.length) return;
window[varName] = ids[i];
var s = document.createElement('script');
s.src = baseUrl + '?v=' + encodeURIComponent(ids[i]);
s.onload = function(){ i++; next(); };
s.onerror = function(){ i++; next(); };
document.head.appendChild(s);
} next();
}
loadSeq(TIKTOK_IDS, 'tikTokPixelId', 'https://cdn.utmify.com.br/scripts/pixel/pixel-tiktok.js');
loadSeq(META_IDS, 'pixelId', 'https://cdn.utmify.com.br/scripts/pixel/pixel.js');
})();
</script>
Coloque UMA vez no <head> de cada página, e REMOVA todos os blocos antigos com window.tikTokPixelId/pixelId espalhados.
4) CAPTURA DE UTMs:
Carregue no <head>:
<script src="https://cdn.utmify.com.br/scripts/utms/latest.js" async defer></script>
E salve UTMs no localStorage na chegada (chave "br_utms") pra persistir quando o usuário ficar tempo.
5) POSTs DE VENDA:
- Quando o PIX é gerado: POST com status="waiting_payment", trackingParameters com utm_source/medium/campaign/content/term.
- Quando o PIX é confirmado pelo webhook: POST com MESMO orderId, status="paid", approvedDate preenchida.
- Ambos com x-api-token = [TOKEN UTMIFY], URL https://api.utmify.com.br/api-credentials/orders.
6) URL DO ANÚNCIO TIKTOK:
Pra Utmify identificar fonte "TikTok" + nome de campanha/anúncio na aba Campanhas, a URL precisa ter as macros TikTok. Modelo:
https://meu-cloaker.com/c/<id>?br_key=<token>&utm_source=tiktok&utm_campaign=__CAMPAIGN_NAME__|__CAMPAIGN_ID__&utm_medium=__AID_NAME__|__AID__&utm_content=__CID_NAME__|__CID__&utm_term=__PLACEMENT__&utm_id=__CAMPAIGN_ID__
O cloaker forwarda todas as query params pra offer page automaticamente.
7) VALIDAÇÃO:
Depois de aplicar, manda um POST de teste pra https://api.utmify.com.br/api-credentials/orders com status="waiting_payment" e depois "paid". Tem que retornar {"OK":true,"result":"SUCCESS"}.
Deploys: produção via Vercel (vercel --prod --yes).
Onde encontrar seu token Utmify
Painel da Utmify → Integrações → API Credentials → copia o x-api-token. Esse token é único da sua conta, não compartilhe.
Script Anti-Clone
Bloqueia quem copiar o link e abrir direto no navegador (sem vir de anúncio)
O que esse script faz
Roda no carregamento da sua página e só libera o acesso se uma destas condições for atendida:
- fbclid válido na URL (anúncio real do Facebook/Instagram gera automaticamente)
- Referer de facebook.com / instagram.com / fb.me
- br_pass na URL (passe gerado pelo cloaker BlackRabbit)
- Sessão prévia (visitante que já entrou antes via método válido)
Se nada bater → redireciona pra URL "segura" (você define qual). Resultado: ninguém que copiar seu link consegue ver seu funil.
Como instalar (3 passos)
Passo 1: Crie um arquivo chamado auth.js na raiz do seu projeto e cole o código abaixo:
(function () {
try {
var u = new URLSearchParams(location.search);
var ref = document.referrer || '';
var fbclid = u.get('fbclid') || '';
var fbclidValido = /^(Iw|Pb|Aa)[A-Za-z0-9_\-]{30,}$/.test(fbclid);
var fromMeta = /(^|\.)facebook\.com|(^|\.)instagram\.com|(^|\.)fbcdn\.net|(^|\.)fb\.com|(^|\.)fb\.me|l\.facebook\.com|lm\.facebook\.com/i.test(ref);
var hasPass = u.has('br_pass');
var hasFlag = false;
try { hasFlag = !!localStorage.getItem('br_session_ok'); } catch (_) {}
var valido = fbclidValido || fromMeta || hasPass;
if (valido) {
try { localStorage.setItem('br_session_ok', '1'); } catch (_) {}
} else if (!hasFlag) {
location.replace('https://google.com');
}
} catch (e) {}
})();
Passo 2: Adicione esta linha dentro da tag <head> de TODAS as páginas que quer proteger (index, upsells, etc.):
<script src="/auth.js"></script>
Passo 3: No arquivo auth.js, troque https://google.com pela URL "segura" pra onde quer redirecionar quem tentar burlar (geralmente o site original que o funil está imitando).
Funciona junto com o cloaker
O BlackRabbit Cloaker já adiciona ?br_pass=<token> automaticamente quando redireciona pra sua offer. O auth.js reconhece esse pass e libera. Resultado: tráfego do cloaker passa, tráfego copiado bloqueia.
Testar Cloaker
Simule um clique de anúncio e veja a página como o lead vê
Selecionar Campanha
Link de Cloaking + UTMs
Selecione uma campanha acima ou cole manualmente o link completo com UTMs.
Como funciona
fbclid falso para simular clique de anúncioLogs / Clicks
Histórico de acessos em tempo real
| Data/Hora | Campanha | IP | Pais | Device | OS | Browser | Status | Motivo |
|---|
Nenhum log registrado
Os clicks aparecerão aqui em tempo real
Variações em Massa
Ghost Studio — Gerador de variações únicas de vídeo
> Upload do vídeo original
Arraste seu vídeo aqui ou clique para selecionar
MP4, MOV, WEBM — até 200MB
Limpar Metadata
Ghost Studio — Remoção de rastros digitais de vídeos
> Upload do vídeo
Arraste seu vídeo aqui ou clique para selecionar
MP4, MOV, WEBM
Corte Inteligente
Ghost Studio — Adapte vídeos para qualquer plataforma
> Upload do vídeo
Arraste seu vídeo aqui ou clique para selecionar
Thumbnail Maker
Ghost Studio — Extraia frames do vídeo e crie thumbnails
> Upload do vídeo
Arraste seu vídeo aqui ou clique para selecionar
Phantom Layer
Ghost Studio — Sobreposição fantasma anti-revisão em vídeos
> Upload do vídeo real (o que o público vai ver)
Arraste o vídeo REAL aqui
> Upload da imagem segura (o que os bots vão detectar)
Arraste a imagem SEGURA aqui (PNG/JPG)
Meus Criativos
Ghost Studio — Histórico de criativos processados
> Histórico
Nenhum criativo processado ainda.
Use as ferramentas do Ghost Studio para processar vídeos.
Configurações
Configurações gerais da sua conta
Perfil
Filtros Globais
Vercel + GitHub (Auto-Deploy)
Configure para criar novos domínios automaticamente. Cada domínio cria um projeto novo na Vercel com deploy automático do seu cloaker.
Token: vercel.com/account/tokens — Repo: o mesmo onde está o código do cloaker
API
br_live_xxxxxxxxxxxxxxxxxxxx