Blocks

Text trigger

Verified phones text the platform number and the workflow runs with the message, sender, and timestamp. Menu routing when several workflows listen.

Text the MadMax number from a verified phone, the workflow runs. One platform number, routed by sender.

When it runs

On each inbound SMS from a phone verified in your workspace (Settings → messaging). Texts from any other number are dropped in code before anything is processed, with no reply and no run: an unknown sender learns nothing. The trigger is eligible while the workflow is active, or while you're testing it with Run.

Routing is deterministic and happens before any model is involved:

  • No eligible workflow: the sender gets a short nudge back saying none of their text workflows are running, with a hint to press Run or Activate.
  • Exactly one: it fires straight away.
  • Several: the message is held and MadMax texts back a numbered menu. The digit reply routes the original message, so the sender never retypes. One pending question per sender number; a newer ambiguous text replaces it, and a question expires after 10 minutes. When a model can guess the likely match it leads the menu with "Sounds like X, reply 1", but only the digit reply ever runs anything.

A YES or NO from a number that has a pending text approval is consumed by that approval first and never reaches a trigger.

Config

The text trigger's Inspector config Nothing to configure. Verification lives in Settings → messaging.

There are no fields. The step arms as soon as the workspace holds at least one verified number; until then the canvas marks it as needing setup. The Inspector shows the number to text.

Output

{
  "from": "+17145551234",
  "text": "the walk-in fridge is leaking, need someone today",
  "message_id": "msg_…",
  "received_at": "2026-08-26T18:00:00Z"
}

{{ payload.text }} is the message; {{ payload.from }} the sender in E.164 form, which is by construction a verified number you can text back. message_id and received_at come from the carrier delivery.

Testing

The verify kind is capture_real: a synthetic sample doesn't count. Press Run, text the number from a verified phone, and that one delivery both runs the draft and pins the step's sample. A build with an open capture window outranks other listening text workflows, so the text you send while building lands on the one you're looking at. Run step on a trigger with no pinned sample reports "no captured sample yet" rather than passing on an empty payload.

Patterns

  • Text desk: AI reads each text, urgent ones get an immediate reply via send text, routine ones post to a channel.
  • Field logging: "expense 14.50 lunch" → extract the amount and category → store upsert.
  • Reminders by reply: text "remind me friday", parse the date, wait, text back.

Gotchas

  • Unverified numbers can't trigger, because verification is the security model. The messaging guide covers setup.
  • Replying costs a send text step; the trigger only receives.
  • STOP suspends a number everywhere it's verified, including as a trigger sender, until the person texts START.
  • Several text workflows active at once means every text starts with a menu. Keep one running per workspace when you want texts to fire instantly.

Related