Páginas da documentação
Desenvolvedores · Guia · v1.2.0
Opções avançadas de entrega
Remarketing, exclusões, raio, idiomas, posicionamentos, UTMs e estratégia de lance.
Remarketing e exclusões
Para anunciar de novo para quem já visitou o site ou interagiu com a Página, crie o público em POST /audiences (type website com o Pixel, ou meta_engagement) e use o platform_audience_id em targeting.audience_id. Para deixar alguém de fora (quem já comprou, por exemplo), use targeting.excluded_audience_ids. Os públicos que já existem na Meta entram com POST /audiences/sync.
- Um público novo leva algumas horas para encher, e a Meta só entrega para ele a partir de cerca de 100 pessoas.
- Visitantes do site ficam até 180 dias; engajamento, até 365.
- Excluir cidades: targeting.excluded_cities, com as mesmas cidades de GET /targeting/cities.
{
"name": "Remarketing | Visitantes 30 dias",
"goal": "traffic",
"budget": {
"amount_cents": 3000
},
"targeting": {
"cities": [
{
"key": "269969",
"name": "São Paulo, São Paulo",
"country_code": "BR",
"radius_km": 25
}
],
"audience_id": "23859876543210987",
"excluded_audience_ids": [
"23851234567890123"
],
"languages": [
"pt"
]
},
"link_url": "https://loja.exemplo.com.br/outubro",
"creatives": [
{
"media_id": "01jbx3m7k2q8f5v9w4n6c0r1ht",
"headline": "Ainda pensando?",
"body": "As peças que você viu estão com 10% off até domingo.",
"call_to_action": "SHOP_NOW"
}
]
}
Raio, idiomas, grupos de interesses e Advantage+
- Raio: cities[].radius_km em 17, 25, 40, 50, 80 km em volta da cidade.
- Idiomas: targeting.languages (pt, es, en); sem idioma, todos.
- targeting.advantage_audience true deixa a Meta ampliar o público quando achar gente com mais chance de resultado.
- Grupos de interesses: em targeting.interests basta um dos interesses (OU); cada grupo de targeting.narrow_interests (até 3) também precisa ser atendido, com um interesse dele (E). Não combina com Advantage+ público. O público encolhe rápido: confira a estimativa antes.
- Antes de criar, POST /targeting/reach-estimate diz quantas pessoas cabem no público. Com grupos, narrowed vem true, upper é o teto do menor grupo e warning avisa quando o público pode não bastar para a Meta entregar.
{
"name": "Lançamento | Lotes na praia",
"goal": "traffic",
"budget": {
"amount_cents": 8000
},
"targeting": {
"countries": [
"BR"
],
"age_min": 35,
"interests": [
{
"id": "6003012345678",
"name": "Investimento imobiliário"
}
],
"narrow_interests": [
[
{
"id": "6003023456789",
"name": "Condomínio fechado"
},
{
"id": "6003034567890",
"name": "Casa de praia"
}
]
]
},
"link_url": "https://imobiliaria.exemplo.com.br/lancamento",
"creatives": [
{
"media_id": "01jbx3m7k2q8f5v9w4n6c0r1ht",
"headline": "Lotes a 300 m da praia",
"body": "Condomínio fechado com marina. Veja as condições de lançamento.",
"call_to_action": "LEARN_MORE"
}
]
}
Posicionamentos
Sem placements, a Meta escolhe onde mostrar (automático, o recomendado). Para escolher, envie a lista:
| Valor | Onde aparece |
|---|---|
| facebook_feed | Feed do Facebook |
| facebook_stories | Stories do Facebook |
| facebook_reels | Reels do Facebook |
| facebook_video_feeds | Vídeos do Facebook |
| facebook_marketplace | Marketplace |
| instagram_feed | Feed do Instagram |
| instagram_stories | Stories do Instagram |
| instagram_reels | Reels do Instagram |
| instagram_explore | Explorar do Instagram |
| messenger_inbox | Caixa de entrada do Messenger |
| audience_network | Audience Network (apps e sites parceiros) |
UTMs, eventos do site e perfil do Instagram
Todo anúncio novo, de qualquer objetivo (inclusive cadastro, WhatsApp e post impulsionado), sai com os 4 UTMs padrão abaixo, sempre: não há como tirá-los. tracking.url_tags é a lista de extras, somados a eles em todos os anúncios, com as macros da Meta. Um extra com a chave de um dos 4 troca o valor dele, na mesma posição (ex.: utm_campaign=blackfriday); os demais vêm depois, na ordem enviada. Ausente ou [], a campanha sai só com os 4. Até a 1.1.0, cadastro e WhatsApp saíam sem UTMs.
[
{
"key": "utm_source",
"value": "facebook"
},
{
"key": "utm_medium",
"value": "paid"
},
{
"key": "utm_campaign",
"value": "{{campaign.name}}"
},
{
"key": "utm_content",
"value": "{{ad.name}}"
}
]
Nas respostas (o draft da campanha, o do padrão e o validate_only), tracking.url_tags mostra a lista efetiva: os 4, com o valor trocado quando houver, e depois os extras. Reenviar essa lista (num padrão, numa duplicação) dá o mesmo resultado, sem chave repetida: o limite de 10 extras conta só as chaves fora das 4. Numa campanha publicada antes da 1.1.0 sem UTMs, aparecem os 4, que uma cópia (duplicar ou salvar como padrão) usaria: os anúncios dela seguem como foram publicados. Depois de publicado, cada anúncio troca as UTMs em PATCH /ads/{id}.
{
"tracking": {
"url_tags": [
{
"key": "utm_campaign",
"value": "blackfriday"
},
{
"key": "utm_term",
"value": "promo"
}
]
}
}
{
"tracking": {
"url_tags": [
{
"key": "utm_source",
"value": "facebook"
},
{
"key": "utm_medium",
"value": "paid"
},
{
"key": "utm_campaign",
"value": "blackfriday"
},
{
"key": "utm_content",
"value": "{{ad.name}}"
},
{
"key": "utm_term",
"value": "promo"
}
]
}
}
Todo anúncio novo, em qualquer objetivo (inclusive o post impulsionado), sai com "Eventos do site" marcado, e o Pixel é obrigatório. Ele é escolhido nesta ordem: tracking.pixel_id, que vale em qualquer objetivo (nas conversões, é também o Pixel que elas otimizam); o Pixel padrão da conta (default_pixel_id em GET /ad-account, definido em Leads › Configurações); e, sem padrão, o único Pixel que a conta enxerga (GET /ad-account/pixels), que passa a ser o padrão dela. Sem Pixel para escolher, a criação é recusada com 422 em tracking.pixel_id, e nada é criado:
- A conta enxerga mais de um Pixel e não tem padrão: envie tracking.pixel_id ou defina o padrão no painel.
- A conta não tem Pixel: crie um no Gerenciador de Eventos da Meta.
- A consulta dos Pixels falhou: tente de novo em instantes (não quer dizer que a conta não tem Pixel).
Vale para POST /campaigns, POST /campaigns/preview, POST /templates/{id}/campaigns, POST /campaigns/{id}/duplicate e POST /boosts (que também aceita tracking.pixel_id), inclusive com ?validate_only=true. Um padrão de outra conta de anúncio não leva o Pixel dele: vale o da conta vinculada. Editar um padrão (PATCH /templates/{id}) não exige o Pixel, fora das conversões. Uma campanha com falha publicada antes da 1.2.0 ganha o Pixel ao ser reenviada (POST /campaigns/{id}/retry); sem Pixel para escolher, o reenvio é recusado com operation_failed. A resposta (o draft da campanha, o boost e o validate_only) mostra o Pixel escolhido em tracking.pixel_id.
instagram_account_id escolhe o perfil que assina o anúncio no Instagram (GET /ad-account/instagram-accounts); sem ele, vale o perfil ligado à Página.
Estratégia de lance
Sem bidding, o lance é automático (menor custo), o melhor ponto de partida. Com histórico, dá para segurar o custo:
| bidding.strategy | Como funciona |
|---|---|
| COST_CAP | Custo por resultado (meta de custo): A Meta tenta manter o custo médio de cada resultado perto do valor informado. |
| LOWEST_COST_WITH_BID_CAP | Lance máximo por leilão: A Meta nunca oferece mais que o valor informado em cada leilão. |
| LOWEST_COST_WITH_MIN_ROAS | ROAS mínimo: A Meta busca vendas que devolvam pelo menos o retorno informado (só em vendas com valor). |
{
"name": "Vendas | Custo por compra R$ 40",
"goal": "conversions",
"budget": {
"amount_cents": 20000
},
"tracking": {
"pixel_id": "123456789012345",
"conversion_event": "PURCHASE"
},
"bidding": {
"strategy": "COST_CAP",
"amount_cents": 4000
},
"placements": [
"instagram_feed",
"instagram_stories"
],
"targeting": {
"countries": [
"BR"
],
"age_min": 25,
"age_max": 54
},
"link_url": "https://loja.exemplo.com.br/mais-vendidos",
"creatives": [
{
"media_id": "01jbx3m7k2q8f5v9w4n6c0r1ht",
"headline": "Os mais vendidos",
"body": "Frete grátis acima de R$ 199.",
"call_to_action": "SHOP_NOW"
}
]
}