Message Received
Fire a flow when a contact sends a message that matches a rule
The Message Received trigger matches an incoming message against a rule. Use it for keyword menus, slash commands and text patterns.

What It Matches
In the second step of the setup you pick what the trigger looks at. The rule editor in the next step adapts to that choice.
| Refinement | What it matches | Typical use |
|---|---|---|
| The message is… | The text content of the message | Keyword menus, slash commands, exact greetings |
The step also lists The media type is…, to match what kind of file came in, and The profile field is…, to match data on the contact. See Media Type Matching and Profile Matching on Message.

Text Matching
Pick The message is… to match on the text body of the message.

Operators
The operator list shows 15 operators, in this order. The value is required for every one of them, including Is Empty and Is Not Empty. The value can be up to 500 characters. A rule whose value is empty never matches a message, except Is Empty and Is Not Empty, which do not read the value.
| Operator | Behavior |
|---|---|
| Equals | The text matches the value exactly. Case-sensitive. |
| Does Not Equal | The text is anything except the value. Case-sensitive. |
| Contains | The text includes the value. Not case-sensitive. |
| Does Not Contain | The text does not include the value. Not case-sensitive. |
| Starts With | The text begins with the value. Not case-sensitive. |
| Ends With | The text ends with the value. Not case-sensitive. |
| Greater Than | The text, read as a number or a date, is above the value. |
| Greater Than or Equal | The text, read as a number or a date, is at or above the value. |
| Less Than | The text, read as a number or a date, is below the value. |
| Less Than or Equal | The text, read as a number or a date, is at or below the value. |
| In Array | The whole text equals one item of the value, a comma-separated list such as yes,ok,sure. Not case-sensitive. |
| Not In Array | The whole text equals none of the items in the list. An empty list never matches. |
| Is Empty | The text is blank. |
| Is Not Empty | The text has content other than spaces. |
| Matches Regex Pattern | The text matches the regular expression. Not case-sensitive. An invalid pattern never matches. |
The four comparison operators compare numbers, or dates written as 2026-11-02. A message that is neither, such as hello, never matches them. Use them for menus where the contact replies 1, 2 or 3.
Example - keyword menu: Operator Contains, value /support → matches "/support", "/support please", "hi /support".
Command matching
When a message starts with / (like /start or /menu) and your value is a command, Contains matches only the whole command, alone or followed by a space. This stops /start from matching /starting.
| Rule | Matches | Does not match |
|---|---|---|
Contains /start | "/start", "/start help", "please /start now" | "/starter", "/starting" |
Equals /menu | "/menu" | "/menu now", "main /menu" |
Media Type Matching
The The media type is… option lets you tick one or more of Photo, Video, Voice, Audio, Document, Sticker, Location or Contact. The flow starts when the incoming message is one of them.
A message with no text, such as a photo sent alone, starts only flows that have a media rule. Flows with a text rule or a Catch All trigger do not react to it. A photo sent with a caption counts as a Photo for a media rule and as text for a text rule. A video note or a GIF counts as Video.
Profile Matching on Message
The The profile field is… option lets you pick a profile field such as Language, Tags, Lead Status, Name, Email or Phone, or a custom field, then an operator and a value. The flow starts when the contact's field matches.
Wexio reads the contact's saved value when the message arrives. If the value cannot be read at that moment, the rule does not match, so a field that is only empty by mistake never starts the flow. A rule with an empty value never matches, except Is empty and Is not empty.
Review & Create

The final step shows a single summary card with the attribute, operator, and value you picked. Click Create Trigger to save. Use the back arrow to change a value.
When Several Flows Match
If a message matches more than one published flow, Wexio starts one of them. A flow whose triggers all match ranks above a flow that matches only some of its triggers. Keep your keyword rules distinct so two flows do not compete for the same message.
A Catch All flow is the fallback. It runs only when no more specific flow matches the message.
Related
- Triggers: all trigger types.
- Catch All: a flow that matches every message.
- Flow Settings: limit a flow to certain channels.