openapi: 3.1.0 info: title: Synup Webhooks version: 1.0.0 description: 'Synup account webhook events. A single account-level HTTPS Webhooks URL receives every event; there is no per-event subscription. Every delivery is signed with X-Synup-Signature: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)), and deliveries only start after the endpoint.verification challenge-response handshake passes. ASSEMBLED BY API EVANGELIST from the per-event OpenAPI 3.1 documents Synup publishes at developer.synup.com; the webhook payload schemas are verbatim provider content. Guide: https://developer.synup.com/synup-webhooks-doc-2259000' contact: name: Synup Webhooks Guide url: https://developer.synup.com/synup-webhooks-doc-2259000 paths: {} webhooks: social_connection.ad_account_status_changed: post: summary: Ad account status changed deprecated: false description: ' **Event name:** `social_connection.ad_account_status_changed` A connected ad account''s status changed. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: ad_account_id: type: string description: Ad account UUID. previous_status: type: string description: Prior status. current_status: type: string description: New status. platform: type: string description: Ad platform. error_reason: type: string description: Error detail when the new status is an error state. x-apidog-orders: - ad_account_id - previous_status - current_status - platform - error_reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_connection.ad_account_status_changed timestamp: '2026-07-15T10:30:00Z' account_id: 11073 location_id: null data: ad_account_id: ad-77 previous_status: active current_status: disabled platform: facebook error_reason: Payment method failed responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143155-run idea_image.generation_job_completed: post: summary: AI idea image generated deprecated: false description: ' **Event name:** `idea_image.generation_job_completed` An AI image for an idea finished generating. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: idea_id: type: string description: Idea the image belongs to. image_url: type: string description: The generated image URL (completed only). flux_job_id: type: string description: Image-job id (null for the synchronous batch path). social_profile_id: type: string description: Brand id (scope:"social" only). x-apidog-orders: - idea_id - image_url - flux_job_id - social_profile_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea_image.generation_job_completed timestamp: '2026-07-15T07:10:00Z' account_id: 19598 location_id: null scope: social data: idea_id: idea-90211 image_url: https://cdn.example.com/i/90211.jpg flux_job_id: flux-3321 social_profile_id: c81d4e2e-.. responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40515006-run idea_image.generation_job_failed: post: summary: AI idea image generation failed deprecated: false description: ' **Event name:** `idea_image.generation_job_failed` An AI image for an idea failed generating. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: idea_id: type: string description: Idea the image belongs to. error: type: string description: Customer-safe reason, bounded to <=200 chars (failed only). flux_job_id: type: string description: Image-job id (null for the synchronous batch path). social_profile_id: type: string description: Brand id (scope:"social" only). x-apidog-orders: - idea_id - error - flux_job_id - social_profile_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea_image.generation_job_failed timestamp: '2026-07-15T07:12:00Z' account_id: 19598 location_id: null scope: social data: idea_id: idea-90211 error: Image generation failed flux_job_id: flux-3321 social_profile_id: c81d4e2e-.. responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40515007-run idea.scheduled_as_post: post: summary: AI idea scheduled as post deprecated: false description: ' **Event name:** `idea.scheduled_as_post` An idea was linked to a published social post (social only). Scope: social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: idea_id: type: string description: Idea id. social_profile_id: type: string description: Brand/social-profile id. social_post_id: type: string description: The social post the idea was linked to. series_id: type: string description: Content series id, if any. x-apidog-orders: - idea_id - social_profile_id - social_post_id - series_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea.scheduled_as_post timestamp: '2026-07-15T07:30:00Z' account_id: 19598 location_id: null scope: social data: idea_id: idea-90211 social_profile_id: c81d4e2e-.. social_post_id: 7f3a1c9e-.. series_id: series-11 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143157-run idea_pipeline.scrape_completed: post: summary: AI idea scrape completed deprecated: false description: ' **Event name:** `idea_pipeline.scrape_completed` A website-analysis scrape job for idea generation completed. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: scrape_job_id: type: string description: Scrape job id. pipeline_status_id: type: string description: Associated pipeline-status id. site_url: type: string description: The scraped URL (completed only). social_profile_id: type: string description: Brand id (scope:"social" only). x-apidog-orders: - scrape_job_id - pipeline_status_id - site_url - social_profile_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea_pipeline.scrape_completed timestamp: '2026-07-15T06:45:00Z' account_id: 19598 location_id: '279381' scope: local data: scrape_job_id: scrape-441 pipeline_status_id: ps-77 site_url: https://acmecoffee.com responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143159-run idea_pipeline.scrape_failed: post: summary: AI idea scrape failed deprecated: false description: ' **Event name:** `idea_pipeline.scrape_failed` A website-analysis scrape job for idea generation failed terminally. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: scrape_job_id: type: string description: Scrape job id. pipeline_status_id: type: string description: Associated pipeline-status id. error_message: type: string description: Customer-safe reason, bounded to <=200 chars (failed only). social_profile_id: type: string description: Brand id (scope:"social" only). x-apidog-orders: - scrape_job_id - pipeline_status_id - error_message - social_profile_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea_pipeline.scrape_failed timestamp: '2026-07-15T06:50:00Z' account_id: 19598 location_id: '279381' scope: local data: scrape_job_id: scrape-441 pipeline_status_id: ps-77 error_message: Website could not be reached responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40515005-run idea_series.all_posts_generated: post: summary: AI idea series completed deprecated: false description: ' **Event name:** `idea_series.all_posts_generated` All slots in a content series finished generating. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: series_id: type: string description: Content series id. generated_count: type: integer description: Slots that generated successfully. social_profile_id: type: string description: Brand id (scope:"social" only). x-apidog-orders: - series_id - generated_count - social_profile_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea_series.all_posts_generated timestamp: '2026-07-15T07:45:00Z' account_id: 19598 location_id: '279381' scope: local data: series_id: series-11 generated_count: 8 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143158-run idea.generated: post: summary: AI post idea generated deprecated: false description: ' **Event name:** `idea.generated` A new AI post idea was generated. Scope: local or social (see the top-level scope field). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. scope: type: string description: 'AI post-idea events only: "local" or "social".' data: type: object properties: idea_id: type: string description: Idea id. source: type: string description: How the idea was generated. idea_summary: type: object description: 'Summary: title, content_excerpt, image_url.' x-apidog-orders: [] generation_batch_id: type: string description: Batch this idea belongs to. social_profile_id: type: string description: Brand/social-profile id (scope:"social" only). x-apidog-orders: - idea_id - source - idea_summary - generation_batch_id - social_profile_id x-apidog-orders: - event - timestamp - account_id - location_id - scope - data example: event: idea.generated timestamp: '2026-07-15T07:20:00Z' account_id: 19598 location_id: '279381' scope: local data: idea_id: idea-90211 source: scheduled idea_summary: title: Weekend special content_excerpt: Try our new seasonal latte... image_url: https://cdn.example.com/i/90211.jpg generation_batch_id: batch-9 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143156-run social_post.boost_active: post: summary: Boost active deprecated: false description: ' **Event name:** `social_post.boost_active` A boost went live and is actively spending. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: ad_run_id: type: string description: Ad-run UUID. is_boost: type: boolean description: Always true for boost events. boost_state: type: string description: Boost state ("active"). post_id: type: string description: Boosted social post UUID. social_profile_id: type: string description: Brand UUID. platform: type: string description: Ad platform (e.g. facebook). x-apidog-orders: - ad_run_id - is_boost - boost_state - post_id - social_profile_id - platform x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.boost_active timestamp: '2026-07-15T13:00:00Z' account_id: 11073 location_id: null data: ad_run_id: ar_101 is_boost: true boost_state: active post_id: 7a1c... social_profile_id: b2d4... platform: facebook responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143149-run social_post.boost_created: post: summary: Boost created deprecated: false description: ' **Event name:** `social_post.boost_created` A boost (paid promotion) was created for a social post. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: ad_run_id: type: string description: Ad-run UUID. is_boost: type: boolean description: Always true for boost events. boost_state: type: string description: Boost state ("created"). post_id: type: string description: Boosted social post UUID. social_profile_id: type: string description: Brand UUID. platform: type: string description: Ad platform (e.g. facebook). x-apidog-orders: - ad_run_id - is_boost - boost_state - post_id - social_profile_id - platform x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.boost_created timestamp: '2026-07-15T13:00:00Z' account_id: 11073 location_id: null data: ad_run_id: ar_101 is_boost: true boost_state: created post_id: 7a1c... social_profile_id: b2d4... platform: facebook responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143148-run social_post.boost_rejected: post: summary: Boost rejected deprecated: false description: ' **Event name:** `social_post.boost_rejected` A boost was rejected by the ad platform. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: ad_run_id: type: string description: Ad-run UUID. is_boost: type: boolean description: Always true. boost_state: type: string description: Boost state ("rejected"). post_id: type: string description: Social post UUID. social_profile_id: type: string description: Brand UUID. platform: type: string description: Ad platform. rejection_reason: type: string description: Why the boost was rejected. x-apidog-orders: - ad_run_id - is_boost - boost_state - post_id - social_profile_id - platform - rejection_reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.boost_rejected timestamp: '2026-07-15T13:05:00Z' account_id: 11073 location_id: null data: ad_run_id: ar_101 is_boost: true boost_state: rejected post_id: 7a1c... social_profile_id: b2d4... platform: facebook rejection_reason: Ad policy violation responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143150-run social_post.boost_stopped: post: summary: Boost stopped deprecated: false description: ' **Event name:** `social_post.boost_stopped` A boost was stopped / completed. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: ad_run_id: type: string description: Ad-run UUID. is_boost: type: boolean description: Always true for boost events. boost_state: type: string description: Boost state ("stopped"). post_id: type: string description: Boosted social post UUID. social_profile_id: type: string description: Brand UUID. platform: type: string description: Ad platform (e.g. facebook). x-apidog-orders: - ad_run_id - is_boost - boost_state - post_id - social_profile_id - platform x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.boost_stopped timestamp: '2026-07-15T13:00:00Z' account_id: 11073 location_id: null data: ad_run_id: ar_101 is_boost: true boost_state: stopped post_id: 7a1c... social_profile_id: b2d4... platform: facebook responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143151-run campaign.feedback_submitted: post: summary: Campaign feedback submitted deprecated: false description: ' **Event name:** `campaign.feedback_submitted` A customer submitted a rating/feedback on the campaign''s review-funnel page. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: campaign_id: type: string description: Campaign UUID. customer_id: type: string description: Customer UUID. rating: type: integer description: Star rating submitted (typically 1-5). feedback: type: string description: Free-text feedback (omitted if none). response_source: type: string description: Origin of the response (defaults to "review_funnel"). x-apidog-orders: - campaign_id - customer_id - rating - feedback - response_source x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: campaign.feedback_submitted timestamp: '2026-07-15T09:45:00Z' account_id: 11073 location_id: '279381' data: campaign_id: 8f3a1c72-.. customer_id: a9.. rating: 5 feedback: Loved the service! response_source: review_funnel responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143140-run campaign.send_rejected: post: summary: Campaign message send rejected deprecated: false description: ' **Event name:** `campaign.send_rejected` A message could not be sent (insufficient credits, invalid contact, or provider rejection). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: campaign_id: type: string description: Campaign UUID. customer_id: type: string description: Intended recipient UUID. message_id: type: string description: Rejected message UUID. channel: type: string description: '"sms" or "email".' message_type: type: string description: Message subtype (e.g. "SmsMessage", "OpeningEmailMessage"). reason: type: string description: Rejection reason (omitted if none). x-apidog-orders: - campaign_id - customer_id - message_id - channel - message_type - reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: campaign.send_rejected timestamp: '2026-07-15T09:02:10Z' account_id: 11073 location_id: '279381' data: campaign_id: 8f3a1c72-.. customer_id: a9.. message_id: e4.. channel: sms message_type: SmsMessage reason: Insufficient SMS credits responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143141-run campaign.status_change: post: summary: Campaign message status changed deprecated: false description: ' **Event name:** `campaign.status_change` A recipient''s message engagement changed (delivered / opened / clicked / bounced / dropped / unsubscribed). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: campaign_id: type: string description: Campaign UUID. customer_id: type: string description: Recipient (LocationCustomer) UUID. message_id: type: string description: Message UUID. status: type: string description: delivered / opened / clicked / bounced / dropped / unsubscribed. channel: type: string description: '"email" or "sms" (omitted if unmapped).' occurred_at: type: string description: When it occurred (not present on unsubscribed). url: type: string description: Clicked URL (present only on click events). x-apidog-orders: - campaign_id - customer_id - message_id - status - channel - occurred_at - url x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: campaign.status_change timestamp: '2026-07-15T09:20:11Z' account_id: 11073 location_id: '279381' data: campaign_id: 8f3a1c72-.. customer_id: a9.. message_id: d3.. status: clicked channel: email occurred_at: '2026-07-15T09:20:05Z' url: https://funnel.example.com/r/abc responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143139-run campaign.recipients_added: post: summary: Campaign recipients added deprecated: false description: ' **Event name:** `campaign.recipients_added` A batch of customers was enrolled into a campaign. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: campaign_id: type: string description: Campaign UUID. recipient_count: type: integer description: Number of recipients enrolled in this batch. review_campaign_customer_ids: type: array items: type: string description: Enrolled recipient UUIDs. x-apidog-orders: - campaign_id - recipient_count - review_campaign_customer_ids x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: campaign.recipients_added timestamp: '2026-07-15T09:01:30Z' account_id: 11073 location_id: '279381' data: campaign_id: 8f3a1c72-1e4b-4d90-9a2e-6b1c0f7a4d21 recipient_count: 2 review_campaign_customer_ids: - b1.. - c2.. responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143138-run review_analytics.daily_snapshot: post: summary: Daily review analytics snapshot deprecated: false description: ' **Event name:** `review_analytics.daily_snapshot` The daily review-analytics roll-up for a location. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: period: type: string description: Period start, YYYY-MM-DD. granularity: type: string description: '"daily" or "weekly".' total_reviews: type: integer description: All-time total review count for the location. new_reviews_in_period: type: integer description: New reviews received during this period. average_rating: type: number description: Average star rating this period (4-dp float; 0.0 if none). previous_average_rating: type: number description: Average rating for the preceding period. x-apidog-orders: - period - granularity - total_reviews - new_reviews_in_period - average_rating - previous_average_rating x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: review_analytics.daily_snapshot timestamp: '2026-07-15T02:00:00Z' account_id: 11073 location_id: '279381' data: period: '2026-07-14' granularity: daily total_reviews: 1240 new_reviews_in_period: 18 average_rating: 4.6123 previous_average_rating: 4.5901 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143135-run listing.submission: post: summary: Directory listing synced (success/incomplete) deprecated: false description: ' **Event name:** `listing.submission` Sent when Synup finishes attempting to sync a business listing to a directory (Google, Facebook, etc.), triggered by profile updates or new directory submissions. Delivered to your Webhooks URL (Listings webhook). One delivery per status change — a move from incomplete to success sends two separate calls. Note the compact envelope: there is no top-level timestamp or account_id, and the location is identified by the Base64 id inside data. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Present when the account has generated a signing secret; verify before processing. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Always "listing.submission". status: type: string description: '"success" (listing is live on the directory) or "incomplete" (could not be completed).' live_link: type: string description: Public URL of the live listing. Present only when status is "success". error_message: type: string description: Why the submission could not be completed. Present only when status is "incomplete". data: type: object description: '' properties: business_id: type: integer description: Synup's internal numeric ID for the location. v4_business_id: type: string description: Base64-encoded location identifier for the v4 API. Same value as data.location_id. location_id: type: string description: Base64-encoded location identifier. Same value as data.v4_business_id. site: type: object description: The directory the listing was synced to. properties: id: type: integer description: Synup's internal ID for the directory. name: type: string description: Directory name (e.g. "Google", "Yelp", "Infobel"). url: type: string description: Root domain of the directory (e.g. "infobel.com"). x-apidog-orders: - id - name - url x-apidog-orders: - business_id - v4_business_id - location_id - site x-apidog-orders: - event - status - live_link - error_message - data example: event: listing.submission status: success live_link: https://www.infobel.com/en/usa/example_business/portland/USOR000000-5550001000/businessdetails.aspx data: business_id: 1000001 v4_business_id: TG9jYXRpb246MTAwMDAwMQ== location_id: TG9jYXRpb246MTAwMDAwMQ== site: id: 314 name: Infobel url: infobel.com responses: '200': description: Acknowledge with any 2xx. A non-2xx (or timeout) is recorded as a failed delivery; failures are logged but not automatically retried at this time. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143121-run endpoint.verification: post: summary: Endpoint verification handshake deprecated: false description: ' **Event name:** `endpoint.verification` Endpoint-verification handshake. Sent when a customer saves or clicks "Verify" on a Webhooks URL. Your endpoint must reply HTTP 200 with the lowercase hex HMAC-SHA256 of the nonce, keyed by your signing secret: hex(HMAC-SHA256(signing_secret, nonce)). Synup accepts the URL only if the returned digest matches. This request carries no location_id and no data object. ' tags: - Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Always "endpoint.verification". nonce: type: string description: Random challenge string. HMAC this (keyed by your signing secret) and return the hex digest. timestamp: type: string description: ISO-8601 UTC emit time. x-apidog-orders: - event - nonce - timestamp example: event: endpoint.verification nonce: a1b2c3d4e5f6a7b8c9d0 timestamp: '2026-07-15T14:00:00Z' responses: '200': description: Reply with HTTP 200 and a body containing the lowercase hex HMAC-SHA256 of the nonce keyed by your signing secret. Synup compares it to its own computation and marks the endpoint verified on a match. content: text/plain: schema: type: string example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40142150-run connection.google_verification_failed: post: summary: Google verification failed deprecated: false description: ' **Event name:** `connection.google_verification_failed` A Google Business Profile verification reached a terminal failure (suspended, duplicate, or fetch error). In-progress states do not fire. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: platform: type: string description: Always "google". connected_account_id: type: string description: Always null for verification events. failure_type: type: string description: '"rejected" (suspended/duplicate) or "transient" (fetch error).' reason: type: string description: Failure message (may be omitted). x-apidog-orders: - platform - connected_account_id - failure_type - reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: connection.google_verification_failed timestamp: '2026-07-15T14:55:30Z' account_id: 11073 location_id: '279381' data: platform: google connected_account_id: null failure_type: rejected reason: This listing was suspended by Google. responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143129-run connection.google_verification_verified: post: summary: Google verification passed deprecated: false description: ' **Event name:** `connection.google_verification_verified` A location''s Google Business Profile passed verification. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: platform: type: string description: Always "google". connected_account_id: type: string description: Always null for verification events. x-apidog-orders: - platform - connected_account_id x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: connection.google_verification_verified timestamp: '2026-07-15T14:50:00Z' account_id: 11073 location_id: '279381' data: platform: google connected_account_id: null responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143128-run rankings.gridrank_report_ready: post: summary: Grid rank report ready deprecated: false description: ' **Event name:** `rankings.gridrank_report_ready` A Grid (local-rank map) report finished generating. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: report_id: type: string description: Report UUID. engine: type: string description: 'Grid vendor: "GEORANKER", "LOCALFALCON", or "AWS".' snapshot_date: type: string description: Completion date, YYYY-MM-DD. geo: type: object description: 'Grid geometry: latitude, longitude, grid_size, grid_distance, grid_distance_unit.' x-apidog-orders: [] average_rank: type: number description: Average rank across all grid points. top_one_share: type: number description: 'Share of points ranked #1.' top_two_share: type: number description: Share of points ranked in the top two. x-apidog-orders: - report_id - engine - snapshot_date - geo - average_rank - top_one_share - top_two_share x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: rankings.gridrank_report_ready timestamp: '2026-07-15T05:02:00Z' account_id: 11073 location_id: '279381' data: report_id: d4f1a2b3-1111-4c22-9d33-5e6f7a8b9c0d engine: LOCALFALCON snapshot_date: '2026-07-15' geo: latitude: 37.7749 longitude: -122.4194 grid_size: 7 grid_distance: 1 grid_distance_unit: km average_rank: 4.2 top_one_share: 0.18 top_two_share: 0.35 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143134-run connection.listing_inaccessible: post: summary: Listing became inaccessible deprecated: false description: ' **Event name:** `connection.listing_inaccessible` The connected account can no longer access the location''s listing (access lost even though credentials may still be valid). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: platform: type: string description: '"google" or "facebook".' connected_account_id: type: string description: UUID of the connected account that lost access. reason: type: string description: Human-readable description of the issue. x-apidog-orders: - platform - connected_account_id - reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: connection.listing_inaccessible timestamp: '2026-07-15T14:42:55Z' account_id: 11073 location_id: '279381' data: platform: facebook connected_account_id: cf12de77-2211-4a09-b7c1-0a6f3b2e91aa reason: The connected Facebook account no longer has access to this listing. responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143127-run connection.location_connected: post: summary: Listing connected deprecated: false description: ' **Event name:** `connection.location_connected` A Google or Facebook listing is newly linked to a location. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: platform: type: string description: '"google" or "facebook".' connected_account_id: type: string description: UUID of the connected account that was linked. x-apidog-orders: - platform - connected_account_id x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: connection.location_connected timestamp: '2026-07-15T14:32:10Z' account_id: 11073 location_id: '279381' data: platform: google connected_account_id: ba03bc4b-9f8c-4d3b-8e93-9628034c63cc responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143124-run connection.location_disconnected: post: summary: Listing disconnected deprecated: false description: ' **Event name:** `connection.location_disconnected` A Google or Facebook listing is unlinked/removed from a location. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: platform: type: string description: '"google" or "facebook".' connected_account_id: type: string description: UUID of the connected account that was unlinked. x-apidog-orders: - platform - connected_account_id x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: connection.location_disconnected timestamp: '2026-07-15T14:35:02Z' account_id: 11073 location_id: '279381' data: platform: google connected_account_id: ba03bc4b-9f8c-4d3b-8e93-9628034c63cc responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143125-run connection.reauth_required: post: summary: Listing re-authorization required deprecated: false description: ' **Event name:** `connection.reauth_required` The connected account''s credentials were invalidated; the customer must reconnect / re-authorize. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: platform: type: string description: '"google" or "facebook".' connected_account_id: type: string description: UUID of the connected account needing re-auth. reason: type: string description: Human-readable description of the issue. x-apidog-orders: - platform - connected_account_id - reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: connection.reauth_required timestamp: '2026-07-15T14:40:18Z' account_id: 11073 location_id: '279381' data: platform: google connected_account_id: ba03bc4b-9f8c-4d3b-8e93-9628034c63cc reason: The Google account credentials are no longer valid. Please reconnect. responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143126-run profile.created: post: summary: Location created deprecated: false description: ' **Event name:** `profile.created` A new business location was created (customer-initiated only). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: source: type: string description: 'Who created it: "user", "api", or "bulk_edit".' x-apidog-orders: - source x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: profile.created timestamp: '2026-07-15T10:04:00Z' account_id: 11073 location_id: '901234' data: source: user responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143130-run profile.deleted: post: summary: Location deleted deprecated: false description: ' **Event name:** `profile.deleted` A location was archived (soft delete; there is no hard delete). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: source: type: string description: '"user", "api", or "bulk_edit".' x-apidog-orders: - source x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: profile.deleted timestamp: '2026-07-15T10:20:44Z' account_id: 11073 location_id: '901234' data: source: user responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143132-run profile.updated: post: summary: Location updated deprecated: false description: ' **Event name:** `profile.updated` An existing location''s details were edited. Debounced to at most one delivery per location per 60 seconds. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: source: type: string description: '"user", "api", or "bulk_edit".' changed_fields: type: array items: type: string description: Location field names that changed (e.g. name, phone, address1). Omitted if empty. x-apidog-orders: - source - changed_fields x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: profile.updated timestamp: '2026-07-15T10:06:12Z' account_id: 11073 location_id: '901234' data: source: user changed_fields: - name - phone responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143131-run interaction.response: post: summary: New response to a review received deprecated: false description: ' **Event name:** `interaction.response` Sent when Synup detects a new response to an existing review — including responses posted through Synup and responses detected directly on the platform. Responses arrive asynchronously, often well after the original review. Delivered to your Webhooks URL (Reviews webhook). Location-scoped. Use data.interaction.parent_id to link the response to the review it answers. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Present when the account has generated a signing secret; verify before processing. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 datetime Synup detected and processed this interaction (UTC). account_id: type: integer description: The Synup account that owns this location. location_id: type: string description: Synup's numeric location ID, as a string. data: type: object description: '' properties: interaction: type: object description: The review or response. properties: id: type: string description: Synup's unique ID (UUID) for this interaction. type: type: string description: '"Response" for this event.' content: type: string description: Full text of the review. rating: type: integer description: Always null — responses do not carry a rating. author_name: type: string description: Name of the business or person who wrote the response (e.g. "Owner"). author_avatar: type: string description: Usually null for owner responses. date: type: string description: ISO-8601 datetime the review was originally posted on the platform. source: type: string description: Platform the review came from (e.g. "maps.google.com", "yelp.com"). parent_id: type: string description: The id (UUID) of the original review this response belongs to; use it to link back to a review you already received. interaction_request_id: type: string description: Internal tracking ID (UUID) for the crawl request that surfaced this review. title: type: string description: '"Response from owner" when provided by the platform, otherwise null.' permalink: type: string description: Direct URL to the review on the original platform. category: type: string description: '"Review" — responses share the same category value as reviews.' interaction_status: type: string description: String or null. x-apidog-orders: - id - type - content - rating - author_name - author_avatar - date - source - parent_id - interaction_request_id - title - permalink - category - interaction_status x-apidog-orders: - interaction agency_account_id: type: integer description: Present only when the account is managed by a parent agency account. x-apidog-orders: - event - timestamp - account_id - location_id - data - agency_account_id example: event: interaction.response timestamp: '2026-06-16T04:40:38Z' account_id: 10002 location_id: '700002' data: interaction: id: dddddddd-eeee-ffff-0000-111111111111 type: Response content: Thank you for the kind words! We truly appreciate your feedback and look forward to serving you again. rating: null author_name: Owner author_avatar: null date: '2022-03-22T18:22:28.266579+00:00' source: maps.google.com parent_id: aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb interaction_request_id: eeeeeeee-ffff-0000-1111-222222222222 title: Response from owner permalink: https://maps.google.com/maps?cid=00000000000000000002 category: Review interaction_status: null responses: '200': description: Acknowledge with any 2xx. A non-2xx (or timeout) is recorded as a failed delivery; failures are logged but not automatically retried at this time. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143123-run interaction.review: post: summary: New review received for a location deprecated: false description: ' **Event name:** `interaction.review` Sent when Synup detects a new review for one of your locations on any monitored platform (Google, Yelp, TripAdvisor, etc.). Delivered to your Webhooks URL (Reviews webhook — requires the reviews webhook permission). Location-scoped. Social-category interactions are not delivered. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Present when the account has generated a signing secret; verify before processing. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 datetime Synup detected and processed this interaction (UTC). account_id: type: integer description: The Synup account that owns this location. location_id: type: string description: Synup's numeric location ID, as a string. data: type: object description: '' properties: interaction: type: object description: The review or response. properties: id: type: string description: Synup's unique ID (UUID) for this interaction. type: type: string description: '"Review" for this event.' content: type: string description: Full text of the review. rating: type: integer description: Reviewer rating on a normalized 1-10 scale (null for platforms without ratings). For Facebook Recommendations, 10 = positive (thumbs up), 2 = negative (thumbs down). Divide if you need a 1-5 scale. author_name: type: string description: Name of the person who left the review. author_avatar: type: string description: URL to the reviewer's profile photo; null if the platform provides none. date: type: string description: ISO-8601 datetime the review was originally posted on the platform. source: type: string description: Platform the review came from (e.g. "maps.google.com", "yelp.com"). parent_id: type: string description: Always null for reviews (used by responses to reference the original review). interaction_request_id: type: string description: Internal tracking ID (UUID) for the crawl request that surfaced this review. title: type: string description: Review title if provided; usually null for Google reviews. permalink: type: string description: Direct URL to the review on the original platform. category: type: string description: '"Review" for standard reviews, "Recommendation" for Facebook Recommendations.' interaction_status: type: string description: Always null for reviews. x-apidog-orders: - id - type - content - rating - author_name - author_avatar - date - source - parent_id - interaction_request_id - title - permalink - category - interaction_status x-apidog-orders: - interaction agency_account_id: type: integer description: Present only when the account is managed by a parent agency account. x-apidog-orders: - event - timestamp - account_id - location_id - data - agency_account_id example: event: interaction.review timestamp: '2026-06-16T05:25:52Z' account_id: 10002 location_id: '700001' data: interaction: id: aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb type: Review content: From a parent's perspective, nothing matters more than knowing your child is happy and safe. Thank you for the wonderful care you provide! rating: 10 author_name: Alex Johnson author_avatar: https://lh3.googleusercontent.com/a/placeholder-avatar date: '2026-06-15T14:58:43.540667+00:00' source: maps.google.com parent_id: null interaction_request_id: cccccccc-dddd-eeee-ffff-000000000000 title: null permalink: https://maps.google.com/maps?cid=00000000000000000001 category: Review interaction_status: null responses: '200': description: Acknowledge with any 2xx. A non-2xx (or timeout) is recorded as a failed delivery; failures are logged but not automatically retried at this time. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143122-run campaign.sent: post: summary: Review campaign sent deprecated: false description: ' **Event name:** `campaign.sent` A campaign was launched and invites started going out. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: campaign_id: type: string description: Campaign UUID. campaign_name: type: string description: Campaign name. campaign_type: type: string description: '"email_sms" or "review_funnel".' campaign_scope: type: string description: '"sms", "email", or "sms_and_email".' x-apidog-orders: - campaign_id - campaign_name - campaign_type - campaign_scope x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: campaign.sent timestamp: '2026-07-15T09:00:00Z' account_id: 11073 location_id: '279381' data: campaign_id: 8f3a1c72-1e4b-4d90-9a2e-6b1c0f7a4d21 campaign_name: Summer Review Push campaign_type: email_sms campaign_scope: sms_and_email responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143137-run campaign.review_posted: post: summary: Review posted (campaign-attributed) deprecated: false description: ' **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. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: attribution: type: string description: Always "location_level". recency_window_days: type: integer description: Attribution window in days (30). review: type: object description: 'The posted review: interaction_id, source, author_name, rating (0-5), rating_scale, title, content, permalink, posted_at.' x-apidog-orders: [] campaigns: type: array items: type: object x-apidog-orders: [] description: 'Active campaigns attributed (max 25, newest first): review_campaign_id, name, launched_at.' x-apidog-orders: - attribution - recency_window_days - review - campaigns x-apidog-orders: - event - timestamp - account_id - location_id - data example: 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' responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143142-run rankings.sov_snapshot_completed: post: summary: Share-of-Voice snapshot completed deprecated: false description: ' **Event name:** `rankings.sov_snapshot_completed` A Share-of-Voice snapshot was stored for a keyword (one event per keyword). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: keyword_id: type: string description: SoV keyword identifier. engine: type: string description: Search engine (defaults to "google"). snapshot_date: type: string description: Capture date, YYYY-MM-DD. sov: type: number description: Share-of-voice value. rank: type: integer description: Computed rank position. x-apidog-orders: - keyword_id - engine - snapshot_date - sov - rank x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: rankings.sov_snapshot_completed timestamp: '2026-07-15T03:15:00Z' account_id: 11073 location_id: '279381' data: keyword_id: '84213' engine: google snapshot_date: '2026-07-15' sov: 62.5 rank: 3 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143133-run social_connection.archived: post: summary: Social channel archived deprecated: false description: ' **Event name:** `social_connection.archived` A social channel connection was archived. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: social_profile_id: type: string description: Brand UUID. connected_account_id: type: string description: Connected account UUID. platform: type: string description: Platform. display_name: type: string description: Channel display name. reason: type: string description: Archive reason. x-apidog-orders: - social_profile_id - connected_account_id - platform - display_name - reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_connection.archived timestamp: '2026-07-15T10:20:00Z' account_id: 11073 location_id: null data: social_profile_id: b2d4... connected_account_id: c-9 platform: facebook display_name: Acme Coffee reason: Credentials revoked responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143154-run social_connection.connected: post: summary: Social channel connected deprecated: false description: ' **Event name:** `social_connection.connected` A social channel was connected (or reconnected) to a brand. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: social_profile_id: type: string description: Brand UUID. connected_account_id: type: string description: Connected account UUID. platform: type: string description: Platform (facebook, instagram, ...). display_name: type: string description: Connected channel display name. is_reconnect: type: boolean description: True if this replaced an existing connection. listing_connected_account_id: type: string description: Linked listing connected-account UUID (if any). x-apidog-orders: - social_profile_id - connected_account_id - platform - display_name - is_reconnect - listing_connected_account_id x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_connection.connected timestamp: '2026-07-15T10:00:00Z' account_id: 11073 location_id: null data: social_profile_id: b2d4... connected_account_id: c-9 platform: facebook display_name: Acme Coffee is_reconnect: false listing_connected_account_id: lc-3 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143152-run social_connection.disconnected: post: summary: Social channel disconnected deprecated: false description: ' **Event name:** `social_connection.disconnected` A social channel was disconnected from a brand. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: social_profile_id: type: string description: Brand UUID. connected_account_id: type: string description: Connected account UUID. platform: type: string description: Platform. display_name: type: string description: Channel display name. x-apidog-orders: - social_profile_id - connected_account_id - platform - display_name x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_connection.disconnected timestamp: '2026-07-15T10:10:00Z' account_id: 11073 location_id: null data: social_profile_id: b2d4... connected_account_id: c-9 platform: facebook display_name: Acme Coffee responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143153-run social_post.created: post: summary: Social post created deprecated: false description: ' **Event name:** `social_post.created` A social post was created (draft or scheduled) in Synup. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: post_id: type: string description: Social post UUID. social_profile_id: type: string description: Brand / social profile UUID. status: type: string description: Post status (e.g. draft, scheduled). created_by: type: string description: 'Origin: "user", "api", "automation".' platform_ids: type: array items: type: string description: Target platform identifiers for this post. x-apidog-orders: - post_id - social_profile_id - status - created_by - platform_ids x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.created timestamp: '2026-07-15T11:00:00Z' account_id: 11073 location_id: null data: post_id: 7a1c... social_profile_id: b2d4... status: scheduled created_by: user platform_ids: - facebook - instagram responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143143-run social_post.deleted: post: summary: Social post deleted deprecated: false description: ' **Event name:** `social_post.deleted` A social post was archived/removed. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: post_id: type: string description: Social post UUID. social_profile_id: type: string description: Brand UUID. status: type: string description: Post status. archived_at: type: string description: Archive time, ISO-8601. x-apidog-orders: - post_id - social_profile_id - status - archived_at x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.deleted timestamp: '2026-07-15T12:30:00Z' account_id: 11073 location_id: null data: post_id: 7a1c... social_profile_id: b2d4... status: archived archived_at: '2026-07-15T12:29:58Z' responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143145-run social_post.failed: post: summary: Social post failed deprecated: false description: ' **Event name:** `social_post.failed` A social post failed to publish on one or more platforms. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: post_id: type: string description: Social post UUID. social_profile_id: type: string description: Brand UUID. status: type: string description: Post status. items: type: array items: type: object x-apidog-orders: [] description: 'Per-platform failure detail: platform, social_platform_id, status, reason, vendor_error.' x-apidog-orders: - post_id - social_profile_id - status - items x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.failed timestamp: '2026-07-15T12:00:10Z' account_id: 11073 location_id: null data: post_id: 7a1c... social_profile_id: b2d4... status: failed items: - platform: instagram social_platform_id: i-55 status: failed reason: Media rejected by platform vendor_error: IG_MEDIA_ERROR responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143147-run social_post.published: post: summary: Social post published deprecated: false description: ' **Event name:** `social_post.published` A social post was published to its platforms. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: post_id: type: string description: Social post UUID. social_profile_id: type: string description: Brand UUID. status: type: string description: Post status. published_on: type: string description: Publish time, ISO-8601. items: type: array items: type: object x-apidog-orders: [] description: 'Per-platform results: platform, social_platform_id, connected_account_id, published_url, vendor_post_id, status.' x-apidog-orders: - post_id - social_profile_id - status - published_on - items x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.published timestamp: '2026-07-15T12:00:05Z' account_id: 11073 location_id: null data: post_id: 7a1c... social_profile_id: b2d4... status: published published_on: '2026-07-15T12:00:00Z' items: - platform: facebook social_platform_id: f-123 connected_account_id: c-9 published_url: https://facebook.com/p/xyz vendor_post_id: vp_88 status: published responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143144-run social_post.rejected: post: summary: Social post rejected deprecated: false description: ' **Event name:** `social_post.rejected` A social post was rejected in an approval workflow. Scope: brand-scoped (location_id is null). Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: post_id: type: string description: Social post UUID. social_profile_id: type: string description: Brand UUID. status: type: string description: Post status. rejection_reason: type: string description: Why the post was rejected. x-apidog-orders: - post_id - social_profile_id - status - rejection_reason x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: social_post.rejected timestamp: '2026-07-15T11:15:00Z' account_id: 11073 location_id: null data: post_id: 7a1c... social_profile_id: b2d4... status: rejected rejection_reason: Off-brand imagery responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143146-run review_analytics.weekly_snapshot: post: summary: Weekly review analytics snapshot deprecated: false description: ' **Event name:** `review_analytics.weekly_snapshot` The weekly review-analytics roll-up for a location. Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL. ' tags: - Webhooks/Webhooks - Webhooks parameters: - name: X-Synup-Signature in: header description: sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. required: true example: sha256=Base64Signature== schema: type: string requestBody: content: application/json: schema: type: object properties: event: type: string description: Dotted event name. timestamp: type: string description: ISO-8601 UTC time the event was emitted. account_id: type: integer description: Synup account the event belongs to. location_id: type: string description: Numeric string for location-scoped events; null for brand-scoped events. data: type: object properties: period: type: string description: Period start, YYYY-MM-DD. granularity: type: string description: '"daily" or "weekly".' total_reviews: type: integer description: All-time total review count for the location. new_reviews_in_period: type: integer description: New reviews received during this period. average_rating: type: number description: Average star rating this period (4-dp float; 0.0 if none). previous_average_rating: type: number description: Average rating for the preceding period. x-apidog-orders: - period - granularity - total_reviews - new_reviews_in_period - average_rating - previous_average_rating x-apidog-orders: - event - timestamp - account_id - location_id - data example: event: review_analytics.weekly_snapshot timestamp: '2026-07-13T02:00:00Z' account_id: 11073 location_id: '279381' data: period: '2026-07-06' granularity: weekly total_reviews: 1240 new_reviews_in_period: 18 average_rating: 4.6123 previous_average_rating: 4.5901 responses: '200': description: Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. content: application/json: schema: type: object properties: {} x-apidog-orders: [] headers: {} x-apidog-name: '' security: [] x-apidog-folder: Webhooks/Webhooks x-apidog-status: released x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40143136-run