Skip to main content

How to create, edit, and delete Relays

Build Relays with a clear flow: Trigger → Conditions → Actions. This guide shows you how to configure, test, and troubleshoot Relays. For a full reference of every trigger, condition, and action, see the Relay building blocks page.
Permissions required: By default, only Admin users can access Relays. If you don’t see the Relays module, ask your workspace admin to grant you Relay Management permissions via Settings → Team Management. Learn more: Team Management.

How to create or edit a Relay

1. Visit the Relays module

When you first visit Relays, you’ll see templates you can use as a starting point. Click Add Relay to start building. Relays Templates Pn All Relays appear in the Relays tab. The list has five columns, left to right: Name, Description, Trigger, Order, and Actions. The On/Off toggle lives in the Actions column, along with the vertical menu. The list groups Relays by Trigger (Message Received, Message Sent, Message Failed, Conversation Opened, Conversation Users Assigned, Conversation Label Applied, Conversation Label Removed, Comment Created, Conversation Closed) and, within each group, sorts them by Order. You can scan every Relay on a phone line or event at a glance.
By default, new Relays are paused. Toggle them On when you’re ready.
Relays Tab Pn

1a. Order your Relays

Within a Trigger group, Relays execute top-down in Order. Ordering matters when more than one Relay’s conditions match the same event. For example, a keyword auto-reply and a generic after-hours reply that both listen for Message Received. To change the run order, use the Order column:
  • Click the up or down arrow on the vertical counter to move a Relay one position, or
  • Click the number and type the exact Order value you want.
There’s no drag-and-drop. The counter is the only way to reorder.
All matching Relays run. If multiple Relays in a Trigger group match the same event, every one of them runs in Order. A higher-priority Relay does not stop later Relays from evaluating.
Put narrow, specific Relays (keyword matches, anonymous-contact capture) above broad catch-alls (after-hours auto-reply). The specific behavior runs first, and downstream actions like Add label or Assign layer on top in the order you expect.

2. Name and describe your Relay

Click the vertical (three dots) next to a Relay to Rename, Edit description, or Delete.
Add an emoji (e.g., 💤 for after-hours) so you can scan the Relays list at a glance.
Relay Name Description Pn

3. Set a Trigger

Supported triggers:
  • Message Received: Fires when a new inbound SMS arrives.
  • Message Sent: Fires when your workspace sends a message (manual or automated). Useful for tracking outbound activity, syncing sent messages to external systems, and auto-assigning conversations to the sender.
  • Message Failed: Fires when an outbound message fails to deliver. Useful for catching undelivered texts, branching on the failure reason, and alerting the team.
  • Conversation Opened: Fires when a conversation transitions from Closed back to Open (a reopen). Useful for re-engagement flows, re-triaging reopened threads, or notifying external systems on reopen.
  • Conversation Users Assigned: Fires when a teammate assigns one or more people to a conversation. Useful for pinging the new assignee, applying handoff labels, or forwarding assignment events to external systems.
  • Conversation Label Applied: Fires when a label is applied to a conversation. Turns a label into an automation trigger for downstream actions like assignment, webhook fan-out, or auto-close.
  • Conversation Label Removed: Fires when a label is removed from a conversation. Mirror of Conversation Label Applied, useful for syncing a state change downstream when a label comes off.
  • Comment Created: Fires when a teammate posts an internal comment on a conversation. Useful for routing internal collaboration events to webhooks or downstream automations.
  • Conversation Closed: Fires when a teammate closes a conversation. Useful for pushing close events to external systems (CRM, ticketing, data warehouse) or for post-close cleanup actions like removing all teammates from the conversation.
Note: Templates include the Message Received trigger by default.
Changing the trigger on an existing Relay. If you switch a Relay’s trigger, MessageDesk removes any conditions the new trigger can’t support. The app shows a warning with a count before you save (for example, “Changing the trigger will remove 1 incompatible condition from this relay”). Review your conditions after switching triggers.
Relay Message Received Trigger Pn

