Relay templates
A library of ready-made Relay templates. Start from a template that ships in the app, or build from the outcome-first library below. Each library entry lists the trigger, any conditions, the actions, and a brief why this works note.Every template here is a starting point. Adjust the wording, labels, assignees, active hours, and conditions to match your team’s workflow. For step-by-step instructions on building a Relay from scratch, including how to use AND/OR between conditions, chain actions, and add delays, see Create and edit a Relay. For a full reference of the available triggers, conditions, and actions, see the Relay building blocks page.
Starter templates that ship today
These starter templates are available from the Relays module in the app. Pick one, name it, and adjust the fields to match your workflow.
Every starter is a starting point you can customize.
Foundational templates
The outcomes below are the building blocks that most teams start from. Each entry lists the trigger, any conditions, the actions, and a short “Why it works.” Adjust wording, labels, assignees, and scoping to fit your team.Confirmed vs. pending. The Add Action menu can vary by trigger. The templates below cover only the combinations confirmed to appear in the app today. Three additional foundational templates (on Conversation Opened, Comment Created, and Conversation Label Applied) are staged for a follow-up once their action menus land.
Whoever answers a lead first owns the follow-up
Why it works: The first teammate to reply gets assigned. The conversation is no longer unassigned, so later replies from others don’t steal it. Follow-up never lands in an unclaimed pile. This is the outcome behind the shipped Auto Assign to First Responder starter.
Clean reset and system sync every time a thread closes
Why it works: Closing resets assignment in one step and pushes the close event to your other systems. This extends the shipped Unassign on Close starter with a
Resolved label and an outbound webhook so your CRM, data warehouse, or ticketing tool stays in sync.
One rule that routes an entire namespace of labels
Why it works: The Conversation label equals condition is a matcher, not a fixed equality check. A single
startsWith "Region:" rule catches every label in a namespace at once (Region:North, Region:South, Region:West, etc.), so you avoid maintaining one Relay per region. See the operator-selector Note in Relay building blocks for the full operator list.
Catch every text that fails to deliver
Why it works: A failed text is invisible today because the sender assumes it went through. This surfaces every failure immediately, reopens and flags the thread, and puts it on someone to follow up. Most valuable for time-sensitive dispatch, staffing, and safety messages.
Branch on the reason a message failed
Why it works: Not all failures are equal, so matching on the failure text lets you retry what’s worth retrying and clean up what isn’t. Build a second Relay on the same trigger that matches a permanent-failure reason and labels it
Bad number instead. Use provider-agnostic error wording in your matches so the Relay keeps working if the underlying carrier or provider changes.
Verify before enabling. The Message failure contains text condition ships with the v2026.07.15 release. If your workspace doesn’t see it on the Message Failed trigger yet, hold this template until it appears.
When a label comes off, sync the change
Why it works: A label coming off often signals a state change. Firing on removal keeps your CRM or reporting in sync automatically. Remove labels isn’t an available action on this trigger, so this Relay reacts to a removal rather than performing one.
Vertical library
The templates below are grouped by industry and by common cross-industry use cases. Every template uses the canonical trigger, condition, and action names. See Relay building blocks for the full reference.Construction and dispatch
No job stalls because one supervisor’s phone went dark
Why it works: Inbound texts land in a shared Inbox with an owner and a job label. Threads stay covered when a supervisor is on a site or out.
Subcontractor and supplier texts never sit unclaimed
Why it works: Anything that slips past routing gets flagged instead of aging in the queue.
Logistics and trucking
Route every driver text to the right dispatcher, no shared handset required
Why it works: Every dispatcher sees every message in one Inbox, and texts self-sort by region. That replaces the single shared phone.
Off-duty driver messages still get an instant acknowledgement
Why it works: An off-hours text gets an immediate acknowledgement and waits for dispatch in the morning.
Policy and route acknowledgements get tracked, not chased
Why it works: Pair a broadcast with a keyword reply, and MessageDesk labels and logs every acknowledgement automatically.
Field operations
Safety and incident texts escalate the second they land
Why it works: A field emergency routes to the safety lead and alerts the team in one step.
Rig recruiting stops living on personal phones
Why it works: MessageDesk captures every candidate availability reply, assigns an owner, and pushes it to your system. Nobody gets called twice.
Every field message is retained and auditable
Why it works: Inbound and outbound field messages stream to your system of record. MessageDesk facilitates 10DLC registration as your CSP and honors opt-outs at the workspace level.
Staffing and recruiting
Every candidate reply gets claimed by a recruiter
Why it works: After a shift-fill text, replies route to the coordinator. The fastest responder gets placed first, and MessageDesk logs the reply.
Applicant first-touch that never goes cold
Why it works: An instant reply with the application link plus an assigned recruiter keeps the pipeline warm.
Unsaved candidate numbers get named automatically
Why it works: Capturing the name up front keeps the directory clean and every thread attributable.
Professional services
Website-to-text intake lands in a shared, trackable inbox
Why it works: The first inbound text runs intake and creates a trackable record.
Billing questions route straight to AR
Why it works: Money questions bypass the general queue.
More industries and use cases
The patterns below cover common use cases across additional industries.Automotive service: a shared department inbox
Why it works: Status texts stop landing on one advisor’s phone. Any advisor can pick up the thread, and replies can carry photos and invoice links.
Financial advisors: broadcast replies come back to a tracked inbox
Why it works: After a broadcast, replies land with an owner and both directions stream to your records.
Home services and emergency trades: turn an after-hours text into tomorrow’s job
Why it works: MessageDesk captures and routes the lead even when the office is dark.
Support and sales
A texted keyword menu that routes itself
Why it works: One number handles support, pricing, and sales, each with its own reply and owner.
Customer service
1. After-hours auto-reply
Why this works: Inverting the Active hours window means the Relay only fires when an inbound message lands outside your business hours, so customers always get an immediate acknowledgement. The STOP language keeps you compliant with carrier opt-out requirements.
Auto-replies don’t mark a conversation as Read. When this Relay sends its after-hours reply, the conversation moves to Replied status and leaves the Unread filter. It isn’t marked Read until a teammate opens it in the Inbox. See Relays and conversation status for details.
2. First-touch reply for anonymous contacts
Why this works: New inbound texts from unsaved numbers come in as anonymous conversations. A first-touch reply captures the contact’s name while it’s fresh, and the
Lead label gives sales/intake a single filter to work from. See Anonymous, opted out & blocked for how anonymous status is determined.
3. Opted-out conversation handler
Why this works: There’s no built-in “contact is opted out” condition on the trigger, so build the handler from conditions that do exist. Match the STOP keyword on the inbound message itself, or route on an
Opted Out label that a keyword Relay, a teammate, or an integration applied upstream. Labeling the thread keeps it visible to compliance and support. Routing it to your support queue ensures someone confirms you honored the customer’s request. Once you apply Opted Out, downstream filters and Relays can avoid touching that contact.
MessageDesk automatically blocks sending to opted-out contacts at the workspace level. This Relay is for internal awareness and audit, not for blocking the outbound message itself.
Operations and routing
4. Phone line routing
Why this works: Teams running multiple phone lines (Front Desk, Support, Sales) want every inbound message on that line to land with the right owner immediately. Adding a line-specific label also gives you ready-made filtered views in the Inbox.
5. Keyword-based routing
Why this works: Keyword routing is fast triage: the customer gets an instant acknowledgement and the right team picks up the thread without manual sorting. Combine with My phone number equals if you want the keyword to behave differently on different lines.
6. Auto-assign (round-robin note)
Why this works: A single Relay assigns every inbound conversation to one teammate. True round-robin distribution requires multiple Relays, one per teammate, each segmented by a different line or label condition so they don’t all fire on the same message. There isn’t a built-in “rotate to next teammate” action today. This multi-Relay pattern is the supported workaround.
7. Assign unassigned conversations to whoever replies first
Why this works: When a shared Inbox has no owner on a thread, the first teammate to reply usually should own the follow-up. This Relay watches outbound messages, checks that no one’s assigned yet, and assigns the conversation to whoever hit send. New inbound messages on the same thread then route to that teammate by default.
Ships as a template: This template is available as the Auto Assign to First Responder starter from the Relays module. Install it as-is or use the fields above to build it yourself.
The Assign to sender action is only available with the Message Sent trigger.
8. Notify the new assignee on assignment
Why this works: MessageDesk’s in-app notifications reach assignees inside the product. Teams that live in Slack or Teams want a ping in their chat tool the moment a conversation lands in their queue. Fire a webhook on Conversation Users Assigned and route the payload to your notifier of choice.
9. Re-triage on reopen
Why this works: When a closed conversation gets reopened (a customer replies days later, or a teammate reopens for follow-up), the original assignees may no longer be the right owners. Clearing assignees and applying a
Reopened label sends the thread back through your normal triage so it gets picked up by the right person.
Webhooks and integrations
Webhook actions require a configured webhook endpoint and signing secret. Set those up in Settings → Developer Tools before turning on the Relays below. See Send Webhook for the full payload format, headers, and signature validation.
10. Push new inbound message to an external system
Why this works: Streams every new inbound text to your CRM, data warehouse, ticketing tool, or notification service. Pair with My phone number equals to limit the firehose to a specific line, or add Message contains text to forward only certain keywords.
11. Notify an external system on conversation close
Why this works: Use the Conversation Closed trigger directly. It fires whenever a teammate closes a conversation, so you can push the close event straight into a CRM, ticketing tool, or data warehouse. Add My phone number equals or Conversation label equals if you only want to forward closes from certain lines or queues. No label workaround needed.
12. Reset assignees on close
Why this works: When a conversation closes, the previous assignees usually shouldn’t stay attached. Reopens or new inbound messages on the same thread often need fresh triage. The Remove all teammates from the conversation action clears every assignee in one step, so the next inbound lands unassigned and can be routed by your normal auto-assign Relays.
Ships as a template: This template is available as the Unassign on Close starter from the Relays module. Install it in one click, or build it from the fields above.
13. Auto-close after acknowledgement
Why this works: One-shot confirmation flows (appointment confirmations, delivery notifications, “on my way” pings) don’t need to stay open in the Inbox after the outbound message goes out. The Close the conversation action closes the thread as soon as the confirmation is sent, keeping the Inbox focused on conversations that still need a human.
See also
- Relay building blocks: reference for all triggers, conditions, and actions
- Create and edit a Relay: step-by-step Relay building, including AND/OR conditions, delays, and active hours
- Send Webhook: payload structure, signature validation, and retry behavior
- Developer Tools: configure your webhook endpoint and signing secret
- Relays overview: concepts and examples

