[Webhooks] Bot's replies in conversation.admin.replied topic | Community
Skip to main content
Question

[Webhooks] Bot's replies in conversation.admin.replied topic

  • May 19, 2026
  • 4 replies
  • 172 views

Andrii Fedyk
Forum|alt.badge.img+1

The Intercom platform has following webhook topics:

 - conversation.admin.replied -- Admin conversation replies

 - conversation.operator.replied --  Fin/Bot replies to a conversation

Here all topics https://developers.intercom.com/docs/references/webhooks/webhook-models

During the tests with reusable workflow, I noticed that Bot replied are send in both topic. As a result, service receive two messages.

Below an example of Bot reply message in `conversation.admin.replied`:

{
"type": "notification_event",
"app_id": "l4e36xhv",
"data": {
"type": "notification_event_data",
"item": {
"id": "215474343849634",
"...": "...",
"conversation_rating": null,
"title": "Andrew",
"custom_attributes": {},
"conversation_parts": {
"type": "conversation_part.list",
"conversation_parts": [
{
"type": "conversation_part",
"id": "45763812690",
"part_type": "comment",
"body": "<p class=\"no-margin\">Reusable Workflow #2:<br><br><b>First message</b></p>",
"created_at": 1779200976,
"updated_at": 1779200976,
"notified_at": 1779200976,
"assigned_to": null,
"author": {
"id": "6827949",
"type": "bot",
"name": "Fin Bot",
"email": "operator+l4e36xhv@intercom.io",
"from_ai_agent": false,
"is_ai_answer": false
},
"attachments": [],
"external_id": null,
"redacted": false,
"metadata": {},
"email_message_metadata": null,
"state": "open",
"tags": [],
"event_details": {},
"app_package_code": null
}
],
"total_count": 1
}
}
},
"links": {},
"id": "notif_d80ecabc-851b-4bb8-a8c0-4a1952bd04da",
"topic": "conversation.admin.replied",
"delivery_status": "pending",
"delivery_attempts": 1,
"delivered_at": 0,
"first_sent_at": 1779200977,
"created_at": 1779200976,
"self": null
}

Is it expected to receive Bot replied in both webhook topics?

4 replies

Forum|alt.badge.img+6

Hi ​@Andrii Fedyk, Seán here from the Fin technical support team 👋
 

Yes, this is expected behaviour.

 

conversation.operator.replied is the webhook specifically for Fin/Bot replies, but bot replies can also appear in conversation.admin.replied. Because of that, if you're subscribed to both topics, the same bot reply may be delivered twice and should be deduplicated on your side.

 

The safest approach is to either:

  • treat conversation.operator.replied as the primary bot reply event, or

  • ignore conversation.admin.replied when the reply author is a bot, or

  • deduplicate using the conversation part ID

I hope that helps clarify what you're seeing.


Andrii Fedyk
Forum|alt.badge.img+1
  • Author
  • Active User
  • June 3, 2026

Thanks for suggestion ​@Sean Meade Forum Support Lead.

During the tests, I noticed that Bot replies with "part_type": "quick_reply" are only sent via conversation.admin.replied. Replies with "part_type": "comment" are sent via both topics. We suspect that this discrepancy is not expected.

 

The easiest way to reproduce quick_reply replies, at least for me, is to create a reusable workflow with quick reply buttons.

 

If we want reliable handling of Bot replies, I’m going to ignore Bot replies coming from conversation.operator.replied. There is one thing I’m still struggling with: if we ignore Bot replies in conversation.operator.replied, how can we identify Fin replies and handle them properly? From the logs, both Fin and Bot authors have author.type === "bot".

 

For now, we will consider replies with "from_ai_agent": true or "is_ai_answer": true as messages from Fin. If this approach is vague, please correct us.


Forum|alt.badge.img+6

Hi there, Seán here from the Fin technical support team 👋

Thanks for digging into this, your current approach is the right one.

author.type === "bot" on its own isn’t enough to reliably identify Fin replies, because workflow/operator bot replies can also use that author type. The better signal is the author flags:

  • from_ai_agent: true → the reply came from Fin AI Agent
  • is_ai_answer: true → the conversation part is an AI-generated answer from Fin

So yes, treating replies with those fields as Fin replies is the correct approach.

More broadly, conversation.operator.replied is the dedicated webhook for Fin/bot replies, while conversation.admin.replied is broader, so if you subscribe to both topics it’s safest to deduplicate by conversation part ID and then branch based on part_type plus the author flags.

On the quick_reply point specifically, what you’re seeing matches the current behavior we’d recommend handling against. If your goal is specifically to identify Fin responses, from_ai_agent/is_ai_answer is the right signal to rely on, rather than author.type.

If helpful, I can also get the `quick_reply` topic behaviour checked internally to see whether it should be documented more clearly.
 


Andrii Fedyk
Forum|alt.badge.img+1
  • Author
  • Active User
  • June 16, 2026

Hi ​@Sean Meade Forum Support Lead, thank you for additional details, especially part about from_ai_agent and is_ai_answer.

Regarding quick_reply, I’d appreciate it if you could check internally and document it in more details.

We have also observed webhooks with quick_reply are not being delivered for all workspaces. If possible, could you clarify whether there are any internal feature flags, or A/B tests related to webhook for "part_type": "quick_reply"?

Thanks again for your help ❤️