Execução
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: