Webhook events
Every event CommentGate can send, with an example body. Webhooks added in Settings, then Alerts, can take any of them; REST hooks (and so Zapier and Make) can subscribe to the ones marked. The examples are built by the same code that builds real deliveries.
Updated September 26, 2026
All events
| Event | Sent when | REST hooks |
|---|---|---|
| comment.received | Every new comment | Yes |
| comment.hidden | A comment was hidden | Yes |
| comment.review | A comment needs review | Yes |
| comment.needs_reply | A comment needs a reply | Yes |
| message.received | A new direct message | Yes |
| lead.captured | A buyer lead came in | Yes |
| contact.updated | A person's details changed | Yes |
| rule.matched | A rule matched | Settings only |
| spike | A sudden rush of harmful comments | Settings only |
| connection.needs_reauth | An account needs reconnecting | Settings only |
| digest.daily | Daily digest | Settings only |
| ad.health | An ad draws unusually many harmful or negative comments | Settings only |
| insights.weekly | Weekly summary | Settings only |
comment.review
A comment is waiting for a person (Needs you).
Webhooks in Settings, REST hooks, Zapier and Make.
{
"id": "sample_comment.review",
"event": "comment.review",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/inbox",
"comment": {
"id": "sample-comment",
"platform": "instagram",
"surface": "ad",
"status": "review",
"legacy_status": "review",
"text": "Mine fell apart after two weeks. Not impressed.",
"author_name": "Maya Thompson",
"author_handle": "mayahikes",
"ad_name": "Alder Trail Boot, fall launch, video 15s",
"account_name": "Wildermere",
"reason": "negative 0.62",
"rule_name": null,
"created_at": "2026-09-22T18:22:30Z"
}
} comment.needs_reply
A comment asks something the brand should answer.
Webhooks in Settings, REST hooks, Zapier and Make.
{
"id": "sample_comment.needs_reply",
"event": "comment.needs_reply",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/inbox",
"comment": {
"id": "sample-comment",
"platform": "instagram",
"surface": "ad",
"status": "visible",
"legacy_status": "allowed",
"text": "Do these come in wide sizes?",
"author_name": "Maya Thompson",
"author_handle": "mayahikes",
"ad_name": "Alder Trail Boot, fall launch, video 15s",
"account_name": "Wildermere",
"reason": null,
"rule_name": null,
"created_at": "2026-09-22T18:22:30Z"
}
} message.received
A new direct message, at most one delivery per conversation every 10 minutes. message.unread counts their messages nobody has read yet.
Webhooks in Settings, REST hooks, Zapier and Make.
{
"id": "sample_message.received",
"event": "message.received",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/messages",
"message": {
"conversation_id": "sample-conversation",
"platform": "instagram",
"text": "Hi! Is the Alder Trail Boot true to size?",
"participant_name": "Maya Thompson",
"participant_handle": "mayahikes",
"account_name": "Wildermere",
"unread": 1,
"sent_at": "2026-09-22T18:22:30Z"
}
} lead.captured
A comment showed purchase intent and was captured as a lead. comment is the comment; lead.score is the purchase-intent confidence (0 to 1, or null) and lead.link_url the tracked link sent in a private message, if any.
Webhooks in Settings, REST hooks, Zapier and Make.
{
"id": "sample_lead.captured",
"event": "lead.captured",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/inbox",
"comment": {
"id": "sample-comment",
"platform": "instagram",
"surface": "ad",
"status": "visible",
"legacy_status": "allowed",
"text": "How much are these? I need a pair before my trip",
"author_name": "Maya Thompson",
"author_handle": "mayahikes",
"ad_name": "Alder Trail Boot, fall launch, video 15s",
"account_name": "Wildermere",
"reason": null,
"rule_name": null,
"created_at": "2026-09-22T18:22:30Z"
},
"lead": {
"score": 0.91,
"link_url": "https://commentgate.com/r/k7Qm2x",
"private_reply_sent": true
}
} contact.updated
A contact's email, phone, tags or fields changed (a DM capture, a campaign, a person, or the API). There is no comment: the body carries contact and changed, which lists email, phone, tags, fields, name or merged.
Webhooks in Settings, REST hooks, Zapier and Make.
{
"id": "sample_contact.updated",
"event": "contact.updated",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/campaigns/people?person=3c1f7a52-8e0b-4d59-a2b7-6f4e1d9c0a18",
"changed": [
"email"
],
"contact": {
"id": "3c1f7a52-8e0b-4d59-a2b7-6f4e1d9c0a18",
"platform": "instagram",
"account_id": "cf2d0cac-6c2e-4510-8d91-4ce6545d7202",
"account_name": "Wildermere",
"name": "Maya Thompson",
"handle": "mayahikes",
"email": "<their email>",
"phone": "+15125550142",
"tags": [
"restock",
"vip"
],
"fields": {
"shoe size": "9"
},
"follows_you": true,
"last_message_at": "2026-09-24T21:02:11.000Z",
"created_at": "2026-09-20T15:40:03.000Z",
"updated_at": "2026-09-24T21:05:40.000Z"
}
} rule.matched
A rule set to notify this webhook matched a comment. comment.rule_name names the rule.
Webhooks in Settings, then Alerts.
{
"id": "sample_rule.matched",
"event": "rule.matched",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/inbox?c=sample-comment",
"comment": {
"id": "sample-comment",
"platform": "instagram",
"surface": "ad",
"status": "hidden",
"legacy_status": "hidden",
"text": "Use code FREEBOOTS at my shop for 90% off, link in bio",
"author_name": "Deals Daily",
"author_handle": "deals.daily.shop",
"ad_name": "Alder Trail Boot, fall launch, video 15s",
"account_name": "Wildermere",
"reason": "spam 0.97",
"rule_name": "Hide discount code spam",
"created_at": "2026-09-22T18:22:30Z"
}
} spike
Hidden comments spiked. spike.hidden_last_15_minutes is the last 15 minutes, spike.hourly_average the average per 15 minutes over the previous 24 hours.
Webhooks in Settings, then Alerts.
{
"id": "sample_spike",
"event": "spike",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/inbox?view=hidden",
"spike": {
"hidden_last_15_minutes": 38,
"hourly_average": 3
}
} connection.needs_reauth
A connected account stopped working and someone has to sign in again. connection.name is the account, connection.reason why, in words.
Webhooks in Settings, then Alerts.
{
"id": "sample_connection.needs_reauth",
"event": "connection.needs_reauth",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/accounts",
"connection": {
"name": "Wildermere (Instagram)",
"reason": "The login expired. Sign in again to keep moderating."
}
} digest.daily
The day's totals, once a day: comments received, hidden, replies sent, and how many are waiting.
Webhooks in Settings, then Alerts.
{
"id": "sample_digest.daily",
"event": "digest.daily",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/inbox?view=review",
"digest": {
"date_label": "Tuesday, September 22",
"received": 212,
"hidden": 17,
"replies_sent": 9,
"waiting": 4
}
} ad.health
An ad's harmful or negative share jumped against its own previous 7 days. Checked hourly, at most once a day per ad. ad_health.rate and baseline_rate are 0 to 1.
Webhooks in Settings, then Alerts.
{
"id": "sample_ad.health",
"event": "ad.health",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/reports/ads/6f1d2c3b-4a5e-4f60-8b7a-9c0d1e2f3a4b",
"ad_health": {
"ad_name": "Alder Trail Boot, fall launch, video 15s",
"platform": "facebook",
"account_name": "Wildermere US",
"metric": "negative",
"comments": 64,
"matching": 21,
"rate": 0.328,
"baseline_rate": 0.06,
"window_hours": 6,
"ads_manager_url": null
}
} insights.weekly
Monday's summary of the week's comments: questions, complaints and praise, with the biggest theme of each.
Webhooks in Settings, then Alerts.
{
"id": "sample_insights.weekly",
"event": "insights.weekly",
"created_at": "2026-09-22T18:22:30Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"url": "https://commentgate.com/app/reports/insights?week=2026-09-14",
"insights": {
"week_label": "Sep 14 to Sep 20",
"comments": 1204,
"questions": 188,
"complaints": 41,
"praise": 312,
"top": [
{
"kind": "question",
"label": "Wide sizes",
"count": 46
},
{
"kind": "complaint",
"label": "Shipping to Canada",
"count": 12
},
{
"kind": "praise",
"label": "Comfort on long hikes",
"count": 57
}
]
}
} campaign.step
A campaign step "Send to Zapier or a webhook" sends the person to one of the workspace's webhooks or REST hooks. It is signed and retried like every delivery. The id is the run and the step, and stays the same when a step is retried, so you can deduplicate on it.
{
"id": "9b8a7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d:step_2",
"event": "campaign.step",
"created_at": "2026-09-22T19:04:00.000Z",
"workspace_id": "a5bf2b64-1c0e-4f8a-9d3b-2e7c6f5a4b19",
"campaign_id": "5c1d2e3f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"run_id": "9b8a7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"contact": {
"id": "3c1f7a52-8e0b-4d59-a2b7-6f4e1d9c0a18",
"platform": "instagram",
"account_id": "cf2d0cac-6c2e-4510-8d91-4ce6545d7202",
"account_name": "Wildermere",
"name": "Maya Thompson",
"handle": "mayahikes",
"email": "<their email>",
"phone": "+15125550142",
"tags": [
"restock",
"vip"
],
"fields": {
"shoe size": "9"
},
"follows_you": true,
"last_message_at": "2026-09-24T21:02:11.000Z",
"created_at": "2026-09-20T15:40:03.000Z",
"updated_at": "2026-09-24T21:05:40.000Z"
}
} In the help center
- Get alerts in Slack, Discord or email
Choose where CommentGate tells you about comments that need you, a sudden rush of harmful comments, new leads and more, and exactly which events each place hears about.
- Connect Zapier and Make
Start a Zap or a Make scenario when a comment arrives, is hidden, needs you or turns into a lead, and hide, reply or record a sale from any other app.
- Every step, and where it works
What each campaign step does, and which of Facebook, Instagram, TikTok, YouTube, Threads and WhatsApp allow it, with the reason when one does not.
comment.received
Every new comment, once it has been decided.
comment.statussays what happened:visible,hidden,deletedorreview, the same names as the REST API. The oldlegacy_statusfield (withallowedfor a visible comment) stays until the next release.Webhooks in Settings, REST hooks, Zapier and Make.