Message delivery failures appear asDocumentation Index
Fetch the complete documentation index at: https://docs.digifist.com/llms.txt
Use this file to discover all available pages before exploring further.
FAILED status on individual messages in campaign analytics, automation activity logs, or Inbox conversation threads. Each failure has a specific error reason attached to it — identifying the error reason is the first step to resolving the underlying issue and preventing it from affecting future sends.
What this covers
- Where to find delivery failure details
- All common error types with resolution steps
- How to prevent each error type in future sends
- What to do when the error is not one of the common types
Step 1 — Find the failing messages
Delivery failures surface in three places depending on what triggered the send: Campaign failures — Go to Campaigns → [Campaign Name]. The analytics view shows theFAILED count. Click into the failed message detail to see per-message error reasons.
Automation failures — Go to Automations → [Automation Name] → Activity. Find the customer whose message failed and expand their node execution history. The FAILED Action Node shows the specific error reason.
Inbox failures — In the conversation thread, failed messages are marked with a failure indicator. The error reason is visible by hovering or expanding the message status.
Common error types and resolutions
CUSTOMER_IS_NOT_OPTED_IN
CUSTOMER_IS_NOT_OPTED_IN
What it means: The customer’s
marketing_state is not SUBSCRIBED at the time the message was dispatched. Galantis attempted to send to a customer who has not explicitly opted into WhatsApp marketing.Common causes:- A customer’s consent state changed from
SUBSCRIBEDtoUNSUBSCRIBEDbetween when the campaign audience was estimated and when the send ran — for example, the customer replied STOP to a previous message in the gap between scheduling and dispatch - A manually imported list included customers without verified
SUBSCRIBEDconsent - A segment was built without a
Consent status = Yesrule, and some segment members have non-subscribed consent states
- For the current failed send: the message cannot be retroactively delivered — the customer was correctly excluded per WhatsApp policy
- For future sends: add
Consent status = Yesto all segments used as campaign audiences; review imported lists to ensure all entries have verified consent; check the Audience → Contacts → [Customer] profile to confirmmarketing_statebefore investigating further
marketing_state field. If it shows UNSUBSCRIBED, the customer has opted out. If it shows NOT_SUBSCRIBED or UNKNOWN, they never provided consent.This error is a compliance enforcement action, not a platform bug. Galantis is working correctly when it blocks sends to non-subscribed customers. The resolution is to ensure your audience targeting only includes
SUBSCRIBED customers.CUSTOMER_IS_MISSING_CALLING_CODE
CUSTOMER_IS_MISSING_CALLING_CODE
What it means: The customer’s phone number in Galantis does not include a country calling code (e.g.,
+52 for Mexico, +971 for UAE). WhatsApp requires internationally formatted phone numbers for message delivery.Common causes:- Customers entered their phone number at Shopify checkout without the country code (e.g.,
5512345678instead of+525512345678) - A phone number field in Shopify was not configured to require international format
- A customer data import included phone numbers without calling codes
- Go to Audience → Contacts → [Customer Name] and check the
phone,phone_country_code, andphone_calling_codefields - The phone number in Shopify must be corrected — Galantis syncs phone data from Shopify, so fixing it in Galantis only would be overwritten on the next sync
- Open Shopify Admin → Customers → [Customer] and update the phone number to include the correct international dialing prefix
- Save the customer record in Shopify — the
customers/updatewebhook fires and propagates the corrected number to Galantis
INSUFFICIENT_CREDITS
INSUFFICIENT_CREDITS
What it means: Your Galantis workspace ran out of message credits during the send. Messages dispatched after the credit balance reached zero failed with this error.Identifying the scope: Check your credit balance in Billing → Overview. If the balance is at or near zero, insufficient credits is the likely cause for recent failures. Compare the failed message count against your remaining credit balance at the time of the send.How to resolve:
- Top up your credit balance or upgrade your plan via Billing
- Determine whether the failed messages need to be re-sent — for campaigns, assess whether the unsent recipients are worth a follow-up send once credits are restored; for automations, the automation will resume processing new enrollments once credits are available, but already-failed messages for past enrollments will not auto-retry
Outside 24-hour window — no template used
Outside 24-hour window — no template used
What it means: An agent in the Inbox attempted to send a free-form session message to a customer, but the 24-hour conversation window had closed. Session messages are only permitted within an active window.How to resolve:
- The agent must use an approved template to re-engage the customer outside the window
- In the Inbox, select an approved template from the template picker to send the message
Template not approved
Template not approved
What it means: The template assigned to the campaign or automation Action Node is not in
APPROVED status. The message could not be sent because WhatsApp does not accept unapproved template sends.How to resolve:- Check the template status in Templates → [Template Name]
- If
PENDING_APPROVAL— wait for Meta’s review to complete - If
REJECTED— review the rejection reason and fix the template; see Template Rejection - If
PAUSED— the template was previously approved but has been paused by Meta due to quality issues; see Templates — Quality
APPROVED. For automations, the automation will resume sending correctly once the template is restored to APPROVED — no re-activation is needed.Errors not listed above
If the error reason on a failed message does not match any of the above, it is typically a Meta API error code that Galantis surfaces directly. These are less common and often transient:- Transient network or API errors — Meta API errors with a 5xx code or a
TEMPORARY_FAILUREindicator. These typically self-resolve — if the automation or campaign retried the send, check whether subsequent attempts succeeded. - Recipient phone number not on WhatsApp — The customer’s phone number is valid internationally but is not registered on WhatsApp. This is a data quality issue — the customer cannot be reached on WhatsApp at this number.
- Rate limit exceeded — The phone number’s per-period message throughput limit was reached. High-volume campaigns can hit this limit. The send will typically recover in the next batch cycle as the rate limit window resets.
Checking a customer’s delivery eligibility
Before investigating a delivery failure in depth, a quick eligibility check on the customer’s profile often identifies the root cause immediately:Open the contact profile
Go to Audience → Contacts and search for the customer whose message failed.
Check marketing_state
Confirm
marketing_state = SUBSCRIBED. Any other state means the customer cannot receive campaign or automation messages.Check phone number fields
Confirm
phone, phone_country_code, and phone_calling_code are all populated and correctly formatted. A missing phone_calling_code is the cause of CUSTOMER_IS_MISSING_CALLING_CODE failures.Related guides
- Audience — Consent & Opt-outs — Understanding and managing customer consent states
- Audience — Contacts — Phone number fields and how they sync from Shopify
- Billing — Conversations — Credit consumption and balance management
- Compliance — Conversation Window — The 24-hour window rule for session messages
- Debugging — Using Nightwatch for delivery failures not covered by the above