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

Trigger: Message Received

The most-used trigger: fires a workflow on every inbound message from a contact on any channel.

Jul 11, 2026

The Message Received trigger (message.received) is the workhorse of Workflows: it fires every time a contact sends an inbound message on any connected channel (WhatsApp, Telegram, Webchat, Email, SMS, Instagram, Messenger, TikTok). It's the foundation for welcome flows, keyword auto-replies, and AI Agent handoffs.

When it fires

It fires as soon as the message lands in the inbox, alongside (or before) auto-assignment and AI routing.

Requirements

  • At least one connected channel in the workspace.

Trigger configuration

  • Channel type / Specific channel: scope the flow to one channel (e.g. only Webchat).
  • Contains keyword: fire only if the text includes a word (e.g. "price", "cancel").
  • Message type: filter by text, image, audio/voice, video, file, or location.
  • Only on first message: enable this to restrict the workflow to the very first time the contact writes in that conversation — ideal for welcome messages.

Available variables

  • $message.id, $message.text, $message.type, $message.media_url, $message.timestamp
  • Standard $conversation.* and $contact.* variables

Example

A "Welcome" workflow triggered by message.received with Only on first message enabled sends a greeting using the contact's name ($contact.first_name) plus a menu of options (Sales / Support / Billing).

Tips

  • Combine Contains keyword with a condition node to build lightweight FAQ flows without needing the AI Agent.
  • If you already use the Reception Router with AI, keep this manual trigger for edge cases the AI doesn't handle, or for channels where ai_routing is set to never.

Troubleshooting

If a workflow fires twice for the same message, check whether you have more than one active workflow on the same trigger without filters that keep them from overlapping.

Was this helpful?

Related articles