4. Add Conditions

Conditions control where/when a Relay runs. You can combine multiple conditions with AND or OR. The available conditions depend on the selected trigger. The message triggers (Message Received and Message Sent) add Message contains text. Comment Created adds Comment contains text. Message Failed adds Message failure contains text. Every trigger includes the universal core: My phone number equals, Conversation label equals, Conversation has label, Is anonymous conversation, Is new conversation, Is unassigned conversation, Teammate Assigned, and Active hours. Available conditions:
  • Message contains text: match keywords like SUPPORT, HELP (Message Received and Message Sent triggers)
  • Comment contains text: match keywords in the body of an internal comment (Comment Created trigger)
  • Message failure contains text: match a substring in the carrier/provider error text on a failed outbound message, e.g., landline, unreachable, blocked (Message Failed trigger). See Delivery status and errors.
  • My phone number equals: run only on a specific connected phone number
  • Conversation label equals: match against a conversation’s labels using an operator selector (contains, equals, notEquals, startsWith, endsWith). For example, startsWith "Region:" matches every namespaced regional label at once.
  • Conversation has label: a boolean presence check for a specific label. Use this as a gate to run the Relay only when the conversation is already labeled (for example, VIP or Escalated). Distinct from the operator-based Conversation label equals.
  • Is anonymous conversation: no saved contact yet
  • Is new conversation: first inbound in a thread
  • Is unassigned conversation: the conversation has no assigned teammates. Useful for scoping actions to threads no one has claimed yet.
  • Teammate Assigned: gates on the conversation’s current assignee. Pick a specific teammate, or Any teammate to check whether anyone is assigned.
  • Active hours: restrict to a daily time window
Tip: Turn on “Trigger outside of business hours” to invert the time window for after-hours replies.
Relay Condition Pn

5. Add Actions

Actions run when the conditions match. You can add one or many in the order you want them to execute. The available actions can vary by trigger, so check the Add Action menu in the app for the trigger you’re using.
  • Reply to message: send an SMS/MMS (supports templates, tags, and media, with an optional Delay). Available on message-received-style triggers.
  • Assign teammates to the conversation: pick one or more users
  • Assign to sender: automatically assign the conversation to the teammate who sent the message. Only available with the Message Sent trigger. Useful for making sure whoever replies owns the follow-up.
  • Add labels to the conversation: apply one or more labels
  • Remove labels from the conversation: remove one or more labels
  • Remove teammates from the conversation: remove one or more assigned users
  • Remove all teammates from the conversation: clear every assignee from the conversation in a single step. Useful in close-out or hand-off workflows where you want to reset assignment state without listing every teammate.
  • Close the conversation: close the conversation as part of the Relay run. Useful for auto-closing after an acknowledged auto-reply or webhook-driven workflow.
  • Open the conversation: reopen a closed conversation. Useful when an event should re-surface a resolved thread for human review. Available on more than one trigger, including Message Sent.
  • Send webhook: send event data to your webhook endpoint
  • Send Comment (also called Post a Comment): posts an internal comment on the conversation. It supports static text and tags, never reaches the contact, and shows as relay-generated. Use it for handoff notes and captured context.
  • Stop Processing: 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. Use it for clean routing so a matched Relay stops a catch-all from also firing.
Tip: You can chain multiple actions together. For example, Reply, Assign, and Label in a single Relay.
Delays (optional)
  • Add a Delay to Reply to message to wait minutes/hours before sending.
  • Delays help prevent duplicate auto-replies if a message was sent recently.
Relay Action Pn

6. Activate your Relay

Use the toggle to turn the Relay On. You can pause anytime without losing your setup. Relay Toggle Pn

Managing Relays

Pause / resume

  • From the list: toggle On/Off
  • From details: use the status toggle at the top
Paused Relays don’t evaluate triggers or run actions.

Delete

Open the Relay → Delete.
Warning: Deleting is permanent. If you might reuse the Relay, pause instead.

Starter Relay templates (copy and adapt)

