Triggers
Conditions
Every trigger shares a universal core of eight conditions:- My phone number equals
- Conversation label equals
- Conversation has label
- Is anonymous conversation
- Is new conversation
- Is unassigned conversation
- Teammate Assigned gates on the conversation’s current assignee. Pick a specific teammate, or Any teammate to check whether anyone is assigned.
- Active hours (with a Trigger outside of business hours invert)
- Message contains text appears on the message triggers (Message Received and Message Sent).
- Comment contains text appears only on Comment Created.
- Message failure contains text appears only on Message Failed. Matches a substring in the carrier/provider error text (for example,
unreachable,landline,blocked). See Delivery status and errors.
- Contact Property Equals checks the value of a contact property. Currently available only on the Contact Updated trigger.
- Webhook Payload Field Equals checks the value of a field in an inbound webhook payload. Available only on the Inbound Webhook Received trigger. See Webhooks for the payload schema.
Conversation has label vs Conversation label equals. Both conditions check labels, but they behave differently, so pick the one that matches your intent.
- Conversation label equals is an operator-based matcher. It exposes an operator selector with contains, equals, notEquals, startsWith, and endsWith. Use it for fuzzy or namespaced matches, for example
startsWith "Region:"to match every regional label at once. - Conversation has label is a simple presence check. It evaluates true when the conversation is currently labeled with the label you pick, and false otherwise. Use it as a gate (for example, only run when the conversation already has the
VIPlabel).
Relays can scope by line, label, content, and assignee. My phone number equals targets a connected number. Teammate Assigned targets the conversation’s current assignee. Per-person workflows like out-of-office now work on a shared line. Gate the Relay on Teammate Assigned set to the teammate who’s out, then add Is unassigned conversation with OR to also cover brand-new threads no one has picked up. You no longer need a dedicated line per teammate.
Actions
- Reply to message (supports templates, tags, and media, with an optional Delay; available on Message Received, Message Failed, and Conversation Label Removed)
- Send Message (new in v2026.08.11) sends an outbound SMS/MMS on non-conversation triggers. There’s no conversation to reply into, so you pick which connected phone number MessageDesk sends from (Outbound Channel). Currently available on Contact Updated.
- Update Contact Property updates a contact property you choose. Set it to a Custom Value, or pull a value from the triggering event (Event Data). A regular Text property can take either a Custom Value or an Event Data value. A non-text property (for example dropdown or number) can take a static value that matches its type or, new in v2026.08.28, the matching Custom Property mapped from an Inbound Webhook payload. Mapped payload values must pass type validation.
- Assign teammates to the conversation
- Assign to sender (Message Sent trigger only)
- Add labels to the conversation
- Remove labels from the conversation
- Remove teammates from the conversation
- Remove all teammates from the conversation
- Close the conversation
- Open the conversation
- Send webhook
- Send Comment (also called Post a Comment) posts an internal comment on the conversation. It supports static text and tags. The contact never sees it, and MessageDesk attributes it to the Relay. Use it for handoff notes and captured context.
- Mark Conversation Unread (new in v2026.08.04) moves the conversation back into the Unread filter as part of the Relay run. Pair with Reply to message when an auto-reply shouldn’t count as “handled” and the thread still needs a teammate to review it.
- Mark Conversation Read (new in v2026.08.04) marks the conversation Read as part of the Relay run. Use it in acknowledgement or auto-close flows where no human review is required after the Relay runs.
- Stop Processing is a terminal control action. When a Relay fires and reaches this action, no lower-priority Relays on the same trigger run. Delayed and time-based Relays are exempt. The Relay list shows when a Relay stops the cascade. Use it for routing: a matched Relay can prevent a catch-all from also firing.
Event Data
Some actions can insert a value from the event that triggered the Relay instead of a fixed value.- On Send Message and Send Comment, choose an available Event Data property for the text, or choose Custom Value to type your own.
- On Update Contact Property, the same choice applies for Text properties. New in v2026.08.28: non-text properties can also take Event Data on Inbound Webhook Received Relays by mapping the matching Custom Property from the payload. The payload value must pass type validation.
Actions on the new triggers
Message Failed supports the following actions:- Reply to message
- Assign teammates to the conversation
- Close the conversation
- Open the conversation
- Remove all teammates from the conversation
- Remove teammates from the conversation
- Add labels to the conversation
- Remove labels from the conversation
- Send webhook
- Assign teammates to the conversation
- Add labels to the conversation
- Remove labels from the conversation
- Remove teammates from the conversation
- Remove all teammates from the conversation
- Open the conversation
- Close the conversation
- Send webhook
- Send Comment
- Mark Conversation Read
- Mark Conversation Unread
Call Received works on MD-owned numbers only. It doesn’t fire for Twilio-connected numbers, Telegorithm numbers, or hosted (text-enabled) numbers where voice stays with the original provider. See Connect phone numbers for the difference between owned, hosted, and Twilio-connected lines.
- Send Message
- Send webhook
Pick the Outbound Channel on Send Message. There’s no existing conversation to reply into, so the Send Message action asks which connected phone number to send from. MessageDesk creates or continues a conversation with the contact on that channel. Standard compliance (opt-outs, 10DLC) still applies.
- Send Message (pick the Outbound Channel to send from)
- Update Contact Property
- Add labels to the conversation
- Send webhook
Contact Auto-Create checkbox. New in v2026.08.24. Each action on an Inbound Webhook Received Relay includes an Auto-Create checkbox. Check it and MessageDesk creates the contact from the payload when the phone number doesn’t match a saved contact, then runs the action. Leave it unchecked and the action only runs against saved contacts. The checkbox is set per action and only appears on this trigger. See Auto-create contacts.
- Send Message (pick the Outbound Channel to send from)
- Update Contact Property
- Send webhook
Pick the Outbound Channel on Send Message. Because there’s no existing conversation, the Send Message action asks which connected phone number to send from. MessageDesk creates a conversation with the new contact on that channel. Standard compliance (opt-outs, 10DLC) still applies.

