Skip to content
English
  • There are no suggestions because the search field is empty.

Mirror ticket comments to Slack

Stream every comment posted on a ticket into a Slack channel so the team sees discussion without watching the Tickets page. For ops teams who triage and discuss in Slack but file the audit trail on the ticket itself.

What this workflow does

  • A Ticket Comment Added trigger fires every time someone (or a workflow) posts a comment on any ticket in your org.
  • A Send Direct Message (or Post To Channel) action delivers the comment body + a link back to the ticket.

The comment body comes through in two flavors on the payload: comment.body (markdown source) and comment.bodyPlain (plain text). Use whichever your sink renders.

Workflow canvas: Ticket Comment Added → Post To Channel. The trigger node has a single outgoing edge to the action.

Prerequisites

Build it

1. Create the workflow

Workflows → New workflow → name Mirror ticket comments to #ops → Create.

2. Add the Ticket Comment Added trigger

  1. Add nodeTriggersTicket Comment Added.
  2. No settings — the trigger fires on every comment in your org.

3. Add the Post To Channel action

  1. Add nodeActionsPost To Channel.
  2. Settings:
    • Channel — your ops channel (e.g. #ops).
    • Content typeMarkdown if your channel renders mrkdwn cleanly; Plain text if you'd rather pre-render and skip Slack's formatting.
    • Content — a template using the comment + ticket envelope. A good starter (markdown):
    • 💬 **{{ .trigger.ticket.subjectName }}** — comment by `{{ .trigger.comment.by }}`

      {{ .trigger.comment.body }}

      Ticket: {{ .trigger.ticket.url }}

      Plain-text version:

      💬 {{ .trigger.ticket.subjectName }} — comment by {{ .trigger.comment.by }}

      {{ .trigger.comment.bodyPlain }}

      Ticket: {{ .trigger.ticket.url }}
  3. Connect the trigger to the action.

4. Save and enable

Click Save, leave Enabled on, write a commit message.

Variations

  • Route by subject kind. Add an If condition checking trigger.ticket.subjectKind so device-comments and integration-comments land in different channels. Same shape as the Alert when a device goes offline recipe.
  • DM the assignee instead of posting to a channel. Switch to Send Direct Message and look the recipient up from trigger.comment.by if you keep a user-id-to-email map; or hard-code the on-call rota's email.
  • Suppress workflow-driven comments. If you've also wired an Add Comment action (e.g. for hourly status posts), add an If condition checking trigger.comment.by does not start with workflow: so you don't mirror automated noise into the human chat.
  • Dedupe across retries. Trigger delivery is at-least-once. If your channel can't tolerate the occasional duplicate, use a Cooldown keyed on trigger.comment.eventId to drop replays — the eventId is stable per comment.

When it doesn't fire

  • No message arrived. Open the workflow's Executions. If the trigger never fired, confirm the comment actually saved on the ticket's detail page. Comments that fail sanitization (e.g. body was empty) don't fire the trigger because they don't write an event.
  • Markdown renders as raw asterisks. Switch the Content type to Markdown. Or use trigger.comment.bodyPlain and Plain text for sinks that don't render markdown.
  • Workflow fired twice for the same comment. At-least-once delivery — see Dedupe across retries above.

Related