Example 1: Delegation and team routing Relay

Use this setup when multiple teammates need to view and reply on behalf of a manager. Relay Delegation Routing Pn

Triggers

Conditions

Actions x2

Message Received

On the Manager’s or Teammates’ phone line

Assign Manager 1, Teammate 2, and Teammate 3

Apply labels “Region 1” and “Region 2”

How it works:
When a message comes in on the manager’s number, MessageDesk automatically assigns the conversation to the manager and the two direct reports.
The Relay also labels the message by region, keeping everything organized by team and location.
Pro Tip: Use delegation-style relays for managers who want their teams to reply on their behalf or monitor shared inboxes.Each teammate assigned to the conversation will receive notifications by default.

Relays and conversation status

When a Relay sends an outbound message, MessageDesk updates the conversation’s status the same way it would for a teammate’s reply. This applies to after-hours auto-replies, out-of-office replies, and any other Relay action that sends a message.
Auto-replies don’t mark a conversation as Read. A Relay reply moves the conversation out of the Unread filter and into Replied. The conversation is only marked Read when a teammate opens it. After-hours threads still surface for human review the next morning, even though the customer already got an automated acknowledgement.
This behavior applies to every Relay action that sends a message: after-hours auto-reply, keyword auto-reply, anonymous-contact first-touch, and so on.

Example 2: Out-of-office and weekend autoresponder

Use this when teammates want to automatically reply during vacations or after hours. Out Of Office Relay Pn

Triggers

Conditions x2

Actions x3

Message Received

Active hours

Reply to message: “Thanks for reaching out! I’m currently out of the office. Please text [alternate number].”

My phone number equals

Assign teammates to the conversation: Teammate 1, 2, and 3

Add labels to the conversation: Region 1, Region 2

Steps to configure:
  1. Create a new Relay and choose Message Received as the trigger.
  2. Under conditions, set Active Hours for each day to “Closed” or a select time span.
  3. Toggle “Trigger outside of active hours” ON.
  4. Add an Action → Reply to message and compose your message.
  5. Add an Action → Assign teammates to the conversation and select teammates.
  6. Add an Action → Add labels to the conversation and select labels.
  7. Toggle the Relay ON.

Out-of-office for a specific teammate

To scope an out-of-office to one teammate, add the Teammate Assigned condition set to that teammate. This works on a shared line. The auto-reply fires only for conversations assigned to the person who’s out, and everyone else on the line keeps working. To also catch brand-new, unassigned threads, add Is unassigned conversation with OR. If the teammate has a dedicated line, scope by My phone number equals instead. See Can I set up an out-of-office reply for just one person? in the FAQ.
When each teammate has their own line and their own out-of-office Relay, give each Relay a clear descriptive name so you can tell them apart in the list:
  1. Teammate 1 - Out of Office Autoreply
  2. Teammate 2 - Weekend Autoreply
  3. Teammate 3 - Vacation Autoreply

Example 3: Identify unknown contacts/conversations

Use this Relay to automatically collect names from new, anonymous conversations.
Use it when you receive texts from unsaved numbers or new contacts.
Identify Relay Pn Steps to configure:
  1. Create a new Relay and choose Message Received as the trigger.
  2. Under conditions, set My phone number equals to a connected phone line.
  3. Set another condition for Is anonymous conversation.
  4. Add an Action → Reply to message and compose your message.
  5. Add an Action → Assign teammates to the conversation and select teammates.
  6. Add an Action → Add labels to the conversation and select labels.
  7. Toggle the Relay ON.
Pro Tip: Combine this Relay with Contact Imports or Labels (e.g., “Unverified”) to track and update new numbers later.

Example 4: Keyword-based autoresponder

