Trigger: Conversation Opened
Automatically welcome or route every new or reopened conversation.
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
- Open Workflows → create a new workflow.
- Open the "Conversations" category.
- Drag "Conversation opened" onto the canvas.
- 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).
- Connect the action: welcome message, assignment, tag.
- 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).
Related articles
-
Build your first workflow
Omnifox workflows automate your operation: a trigger starts the automation and action nodes do the work. Build a welcome message in minutes.
-
Workflow triggers catalog
Learn which events can start a workflow automatically in Omnifox.
-
Action nodes available in workflows
Discover the actions a workflow can run automatically.
-
Conditions and branching (if/then) in a workflow
Make your flows take decisions and follow different paths based on each contact data.
-
Ready-to-use workflow templates
Start your automations in minutes from prebuilt flows you can customize.