🇪🇸 Español 🇬🇧 English 🇧🇷 Português

Trigger: Conversation Opened

Automatically welcome or route every new or reopened conversation.

Jul 11, 2026

What it is

Fires when a conversation opens — either the very first time a contact writes in, or when a conversation that was closed, resolved, or snoozed gets reopened.

When to use it

  • Send a welcome message on a contact's first conversation.
  • Catch automatic reopens from a customer reply and notify the agent who had it assigned.
  • Route a brand-new conversation to a team based on channel.

Requirements

  • Workflows enabled.
  • At least one channel connected.

Available variables

  • $conversation.id, status, channel_id/type/name, assignee, assignee_team
  • $contact.*
  • ⚠️ Not available as a message token today (even though they're documented, they aren't populated in the variable map actions use): $conversation.opened_timestamp, $conversation.opened_by_source, $conversation.opened_by, $conversation.opened_by_channel, and $conversation.previous_status. If you use them in a message (e.g. {{$conversation.previous_status}}), it renders empty. The same data DOES work as a trigger filter criterion (see below) — it's just not exposed as a text variable yet.

Configuration (filters)

  • Source: agent, API, another workflow, customer reply (automatic reopen), system. (This filter works correctly, even though the data isn't available as a message variable.)
  • Channel type, assigned team.
  • Previous status: new, was closed, was resolved, was snoozed. (This filter also works fine.)
  • "Run only once per contact" is available on this trigger.

How to set it up

  1. Open Workflows → create a new workflow.
  2. Open the "Conversations" category.
  3. Drag "Conversation opened" onto the canvas.
  4. Filter, e.g., "Previous status = New conversation" to only catch first contacts (the filter works, even though you can't show that status in the message text).
  5. Connect the action: welcome message, assignment, tag.
  6. Save and activate the workflow.

Example

A contact messages your Instagram channel for the first time. You filter "Previous status = New conversation" so the workflow only runs in that case, and reply automatically with a welcome message using $contact.first_name (don't use {{$conversation.previous_status}} in the text, it doesn't populate today) and assign it to the on-duty team.

Tips

Turn on "Run only once per contact" if you don't want the welcome message repeating every time that same contact's conversation reopens.

Troubleshooting

  • If you expect it to fire when a closed conversation reopens but it doesn't, check the "Previous status" filter — it may be limited to "new" only.
  • If your messages show blank where you expected {{$conversation.opened_by_source}}, {{$conversation.opened_by}}, {{$conversation.opened_by_channel}}, {{$conversation.opened_timestamp}}, or {{$conversation.previous_status}}: this is a known limitation, those variables aren't populated as message tokens yet (even though the equivalent filters do work).
Was this helpful?

Related articles