# Meta Ads (Facebook)

Conecte o Paywallo ao Meta. Ele avisa o Meta de cada install e compra, e o Meta usa isso para achar mais gente parecida com quem instala e compra.

## Antes de começar

-   Você é Admin no Business Manager (o painel da sua empresa no Meta). Com acesso parcial, não dá para escolher a conta de anúncios.
-   O app já existe no Paywallo, com o Bundle ID preenchido.
-   O SDK do Paywallo está no app e já envia eventos.

## Criar o pixel (se ainda não tem)

O pixel (também chamado de dataset) é a caixa onde o Meta guarda os eventos do seu app. Já tem um? Pule para o Passo 1.

1. Abra business.facebook.com e clique em Configurações (as do negócio).

2. Abra Fontes de dados e depois Conjuntos de dados e pixels.

3. Clique em Adicionar.

![Página Conjuntos de dados e pixels do Business Manager com o botão Adicionar](/docs/meta-ads/bm-conjuntos-adicionar.png)

4. Em Insira um nome, digite o nome do seu app. Clique em Criar.

![Formulário de criar conjunto de dados com o campo Insira um nome e o botão Criar](/docs/meta-ads/bm-criar-conjunto.png)

5. Na janela seguinte, marque a conta de anúncios do app. Clique em Avançar.

Não instale código em nenhum site. O Paywallo manda os eventos pelo servidor.

## Passo 1: Conectar com o Meta

Ao conectar, a Conversions API (CAPI) fica configurada sozinha. Não precisa gerar token no Events Manager.

1. No Paywallo, clique em Configurações no menu lateral.

2. Clique na aba Integrações e depois no card Meta Ads.

3. Clique em Conectar com Meta.

4. Na tela do Meta, escolha o Portfólio empresarial, o Pixel e a Conta de anúncios. Clique em Avançar.

![Tela do Meta com portfólio empresarial, pixel e conta de anúncios escolhidos](/docs/meta-ads/oauth-ativos-preenchidos.png)

5. O Meta lista o que o Paywallo vai poder fazer, como gerenciar anúncios e o negócio. Clique em Confirmar.

![Tela do Meta que lista as permissões do Paywallo, com o botão Confirmar](/docs/meta-ads/oauth-revisar.png)

6. Quando aparecer a mensagem de sucesso, clique em Concluir. Você volta para o Paywallo.

7. Confira o pixel e as contas. O pixel marcado em verde é o que recebe os eventos. Para trocar, clique em Ver outros. Nas contas, clique para incluir ou tirar.

![Paywallo com o pixel e a conta de anúncios marcados em verde e os links Ver outros](/docs/meta-ads/paywallo-pixel-conta.png)

8. Clique em Confirmar e sincronizar. Aparece Seleção salva.

Os eventos levam de 30 a 90 minutos para aparecer no Meta. É normal.

## Passo 2: Confirmar os eventos e liberar os domínios

O `paywallo_install` e o `paywallo_purchase` são eventos **personalizados**. O Meta só deixa usar um evento assim na campanha depois que você confirma. Os outros (Purchase, StartTrial, ViewContent, CompleteRegistration) o Meta já aceita. Você não precisa esperar uma compra real: o teste do Paywallo basta.

Seu usuário do Facebook precisa ter controle total do dataset. Sem isso, o botão `Analisar` não aparece. Você confirma uma vez por dataset: se trocar de pixel, repita. O Meta dá 30 dias a partir do primeiro evento, inclusive o de teste.

A. Pegar o código de teste no Meta

1. Abra business.facebook.com/events_manager2 e clique em Conjuntos de dados no menu.

2. Clique no dataset do app.

3. Abra a aba Eventos de teste.

4. Em Selecione um canal de marketing, escolha Site.

5. Abra o bloco Confirme se os eventos do seu servidor estão configurados corretamentee copie o código de teste.

![Bloco de eventos do servidor aberto, com o código de teste a copiar](/docs/meta-ads/test-events-codigo.png)

6. Deixe essa página aberta.

B. Disparar os dois eventos de teste no Paywallo

1. No Paywallo, abra Configurações, depois Integrações, depois Meta Ads. Role até Testar envio de evento.

2. Na lista de eventos, escolha Instalação · paywallo_install.

3. Cole o código de teste.

4. Clique em Disparar evento de teste. Aparece A Meta recebeu 1 evento.

![Paywallo com paywallo\_install escolhido, código de teste colado e o botão Disparar evento de teste](/docs/meta-ads/paywallo-teste-preenchido.png)

5. Faça o mesmo com Compra · paywallo_purchase: escolha o evento, cole o mesmo código e clique em Disparar evento de teste.

C. Ver os dois eventos chegarem no Meta

