---
title: "Review posted (campaign-attributed)"
method: POST
path: "campaign.review_posted"
tags: ["Webhooks/Webhooks", "Webhooks"]
---

# Review posted (campaign-attributed)

`POST campaign.review_posted` (webhook)

**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.

## Headers

- `X-Synup-Signature` string, required

## Payload

- object
  - `event` string: Dotted event name.
  - `timestamp` string: ISO-8601 UTC time the event was emitted.
  - `account_id` integer: Synup account the event belongs to.
  - `location_id` string: Numeric string for location-scoped events; null for brand-scoped events.
  - `data` object
    - `attribution` string: Always "location_level".
    - `recency_window_days` integer: Attribution window in days (30).
    - `review` object: The posted review: interaction_id, source, author_name, rating (0-5), rating_scale, title, content, permalink, posted_at.
    - `campaigns` object[]: Active campaigns attributed (max 25, newest first): review_campaign_id, name, launched_at.

## Acknowledgement `200`

Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery.

- object

---

[API](https://skmtc.dev/synup/apis/synup-api.md) - [All operations](https://skmtc.dev/synup/apis/synup-api/llms.txt) - [OpenAPI document](https://skmtc.dev/synup/apis/synup-api/revisions/67de2d51c22e?raw)
