Ads
Ad Updated
Sent when an ad's status or delivery_status changes, including the in_review and rejected verdicts from ad review. previous_attributes carries the values they changed from; the payload carries no performance stats
Required permissions:
- webhook_receive:ads
postWebhookad.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": {
"ad_campaign": {
"id": "adcamp_xxxxxxxxxxxxxx"
},
"ad_group": {
"id": "adcamp_xxxxxxxxxxxxxx"
},
"call_to_action": "learn_more",
"created_at": "2026-01-01T12:00:00.000Z",
"creatives": [
{
"crop": {
"height": 1000,
"width": 1000,
"x": 40
},
"format": "vertical",
"id": "file_xxxxxxxxxxxxxx",
"media_type": "image",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
],
"delivery_status": "paused",
"descriptions": [
{
"text": "Austin's mobile detailers"
}
],
"headlines": [
{
"text": "Austin's mobile detailers"
}
],
"id": "ad_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"
}
],
"primary_texts": [
{
"text": "Austin's mobile detailers"
}
],
"status": "paused",
"title": "Ceramic coating — spring hook v2",
"updated_at": "2026-01-01T12:00:00.000Z",
"url": "https://shinetime.example/ceramic-coating",
"url_parameters": {}
},
"id": "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
"previous_attributes": {
"status": "in_review"
},
"timestamp": "2025-01-01T00:00:00.000Z",
"type": "ad.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.