1. Volte para a aba Eventos de teste que você deixou aberta.

2. Em alguns segundos, os dois eventos aparecem com o status Processado.

![Aba Eventos de teste com os eventos listados como Processado](/docs/meta-ads/test-events-recebido.png)

D. Abrir a tela de confirmar eventos

1. No mesmo dataset, abra a aba Configurações.

2. Em Gerencie o bloqueio de eventos, clique em Analisar. O bloco de cima, Gerencie o bloqueio de parâmetros, também tem um botão Analisar. Esse não.

![Aba Configurações com o bloco Gerencie o bloqueio de eventos e o botão Analisar certo](/docs/meta-ads/config-bloqueio-eventos.png)

3. Na janela Confirme para continuar, clique em Eu confirmo.

E. Marcar os eventos

1. Na janela Status do evento, abra a aba Ação necessária.

2. Marque os dois eventos e clique em Avançar.

![Lista da aba Ação necessária com o evento marcado e o botão Avançar](/docs/meta-ads/status-selecionado.png)

F. Confirmar

1. Em O que você pode fazer, escolha Confirme o evento personalizado. Nunca escolha Bloquear o evento personalizado: evento bloqueado não serve para campanha.

2. Clique em Confirmar.

![Opção Confirme o evento personalizado escolhida e o botão Confirmar](/docs/meta-ads/confirmar-selecionado.png)

3. Quando aparecer Sucesso, clique em Concluir.

G. Conferir

1. Na janela Status do evento, abra a aba Confirmado.

2. Os dois eventos aparecem com Confirmado por você. Se faltar um, volte à aba Ação necessária e repita a parte E e a F.

![Aba Confirmado com o evento marcado como Confirmado por você](/docs/meta-ads/confirmado.png)

Na lista do dataset, o evento fica **Inativo** até chegar um evento real. É normal. Não achou o evento para confirmar? Veja a Solução de problemas.

H. Liberar os dois domínios

O Paywallo usa `paywallo.link` (eventos do servidor) e `paywallolink.com` (link do anúncio). O Meta bloqueia domínio que não está na lista de permissão. Libere os dois.

1. No dataset, abra a aba Configurações. Na seção Permissões de tráfego - Sites, clique em Criar lista de permissão. Se o dataset já tiver uma lista, o botão é Editar.

![Seção Permissões de tráfego - Sites com o botão Criar lista de permissão](/docs/meta-ads/dominio-criar-lista.png)

2. Em Insira um domínio, digite paywallo.link e clique em Avançar.

![Janela com o campo Insira um domínio preenchido com paywallo.link](/docs/meta-ads/dominio-digitar.png)

3. Clique em Confirmar.

![Janela de confirmação do domínio paywallo.link com o botão Confirmar](/docs/meta-ads/dominio-confirmar.png)

4. Repita os passos 2 e 3 com paywallolink.com. Depois clique em Fechar.

5. Confira a lista: devem aparecer paywallo.link e subdomínios e paywallolink.com e subdomínios. Se não aparecerem, recarregue a página.

![Lista de permissão com paywallo.link e paywallolink.com, cada um com subdomínios](/docs/meta-ads/dominio-lista-final.png)

Escreva só o domínio, sem https:// e sem caminho.

## Passo 3: Criar a campanha

1. No Gerenciador de Anúncios, clique em Criar.

![Gerenciador de Anúncios com o botão Criar](/docs/meta-ads/ads-criar.png)

2. Escolha Configuração de campanha manual. Como objetivo, escolha Vendas e clique em Continuar.

![Escolha do objetivo Vendas na criação manual de campanha, com o botão Continuar](/docs/meta-ads/ads-objetivo-vendas.png)

3. No conjunto de anúncios, vá ao bloco Conversão. Em Local da conversão, escolha Site. O Paywallo envia os eventos como site. Com "App", o Meta devolve erro de parâmetro inválido.

4. Em Conjunto de dados, escolha o pixel conectado no Paywallo. Em Evento de conversão, escolha paywallo_install para installs ou paywallo_purchase para compras.

![Bloco Conversão com local Site, conjunto de dados e evento de conversão](/docs/meta-ads/ads-conversao.png)

O `paywallo_install` e o `paywallo_purchase` só aparecem na lista **Eventos ativos** depois de confirmados no Passo 2. Se não aparecerem, volte lá.

![Lista Eventos ativos com os eventos personalizados do Paywallo](/docs/meta-ads/ads-eventos-ativos.png)

5. Em Posicionamentos, clique em Mostrar mais configurações. Em Dispositivos e sistemas operacionais, no primeiro campo deixe só Celular. No segundo, escolha Somente dispositivos iOS ou Somente dispositivos Android, conforme o app.

