Why a message did not send
Gro checks each message right before it hands it to the carrier or mail provider. When a check fails, the message is marked Failed with a reason you can read on the campaign’s recipients tab, the profile’s message history, or the flow’s execution log. Nothing is retried silently.
Held, then sent
Section titled “Held, then sent”| Reason | What it means |
|---|---|
| Safe hours | Marketing SMS outside your safe hours or the customer’s legal quiet hours. It waits and sends when the window opens. See Safe hours and quiet hours. |
Failed, not sent
Section titled “Failed, not sent”| Reason shown | What it means | What to do |
|---|---|---|
| SMS sender registration is not active | No approved sender for this account, or for the customer’s country. | Finish setup under Settings > SMS. See Setting up SMS. |
| Transactional copy has not been approved | The flow step or template is marked transactional and the current copy is pending or rejected. | Wait for approval, or untick Transactional to send it as marketing. Editing the copy restarts the review. |
| Campaigns cannot use a transactional template | The campaign is attached to a template flagged transactional. | Pick a marketing template. Campaigns are always marketing. |
| Profile is not subscribed | The customer has unsubscribed or was never opted in on this channel. | Nothing. This is the customer’s choice. |
| Profile has no phone number | SMS with nowhere to go. | Add a number in international format, or let Shopify sync it. |
| Cannot normalise phone | The number could not be turned into international format. | Fix the number on the profile. |
| Carrier or provider error | The carrier rejected it (bad number, filtered, sender not allowed). | Check the number and your sender. Repeated failures usually mean a registration issue. |
Where these checks run
Section titled “Where these checks run”The same checks run for every path: campaigns, flows, test sends and resumed sends. A message that was queued before a check would have failed is still stopped at delivery time, so changing a template’s copy or unticking Transactional takes effect on everything still in the queue.