Ad Campaigns
Ad Campaign Updated
Sent when an ad campaign's status or delivery_status changes. previous_attributes carries the values they changed from; the payload carries no performance stats
Required permissions:
- webhook_receive:ad_campaigns
postWebhookad_campaign.updated
Headers
webhook-idstring required
A unique identifier for this webhook request
Example:msg_xxxxxxxxxxxxxxxxxxxxxxxx
webhook-signaturestring required
The signature of the webhook request with the webhook version prepended
Example:v1,BASE64ENCODEDSIGNATURE
webhook-timestampstring required
The timestamp in seconds since the Unix epoch that the webhook was sent at on the server
Example:1727606400
Payload
Example payload
{
"account_id": "biz_xxxxxxxxxxxxxx",
"api_version": "v1",
"api_version_date": "2026-07-20",
"data": {
"bid_type": "average_target",
"budget_amount": 25,
"budget_amount_local": 25,
"budget_currency": "usd",
"budget_optimization": "ad_campaign",
"budget_type": "daily",
"campaign_type": "standard",
"created_at": "2026-01-01T12:00:00.000Z",
"delivery_status": "draft",
"desired_cost_per_result": 4.5,
"ends_at": "2026-01-01T12:00:00.000Z",
"id": "adcamp_xxxxxxxxxxxxxx",
"issues": [
{
"category": "error",
"id": "adiss_xxxxxxxxxxxxxx",
"message": "Your ad didn't pass our content review. Update it to follow our ad guidelines and resubmit.",
"resource_id": "ad_xxxxxxxxxxxxxx",
"resource_type": "ad",
"title": "Ad issue"
}
],
"objective": "leads",
"special_ad_categories": [
"employment"
],
"starts_at": "2026-01-01T12:00:00.000Z",
"status": "draft",
"title": "Now hiring mobile detailers — Austin",
"updated_at": "2026-01-01T12:00:00.000Z"
},
"id": "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
"previous_attributes": {
"status": "active"
},
"timestamp": "2025-01-01T00:00:00.000Z",
"type": "ad_campaign.updated"
}Response
Return a 200 status to indicate that the data was received successfully
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.