Ad Groups

Ad Group Updated

Sent when an ad group's status, delivery_status, or budget changes. previous_attributes carries the values they changed from; the payload carries no performance stats

Required permissions:

  • webhook_receive:ad_groups
postWebhookad_group.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

account_idstring nullable

The account ID that this webhook event is associated with

api_version'v1' required

The API version for this webhook

api_version_datestring nullable required

The dated API version (Api-Version-Date) the payload is serialized to

idstring required

A unique ID for every single webhook request

previous_attributesobject

For some .updated events, the old values of the payload fields that changed, keyed by field name. Omitted when no capture is available for the event

timestampstring date-time required

The timestamp in ISO 8601 format that the webhook was sent at on the server

type'ad_group.updated' required

The webhook event type

Example payload

{
  "account_id": "biz_xxxxxxxxxxxxxx",
  "api_version": "v1",
  "api_version_date": "2026-07-20",
  "data": {
    "ad_campaign": {
      "id": "adcamp_xxxxxxxxxxxxxx"
    },
    "audiences": {
      "exclude": [
        "adaud_xxxxxxxxxxxxxx"
      ],
      "include": [
        "adaud_xxxxxxxxxxxxxx"
      ]
    },
    "bid_type": "average_target",
    "budget_amount": 60,
    "budget_amount_local": 60,
    "budget_currency": "usd",
    "budget_type": "daily",
    "conversion_event": "purchase",
    "conversion_location": "website",
    "created_at": "2026-01-01T12:00:00.000Z",
    "delivery_schedule": {
      "friday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ],
      "monday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ],
      "saturday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ],
      "sunday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ],
      "thursday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ],
      "tuesday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ],
      "wednesday": [
        {
          "end": "12:00",
          "start": "10:00"
        }
      ]
    },
    "delivery_status": "no_ads",
    "demographics": {
      "gender": "all",
      "maximum_age": 64,
      "minimum_age": 21
    },
    "desired_cost_per_result": 40,
    "detailed_targeting": {
      "behaviors": [
        {
          "behavior_type": "video",
          "id": "6007101291578",
          "name": "Recent vehicle purchase (30 days)"
        }
      ],
      "demographics": [
        {
          "id": "6002714398172",
          "name": "Recently moved",
          "type": "life_events"
        }
      ],
      "interests": [
        {
          "id": "6003193685204",
          "name": "Car wash"
        }
      ]
    },
    "devices": {
      "operating_systems": [
        {
          "minimum_version": "18.0",
          "os": "ios"
        }
      ],
      "platforms": [
        "mobile"
      ]
    },
    "ends_at": "2026-01-01T12:00:00.000Z",
    "frequency_cap": {
      "maximum_impressions": 3,
      "per_days": 7
    },
    "id": "adgrp_xxxxxxxxxxxxxx",
    "issues": [
      {
        "category": "error",
        "id": "adiss_xxxxxxxxxxxxxx",
        "message": "Your ad was rejected for unacceptable business practices. Edit the ad's content and resubmit.",
        "resource_id": "ad_xxxxxxxxxxxxxx",
        "resource_type": "ad",
        "title": "Ad issue"
      }
    ],
    "keywords": [
      {
        "match_type": "broad"
      }
    ],
    "languages": [
      "en"
    ],
    "message_apps": [
      "instagram"
    ],
    "minimum_daily_spend": 25,
    "optimization_goal": "conversions",
    "placements": [
      {
        "platform": "facebook",
        "positions": [
          "feed"
        ]
      }
    ],
    "platform": "meta",
    "regions": {
      "exclude": {
        "cities": [
          {
            "key": "2418046",
            "name": "Austin"
          }
        ],
        "countries": [
          "US"
        ],
        "country_groups": [
          "north_america"
        ],
        "custom_locations": [
          {
            "distance_unit": "mile",
            "latitude": 30.2672,
            "longitude": -97.7431,
            "name": "4180 Burnet Rd, Austin TX 78756",
            "radius": 25
          }
        ],
        "regions": [
          "US-TX"
        ],
        "zips": [
          "US:78756"
        ]
      },
      "include": {
        "cities": [
          {
            "key": "2418046",
            "name": "Austin"
          }
        ],
        "countries": [
          "US"
        ],
        "country_groups": [
          "north_america"
        ],
        "custom_locations": [
          {
            "distance_unit": "mile",
            "latitude": 30.2672,
            "longitude": -97.7431,
            "name": "4180 Burnet Rd, Austin TX 78756",
            "radius": 25
          }
        ],
        "regions": [
          "US-TX"
        ],
        "zips": [
          "US:78756"
        ]
      }
    },
    "starts_at": "2026-01-01T12:00:00.000Z",
    "status": "active",
    "title": "Austin ceramic coating — repeat customers",
    "updated_at": "2026-01-01T12:00:00.000Z"
  },
  "id": "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
  "previous_attributes": {
    "status": "active"
  },
  "timestamp": "2025-01-01T00:00:00.000Z",
  "type": "ad_group.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.