EVENTcampaign.review_posted
Review posted (campaign-attributed)
Event name: campaign.review_posted
A new review landed at a location with at least one active campaign within the 30-day attribution window. Attribution is location-level. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL.
Every delivery is signed. Verify
X-Synup-Signature before processing — see Synup Webhooks.Payload
| Name | Type | Required | Description |
|---|---|---|---|
event | string | optional | Dotted event name. |
timestamp | string | optional | ISO-8601 UTC time the event was emitted. |
account_id | integer | optional | Synup account the event belongs to. |
location_id | string | optional | Numeric string for location-scoped events; null for brand-scoped events. |
data | object | optional | |
data.attribution | string | optional | Always "location_level". |
data.recency_window_days | integer | optional | Attribution window in days (30). |
data.review | object | optional | The posted review: interaction_id, source, author_name, rating (0-5), rating_scale, title, content, permalink, posted_at. |
data.campaigns | array of object | optional | Active campaigns attributed (max 25, newest first): review_campaign_id, name, launched_at. |
Example delivery
{
"event": "campaign.review_posted",
"timestamp": "2026-07-15T14:31:09Z",
"account_id": 11073,
"location_id": "279381",
"data": {
"attribution": "location_level",
"recency_window_days": 30,
"review": {
"interaction_id": "9c8b7a65-4321-4def-8abc-0123456789ab",
"source": "google",
"author_name": "Jordan M.",
"rating": 4.5,
"rating_scale": "0-5",
"title": "Great experience",
"content": "Booked online and everything went smoothly.",
"permalink": "https://maps.google.com/review/xyz123",
"posted_at": "2026-07-15T13:58:44Z"
},
"campaigns": [
{
"review_campaign_id": "8f3a1c72-1e4b-4d90-9a2e-6b1c0f7a4d21",
"name": "Summer Review Push",
"launched_at": "2026-07-01T09:00:00Z"
}
]
}
}