Fase 4: Execução20 min
#14Criar Campanhas via API
Criar automaticamente 4 campanhas e 13 ad sets via Marketing API, tudo em modo PAUSADO para revisão.
TUDO PAUSADO
Todas as campanhas e adsets são criados com status PAUSED. Isso é CRÍTICO — nunca crie campanhas ativas automaticamente. Revise TUDO antes de ativar.
Criar campanha
11_criar_campanhas.py
python
from facebook_business.adobjects.campaign import Campaign
def criar_campanha(account, nome, objetivo):
params = {
Campaign.Field.name: nome,
Campaign.Field.objective: "OUTCOME_SALES",
Campaign.Field.status: "PAUSED",
Campaign.Field.special_ad_categories: [],
"is_adset_budget_sharing_enabled": False, # Erro #7 sem isso!
}
campaign = account.create_campaign(params=params)
return campaign
# 4 Campanhas criadas:
campanhas = [
"WIA9-ELITE", # Públicos elite
"WIA9-GOOD", # Públicos bons
"WIA9-OK", # Públicos ok
"WIA9-COLD", # Interesses com conversão
]Criar adset
python
from facebook_business.adobjects.adset import AdSet
def criar_adset(campaign_id, nome, publico, budget_diario):
params = {
AdSet.Field.name: nome,
AdSet.Field.campaign_id: campaign_id,
AdSet.Field.status: "PAUSED",
AdSet.Field.daily_budget: budget_diario * 100, # Em centavos!
AdSet.Field.billing_event: "IMPRESSIONS",
AdSet.Field.optimization_goal: "OFFSITE_CONVERSIONS",
AdSet.Field.bid_strategy: "LOWEST_COST_WITHOUT_CAP", # Erro #6 sem isso!
AdSet.Field.targeting: publico["targeting"],
AdSet.Field.start_time: "2025-03-01T00:00:00-0300",
}
adset = account.create_ad_set(params=params)
return adset
# 13 adsets distribuídos nas 4 campanhas
# ELITE: 4 adsets (melhores públicos)
# GOOD: 4 adsets
# OK: 3 adsets
# COLD: 2 adsets (interesses puros)Erros comuns na criação
Erro #5: Campos duplicados no targeting. Use excluded_custom_audiences no root level. Erro #6: Adsets de interesse PRECISAM de bid_strategy. Erro #7: Campanhas PRECISAM de is_adset_budget_sharing_enabled: False.
Resultados esperados
Ao final: