List subscribable events
Overview
Get the full catalog of events the caller's partner can subscribe to, plus the allowed batch_interval_hours choices. The catalog is partner-scoped: hipages-only events (flagging / rating-gate / moderation family) are included only for hipages partners.
Prerequisites
- A bearer token. Callable with Partner tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/partner/webhooks/events
Authentication
- Requires a bearer token in the
Authorization: Bearer <bearer-token>header. - Who can call it: Partner tokens.
requirePartnerCompanyIdenforcesbundle_id === 1.- The resolved
partner_company_idis passed to decide whether hipages events are included.
Rate limit
- No rate limit.
Request
- No path/query/body params.
Response
data.data[].value(string) — event name (e.g.review_ingested,review_pull_connected)data.data[].category(string) — e.g.ingest,response,connection,usage,billingdata.data[].description(string)data.data[].default_kind(string) —immediate|batch; the slot the event belongs todata.meta.batch_interval_hours_options(array) — [1, 2, 4, 6, 12]
200 — events catalog (full: ingest / hipages / response / connection / usage / billing) · 200
200{
"data": {
"data": [
{
"value": "review_ingested",
"category": "ingest",
"description": "A new review was ingested via partner submission or seed import.",
"default_kind": "batch"
},
{
"value": "review_pulled_from_platform",
"category": "ingest",
"description": "A new review was pulled from a connected platform (Google / Facebook / Caring).",
"default_kind": "batch"
},
{
"value": "review_campaign_collected",
"category": "ingest",
"description": "A review was collected through a solicitation campaign flow.",
"default_kind": "batch"
},
{
"value": "review_updated",
"category": "ingest",
"description": "An existing review’s content was overwritten via re-submission.",
"default_kind": "batch"
},
{
"value": "review_hard_deleted",
"category": "ingest",
"description": "A review was permanently removed (typically OAuth disconnect cleanup).",
"default_kind": "immediate"
},
{
"value": "platform_removal_detected",
"category": "ingest",
"description": "A backward scrape detected the review is no longer present on the source platform.",
"default_kind": "immediate"
},
{
"value": "profanity_detected",
"category": "ingest",
"description": "A profanity scan matched the review body (logged only on hit, content auto-redacted).",
"default_kind": "immediate"
},
{
"value": "tradie_flagged",
"category": "hipages",
"description": "A tradie flagged a review for moderation review.",
"default_kind": "immediate"
},
{
"value": "flag_denied",
"category": "hipages",
"description": "The service team rejected a tradie flag; the review stays visible.",
"default_kind": "immediate"
},
{
"value": "flag_approved",
"category": "hipages",
"description": "The service team approved a flag and excluded the review from ratings.",
"default_kind": "immediate"
},
{
"value": "flag_approved_removed",
"category": "hipages",
"description": "The service team approved a flag and removed the review entirely.",
"default_kind": "immediate"
},
{
"value": "suppressed",
"category": "hipages",
"description": "A partner-admin hid the review from the public profile and ratings.",
"default_kind": "immediate"
},
{
"value": "restored",
"category": "hipages",
"description": "A previously suppressed review was brought back into the public profile and ratings.",
"default_kind": "immediate"
},
{
"value": "excluded_from_rating",
"category": "hipages",
"description": "The review was excluded from rating calculations but remains publicly visible.",
"default_kind": "immediate"
},
{
"value": "included_in_rating",
"category": "hipages",
"description": "The review is once again counted in rating calculations.",
"default_kind": "immediate"
},
{
"value": "hidden_from_public",
"category": "hipages",
"description": "The review was hidden from the public profile but still counts toward ratings.",
"default_kind": "immediate"
},
{
"value": "shown_to_public",
"category": "hipages",
"description": "The review was made visible on the public profile again.",
"default_kind": "immediate"
},
{
"value": "released_to_public",
"category": "hipages",
"description": "The review was released early from the 7-day hold and is now publicly visible.",
"default_kind": "immediate"
},
{
"value": "qualified_toggled",
"category": "hipages",
"description": "The review’s qualifying category (A ↔ B) was reclassified.",
"default_kind": "immediate"
},
{
"value": "soft_deleted",
"category": "hipages",
"description": "A partner-admin soft-deleted the review; it can be restored later.",
"default_kind": "immediate"
},
{
"value": "profanity_approved",
"category": "hipages",
"description": "A partner-admin cleared a false-positive profanity flag; the original wording was restored and the review re-shown to the public feed.",
"default_kind": "batch"
},
{
"value": "profanity_confirmed",
"category": "hipages",
"description": "A partner-admin confirmed a profanity-flagged review; the redaction stays in place, the review is hidden from the public profile, and it returns to the All Reviews list.",
"default_kind": "batch"
},
{
"value": "response_drafted",
"category": "response",
"description": "A response draft was created on a review.",
"default_kind": "immediate"
},
{
"value": "response_updated",
"category": "response",
"description": "A response draft’s content was edited.",
"default_kind": "immediate"
},
{
"value": "response_deleted",
"category": "response",
"description": "A response was removed (soft or hard delete).",
"default_kind": "immediate"
},
{
"value": "ai_response_generated",
"category": "response",
"description": "An AI-suggested response was drafted for the review.",
"default_kind": "immediate"
},
{
"value": "response_submitted_to_platform",
"category": "response",
"description": "A response was dispatched to the source platform (Google / Facebook / Caring).",
"default_kind": "immediate"
},
{
"value": "response_post_succeeded",
"category": "response",
"description": "The source platform accepted and published the response.",
"default_kind": "immediate"
},
{
"value": "response_post_failed",
"category": "response",
"description": "The source platform rejected the response (reason in metadata).",
"default_kind": "immediate"
},
{
"value": "response_status_changed",
"category": "response",
"description": "A response moved between lifecycle statuses (draft → submitted → posted / failed).",
"default_kind": "immediate"
},
{
"value": "response_resubmitted",
"category": "response",
"description": "A previously failed response was re-fired to the source platform.",
"default_kind": "immediate"
},
{
"value": "homeowner_notified_of_response",
"category": "hipages",
"description": "A homeowner notification email was sent informing them of the response.",
"default_kind": "immediate"
},
{
"value": "review_pull_connected",
"category": "connection",
"description": "Review pulling (scraping) for a location's review site started or resumed.",
"default_kind": "immediate"
},
{
"value": "review_pull_disconnected",
"category": "connection",
"description": "Review pulling (scraping) for a location's review site is unavailable — connection lost, no URL configured, or paused (reason + error_code carry which).",
"default_kind": "immediate"
},
{
"value": "response_post_connected",
"category": "connection",
"description": "Response posting for a location's review site became active.",
"default_kind": "immediate"
},
{
"value": "response_post_disconnected",
"category": "connection",
"description": "Response posting for a location's review site is unavailable — disconnected, awaiting approval, or no URL configured.",
"default_kind": "immediate"
},
{
"value": "usage.threshold_warning",
"category": "usage",
"description": "A location crossed a usage warning threshold (75% / 80%) for a metered plan feature this period.",
"default_kind": "immediate"
},
{
"value": "usage.limit_reached",
"category": "usage",
"description": "A location reached 100% of its included units for a metered plan feature this period.",
"default_kind": "immediate"
},
{
"value": "plan.cancelled",
"category": "billing",
"description": "A location cancelled its subscription and will no longer be billed.",
"default_kind": "immediate"
},
{
"value": "brand_plan.cancelled",
"category": "billing",
"description": "A brand (or partner) cancelled its subscription across its locations.",
"default_kind": "immediate"
},
{
"value": "plan.changed",
"category": "billing",
"description": "A location or brand subscription plan was changed (upgrade, downgrade or proration).",
"default_kind": "immediate"
}
],
"meta": {
"batch_interval_hours_options": [
1,
2,
4,
6,
12
]
}
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/partner/webhooks/events" \
--header 'Authorization: Bearer {{bearerToken}}' \
--header 'Accept: application/json'Updated 11 days ago
Did this page help you?
