Trigger a message after a back-office ticket is created | Community
Skip to main content

Hello!

Our backend creates a Back-office ticket via API when a user fails a verification of ours. We’d like to automatically notify the user with a simple message like:

“We’re manually reviewing your information and will follow up within 24 hours.”

However, it looks like Workflows triggered by ticket creation don’t allow us to send a user-facing message (either in-app or email). We also don’t see an option to create a new conversation from a ticket-based workflow.

Questions:

  1. Is there any way to send a user-facing message automatically when a back-office ticket is created, without exposing internal ticket content?

  2. Do we need to use our backend to create a separate outbound conversation to trigger a user message?

  3. Would using a “post”-style message via the API be the cleanest workaround?

Our goal is to keep internal review details private but still provide users with a clear update automatically.

Thanks in advance for your help!

 

Hey ​@Soniak Paul here from weekend support engineering to help you out 🤝 

You’re, right! Ticket-based workflows in Intercom can’t send user-facing messages like in-app or email notifications. They’re focused on internal routing and updates.

To notify the user automatically, the best option is to send a message via your backend after creating the ticket using the Intercom API to start a new conversation or send a post-style message.

This keeps internal ticket details private while giving users a clear update, like “We’re reviewing your info and will follow up within 24 hours.”

 


Thank you for your reply, ​@Paul Byrne !

If we were to create a new conversation via API, is there a way to connect it to the back-office ticket that was created in conjunction to essentially keep records tied to each other? I figure it’ll get tedious and difficult to go searching through records and would like to keep everything organized.


 

Hey ​@Soniak 

You could try this work around,

Both objects expose a linked_objects section, and you can programmatically link a conversation to a ticket so they remain associated and easy to navigate between in Inbox and via the API.

To do this, you’ll first create the conversation, then create the back-office ticket, and finally update the ticket to link it to the conversation. Both the Ticket and Conversation schemas include a linked_objects collection, which lists metadata for linked conversations and tickets (up to 1000). The supported way to programmatically create the association is by updating the ticket and setting the conversation_to_link_id field to the conversation ID.

Here’s the recommended flow:

  1. Create the conversation

curl -X POST https://api.intercom.io/conversations \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-H "Intercom-Version: 2.14" \
-d '{
"from": { "type": "user", "id": "CONTACT_ID" },
"body": "Hi there — following up on your case."
}'
  1. Create the back-office ticket

curl -X POST https://api.intercom.io/tickets \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-H "Intercom-Version: 2.14" \
-d '{
"ticket_type_id": 88,
"contacts": [{ "id": "CONTACT_ID" }],
"ticket_attributes": {
"_default_title_": "Back-office review",
"_default_description_": "Details of the internal issue..."
}
}'
  1. Link them by updating the ticket with the conversation ID

curl -X PUT https://api.intercom.io/tickets/{TICKET_ID} \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-H "Intercom-Version: Unstable" \
-d '{
"conversation_to_link_id": "CONVERSATION_ID"
}'

You may need to use the Intercom-Version: Unstable header if your workspace requires the latest API surface for this field. Once linked, you can confirm the association from either side. To verify, retrieve the conversation and inspect its linked_objects array, or retrieve the ticket and confirm that the linked conversation appears there.

curl -X GET https://api.intercom.io/conversations/{CONVERSATION_ID} \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Intercom-Version: 2.14"

curl -X GET https://api.intercom.io/tickets/{TICKET_ID} \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Intercom-Version: 2.14"

Would you like me to streamline this further into a single end-to-end script (instead of separate cURL calls) that you can run in your preferred language?