Skip to main content

Resolve message-delivery and consent problems

When a message doesn't land, the answer is almost always in one of two places: the delivery status printed under the message in the conversation thread, or the SMS policy section of the Customer details panel. Start with the symptom:

  • The composer is disabled and shows a reason. The reason names the problem. "Recipient is suppressed for SMS" means the customer opted out. "Customer-care SMS consent basis is required" means no consent is on file. Setup reasons ("Shop does not have a default Legal Sender", "Shop email is not set up") mean the shop can't send on that channel at all; see the shop-side sections below.
  • A message shows "failed" in the thread. The send was rejected. For texts, check the number and the SMS-capable flag. For email, it usually bounced.
  • A message shows "sent" but the customer says nothing arrived. The carrier accepted it but never confirmed delivery. See "Sent but never delivered".
  • A customer who used to get texts stopped getting them. They almost certainly replied STOP. See "The customer opted out".
  • The Inbox says "Set up texting". SMS isn't configured for the shop yet; the button there opens the setup checklist.

Sending itself is covered in Send text and email messages; this page is for when sending doesn't work.

Read the delivery status in the thread

Every outbound message in the Inbox shows its status in the small line under the bubble, next to the channel and time: queued, sending, sent, delivered, or failed. The status updates live as the provider reports back, so a text typically walks from queued to delivered within seconds.

The distinction that matters is sent versus delivered. Sent means the carrier accepted the message; delivered means the customer's phone (or mail server) confirmed receipt. Failed is a definitive rejection. A message can also sit at sent forever with no further word, which is how carrier filtering and switched-off phones look from our side.

Inbound messages don't carry a status; only your own sends do.

Open a conversation in the Inbox and select the person icon labeled Customer details in the utility rail on the right edge of the screen. The panel's SMS Policy section shows, for the phone number the conversation replies to:

  • Status: "Allowed", or the exact reason sending is blocked.
  • Consent: the recorded consent basis, or "None recorded".
  • Suppression: whether the number is suppressed, and why (for example "Customer sent STOP keyword").
  • The last few consent events, newest first.

The section fills in when the conversation's reply channel is SMS; on an email-only conversation it shows "No SMS policy status loaded."

Consent is tracked per person, per shop. Every phone owned by that person shares one Service texts setting and one Marketing texts setting; another person on the same account remains independent, and an opt-out at one shop doesn't affect a sibling shop. The switches live in the Edit customer dialog's Text messages section (an additional person's number carries its switches in that person's edit dialog); see Manage customer communication details, Additional people, labels, and credit settings.

The customer opted out

When a customer texts STOP (or STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT) as the entire message, the person is suppressed immediately. We send an automatic confirmation ("You have been opted out of texts. Reply START to resume or HELP for help."), record the opt-out in the consent history, and block every future text to every phone that person owns. The keyword and the auto-reply both appear in the conversation thread, so scroll up: an unexplained stop in texting usually has a one-word STOP sitting right there.

The customer can text START (or UNSTOP) to your shop's number. That lifts the suppression, records a fresh opt-in, and sends them a confirmation. If they give consent to a staff member another way, staff can record the fresh opt-in with the appropriate Service texts or Marketing texts switch in that person's editor. The audit history keeps both the STOP and the new opt-in.

A HELP or INFO reply doesn't change anything; the customer just gets an automatic message explaining what the texts are for and how to opt out or resume.

The exact number that sent STOP remains in consent history, but switching to another number owned by that person cannot bypass it. Other people on the account keep their own consent; see Communicate with multiple people on a Customer.

Texting a number also requires a recorded opt-in, and the composer is blocked with "Customer-care SMS consent basis is required" until one exists. Consent can be recorded several ways:

  • The customer books through your online booking form and checks the SMS consent box (Manage online bookings, walk-ins, and no-shows).
  • A web chat visitor accepts SMS contact on the chat widget form, and you link them to a customer.
  • The customer texts START to your shop's number.
  • Staff record consent collected elsewhere with the appropriate Service texts or Marketing texts switch in that person's editor.

A STOP always outranks an older form submission; resuming requires a fresh opt-in from the person, recorded either by START or by staff.

The text failed

A failed text with a correct setup usually comes down to the number itself:

  • Wrong number. Fix the phone Contact Point from the contact's row menu on the customer detail page (see Manage customer communication details), then resend. The old messages stay in the thread with their failed status; nothing is retried automatically.
  • Landline or fax line. A phone that can't receive texts should have SMS capable unchecked on its Contact Point. That takes it out of the Inbox's recipient picker and out of estimate and invoice sends by text (Send Estimates, Inspections, and Invoices). A failed text to a number that turns out to be a landline is the cue to uncheck it.

The thread shows the status but not the carrier's error code. We store the provider's error detail on the message, so if a send fails and the number looks right, contact the BayEngine team and we can read the carrier's actual reason.

Sent but never delivered

A text stuck at "sent" was accepted by the carrier but never confirmed on the handset. Common causes: the phone is off or out of coverage, the customer blocked your shop's number, or the carrier filtered the message. Your shop sends from a 10DLC-registered business number, which is the main defense against filtering, but no registration makes it impossible, and messages with links (a Customer Portal link, for example) draw more scrutiny than plain text. The app has no way to see filtering; from our side it is indistinguishable from a phone in a drawer.

If one customer reports missing texts that show delivered, the answer is on their phone: your number blocked, or the thread filtered into an unknown-senders folder. If several customers report missing texts around the same time, contact the BayEngine team with examples.

Email bounced or won't send

A bounced email shows failed in the thread, with the bounce type from the mail provider. Fix the address on the customer's email Contact Point and resend. A bounce doesn't suppress the address: email has no STOP-style consent state, so future sends aren't blocked. A spam complaint (the customer marked your email as junk) also shows as failed.

If the email composer itself is disabled, the reason names a shop-side problem: "Shop email is not set up" means an authorized User can open Configurations → Customer Experience → Communications and select Set up email. "Postmark email is not configured" means BayEngine's email service is unavailable for that environment and the BayEngine team must finish the provider setup. Until shop email is ready, booking confirmation emails don't go out either.

The shop can't text at all

When SMS was never finished for the shop, the Inbox's empty state says Set up texting with the exact blocked reason, and an Open SMS settings button that lands on the Communications tab of Shop settings. That page walks the whole chain as a checklist: assign a Legal SMS Sender (the real business identity your texts are registered under), complete its details, add the shop number, get the 10DLC brand and campaign approved, and assign the number to the campaign. The page shows a Ready badge when every step is green.

Two of those steps are not self-serve. The BayEngine team verifies the Legal SMS Sender's company details and registers the brand with the carriers, and carrier approval takes time, typically days rather than minutes. The checklist shows the live registration status (pending, approved, rejected, or suspended); if a step sits at pending longer than expected or shows rejected, contact the team.

What to send support

For anything this page doesn't resolve, contact the BayEngine team as described in Getting support and reviewing updates. For a delivery problem, include:

  • The customer's phone number or email address, exactly as it appears on the Contact Point
  • The message text and when it was sent
  • The status shown under the message in the thread
  • What the SMS Policy section of the Customer details panel shows

We can see two things the app doesn't surface: the carrier's raw error detail on a failed message, and the full consent event history for a number. Between those, most delivery mysteries have a short answer.