Flow triggers
A flow's trigger decides when a run starts for a contact. You set it in the trigger panel at the top of List view (When…), and it's one of three types.
Keyword
The flow starts when a contact's inbound message contains any of a list of keywords — comma-separated, matched case-insensitively, anywhere in the text (not just as the whole message). "I need help with my order" matches a keyword list containing help.
If the keywords field is left blank, or every keyword in it is blank, the flow can never start and the validation panel blocks activation with an error.
First inbound message
The flow starts automatically the very first time a contact messages your number — ever. There's no keyword to type; it fires once per contact, the first time they show up. This is the right fit for something like a lead-capture intake that should run automatically for every new conversation, but it isn't practical to test repeatedly, since a contact only has one "first" message.
Manual
The flow never starts on its own. This is for flows you trigger from somewhere else — today, that means starting a run yourself is not exposed in the product UI; Manual exists as a placeholder trigger type for flows you're still designing, or that a future integration will start.
How Relay decides which flow runs
A contact's inbound message can, in principle, match more than one active flow's keyword list, or line up with more than one eligible trigger. Relay resolves this with a small set of fixed rules:
-
Only typed text starts a flow. A button tap or list selection advances an existing run — it never starts a new one, even if the tapped text happens to match another flow's keyword.
-
The oldest active flow wins. If more than one active flow's trigger matches, Relay starts the one that was created first, even if it was activated later. Keep your keyword lists distinct across flows to avoid relying on this tie-break.
-
Number scope. If your account has more than one connected WhatsApp number, a flow only triggers for messages to the number(s) it serves:
- All numbers — every connected number, including numbers that also have their own number-specific flow.
- A specific number — only that number.
- No number set — only your account's default number.
There's no fallback between these. If two active flows serve the same number and both match, the one created first wins.
-
One active run per contact per number. If a contact already has an active run on a given number, a new trigger match on that same number is ignored until the run ends — see How flow runs work for what "ends" means (completed, timed out, handed off, or paused by an agent's reply).