![Dispositivos e sistemas operacionais com Celular e Somente dispositivos iOS escolhidos](/docs/meta-ads/ads-dispositivos.png)

6. Em Plataformas, desmarque Audience Network, que traz tráfego ruim. Logo abaixo, desmarque também Permitir gasto limitado em posicionamentos excluídos: o Meta liga sozinho e volta a gastar ali.

![Plataformas sem Audience Network e a opção de gasto limitado em posicionamentos excluídos desmarcada](/docs/meta-ads/ads-plataformas.png)

7. No anúncio, vá ao bloco Destino. Em Destino principal, escolha Site. Em URL do site, cole o tracking link do Paywallo, criado no Growth Hub (como criar). Não use o link da App Store: o tracking link guarda o fbclid e liga o clique ao install.

![Bloco Destino com destino principal Site e o campo URL do site preenchido](/docs/meta-ads/ads-url-site.png)

O tracking link usa `paywallolink.com`. Esse domínio precisa estar na lista de permissão do Passo 2.

## Checklist antes de lançar

✓

O SDK está no app e o install aparece no painel do Paywallo.

✓

O Meta está conectado, com o pixel e a conta certos, e você clicou em `Confirmar e sincronizar`.

✓

Os dois eventos aparecem na aba `Confirmado` como **Confirmado por você**.

✓

`paywallo.link` e `paywallolink.com` estão na lista de permissão.

✓

A campanha usa o Local da conversão `Site` e o tracking link na URL do site.

## Entender os números

O Paywallo envia estes eventos sozinho. Renovações de assinatura não vão para o Meta, para não inflar as conversões.

-   `paywallo_install`: um install ligado a um clique de campanha (personalizado).
-   `paywallo_purchase`: toda compra paga, junto com o Purchase (personalizado).
-   `Purchase`: compra, com valor e moeda.
-   `StartTrial`: início de trial.
-   `ViewContent`: paywall aberto.
-   `CompleteRegistration`: onboarding concluído.

No Growth Hub, a coluna Compras soma duas origens. Para separar, abra o menu Colunas e ligue **Separar clique e visualização**.

-   **Compras por clique**: a pessoa clicou no anúncio, instalou e comprou em até 7 dias.
-   **Compras por visualização**: a pessoa viu o anúncio, não clicou e comprou em até 1 dia. Sem clique, o Paywallo não liga a compra ao anúncio, então o número e o valor vêm do Meta, em dólar.

Receita, lucro, ROI, ROAS e custo por compra somam as duas. O total pode ficar um pouco diferente do Gerenciador de Anúncios, e os 2 dias mais recentes ainda mudam. A coluna Cliques conta toda abertura do link. Ela fica perto de "cliques (todos)" no Gerenciador, maior que "cliques no link".

Para conferir no Meta:

1.  No Gerenciador de Anúncios, clique em Colunas.
2.  Escolha Comparar definições de atribuição.
3.  Marque 7 dias após o clique e 1 dia após a visualização. Clique em Aplicar.

## Solução de problemas

| Erro | Como resolver |
| --- | --- |
| Não conecta | Confirme que você é **Admin** no Business Manager. Acesso parcial (analista, editor de anúncios) não deixa a conexão terminar. |
| Eventos não aparecem no Meta | Espere até 2 horas. Se nada aparecer, abra **Configurações, Integrações, Meta Ads** e confira se o pixel é o do dataset certo. Confira também se `paywallo.link` e `paywallolink.com` estão na lista de permissão. |
| Não acho onde confirmar o paywallo_install ou o paywallo_purchase | Liberar o domínio não confirma o evento, são ações separadas. Dispare os dois eventos de teste (parte B do Passo 2) e espere o status **Processado** (parte C). Depois siga a parte D. Outras causas: falta controle total do dataset, ou os eventos já estão em **Confirmado**. |
| Os eventos pararam de chegar, sem erro no painel | A conexão perdeu a autorização. Isso acontece quando quem conectou saiu do Business Manager ou tirou o acesso do app, e o Meta não avisa o Paywallo. Em **Configurações, Integrações, Meta Ads**, clique em `Liberar mais ativos na Meta` e autorize de novo. Não use `Desconectar Meta` para isso. |
| Installs chegam, mas as vendas aparecem como Direto e a campanha mostra 0 | A compra aconteceu antes de o app passar o id do usuário ao Paywallo. Com RevenueCat, chame `Paywallo.identify({ userId: await Purchases.getAppUserID() })` antes de mostrar o paywall. Veja a página do RevenueCat. Vendas antigas não são religadas. |
| "value field is missing" ao otimizar por valor com trials | É esperado. O `StartTrial` não tem valor, porque trial é grátis. O Meta exige `value` para otimizar por valor. Use `paywallo_purchase` como evento de conversão. |