Use this Relay to automatically respond when someone texts in a specific keyword, like SUPPORT, JOIN, or BOOK. When a contact sends a message containing the word “SUPPORT,” MessageDesk replies with your chosen message. Use it to auto-route messages or send fast replies without manual work. Support Relay Pn Steps to configure:
  1. Create a new Relay and choose Message Received as the trigger.
  2. Under conditions, set My phone number equals to a connected phone line.
  3. Set another condition for Message contains text SUPPORT.
  4. Add an Action → Reply to message and compose your message.
  5. Add an Action → Assign teammates to the conversation and select teammates.
  6. Add an Action → Add labels to the conversation and select labels.
  7. Toggle the Relay ON.
Tips for Success:
  • Keep keywords short and memorable. For example, JOIN, HELP, SUPPORT.
  • Use all caps so the keyword stands out in the message body.
  • Create separate keyword relays for each department (e.g., BOOK → Sales, SUPPORT → Service).

Relays best practices

  • Start simple. Test one Relay before scaling across teams.
  • Name clearly. Use descriptive titles like Teammate 1 - Delegation Relay or Region X,Y, Z Autoresponder.
  • Test with your phone. Send yourself a message to confirm behavior.
  • Combine with templates. Use pre-saved templates to standardize replies.
  • Audit regularly. Disable or update relays as team structure changes.

Technical notes and behavior

  • Relay order: Within a Trigger group, Relays run top-down in the Order you set on the Relays list. All matching Relays run. A higher-priority Relay doesn’t short-circuit later Relays. Reorder from the Order column using the up/down arrows or by typing the numeric value.
  • Action order: Actions execute top-to-bottom in the order you add them.
  • Delays: Units include minutes/hours. Use to prevent duplicate “fast follow” replies.
  • Active hours: Configure daily windows; invert to run only outside business hours.
  • Permissions aware: Assign/Label actions respect Roles & Permissions.
  • Testing tip: Start with a single condition/action, confirm it fires, then layer on complexity.

Frequently asked Relay questions

Do Relays respect roles & permissions?
Yes. Assign/Label actions follow your Roles & Permissions settings.
Can multiple Relays run on one inbound message?
Yes. If more than one Relay’s conditions match, every eligible Relay runs. Within a Trigger group they run in the Order you set on the Relays list. Reorder them from the Order column to control sequencing. See Order your Relays.
Can I include media in auto-replies?
Yes. Keep each file ≤ 10 MB (files > 500 KB are sent as links). See Media.
Can I pause without losing my setup?
Yes. Toggle Off to pause. Toggle On to resume.
How do I avoid duplicate automated replies?
Add a Delay to the Reply action, or narrow conditions (e.g., “Is new conversation”).
Does a Relay auto-reply mark the conversation as Read?
No. When a Relay sends an auto-reply, the conversation moves to Replied status (so it leaves the Unread filter), but it isn’t marked Read. A conversation is only marked Read when a teammate opens it in the Inbox. See Relays and conversation status.
What happens if I change the trigger on an existing Relay?
MessageDesk removes any conditions the new trigger can’t support. Before you save, the app shows a warning with a count (for example, “Changing the trigger will remove 1 incompatible condition from this relay”). Review the remaining conditions after switching triggers to make sure the Relay still behaves as expected.
Can I set up an out-of-office reply for just one person?
Yes, including on a shared line. Build the out-of-office Relay (Message Received, plus Active hours with Trigger outside of business hours enabled). Then add the Teammate Assigned condition set to the teammate who’s out. The auto-reply fires only for that person’s conversations. The rest of the team keeps working on the same line. To also cover brand-new threads no one has picked up yet, add Is unassigned conversation with OR. If the teammate has a dedicated line, scope by My phone number equals that line instead.

Troubleshooting

A Relay didn’t fire
  • Confirm it’s On (not paused).
  • Verify the Trigger is “Message Received”.
  • Temporarily loosen Conditions (switch AND to OR, remove a filter) to test.
Auto-reply sent multiple times
  • Add a Delay to your Reply action so back-to-back messages don’t both trigger an instant response.
Assign/Label didn’t apply
  • Check the target user/label permissions.
  • Remove long Delays while testing to see results immediately.
Unexpected timing
  • Review Active hours and the invert setting.
  • Check your workspace timezone.