Skip to main content

delivery operations

Why ‘Message Sent’ Does Not Mean the Customer Received It

Queued, sent, delivered, undelivered, failed, replied, and opted out are different states. Revenue Recovery needs to reconcile them before deciding what happens next.

RelayHitch4 min read

When an application says “message sent,” it often means the provider accepted the request. The customer’s carrier or mail server may not have accepted it yet, and the intended person may never see it.

That distinction changes follow-up. If the system treats provider acceptance as success, it may wait on a customer who never received anything or send repeated messages to a destination known to be invalid.

The delivery states are different facts

Exact names vary by provider, but a useful state model distinguishes:

Proposed: The system prepared an action but has not called a provider.

Queued: The provider accepted the request for processing.

Sent: The provider handed the message to a downstream network or attempted delivery.

Delivered: The downstream network returned a delivery signal. This still does not prove the person read or understood the message.

Undelivered: The network could not deliver the message. The error may be permanent or temporary.

Failed: The provider could not process or send the request.

Replied: The customer sent new information. Stop the sequence and handle it.

Opted out: The destination is suppressed for the applicable channel and use case.

The invoice follow-up guide shows where these states fit with source and consent checks.

Reconcile callbacks to the original action

A provider status callback needs a stable message identifier. The application should map that identifier to one action, one company, one customer destination, and one opportunity. Tenant scoping is essential: a callback for one business must never update another business’s action.

Callbacks can arrive out of order or more than once. An old “sent” event must not overwrite a newer “delivered” or “failed” terminal state. Duplicate callbacks should be idempotent.

Store the provider status, time, error code, and the transition that was accepted. Avoid copying message bodies or unnecessary customer details into a general delivery log.

Permanent and temporary failures need different treatment

A malformed or disconnected number is unlikely to succeed on retry. Suppress the destination and create a data-quality task. A short provider outage may justify a bounded retry, but only if the source record, consent, limits, and stop conditions are rechecked first.

Do not retry forever. Define a cap and an escalation path. Repeated failure is information about the channel, not a reason to increase pressure.

A reply outranks the schedule

A customer reply changes the business state even if the provider never sent a perfect delivery callback. Stop any future steps and route the reply.

The same applies to an opt-out. When a provider handles an Advanced Opt-Out confirmation, the application should record the suppression without sending a duplicate confirmation. A later generic START can remove a sender-level block, but it does not by itself establish disclosed, invoice-specific Recovery consent.

Delivery does not establish attribution

Even a delivered reminder is an activity signal. To claim a recovery outcome, later source evidence must show the matching invoice payment or commercial conversion, and the business’s attribution rule must connect that outcome to the action conservatively.

A useful funnel separates:

  • action proposed;
  • provider request accepted;
  • delivered or failed;
  • customer reply;
  • source outcome observed; and
  • attributable recovered value.

Combining these into “successful messages” hides the exact failure an operator needs to fix.

What the dashboard should show

Operators need counts and rates by state, provider error family, category, and time—not raw customer content. Useful questions include:

  • What percentage of attempted actions reached a terminal delivery state?
  • Which destinations had permanent failures?
  • How long do callbacks take to arrive?
  • Are events arriving out of order?
  • How many delivered actions received a reply?
  • How many opportunities later produced a supported outcome?

If data is unavailable, show unavailable. Do not turn missing callbacks into delivered messages or zero failures.

Test status reconciliation directly

Regression tests should prove duplicate callbacks do not create duplicate transitions, terminal states do not regress, tenant mismatches are rejected, unknown provider IDs do not update arbitrary rows, and delivery-disabled mode makes no outbound provider call.

Also test the awkward sequence: the customer replies or opts out before a delayed status callback arrives. The reply or suppression must continue to block future actions.

Detection remains separate

The free Revenue Leak Scan never sends a message, so it does not depend on a delivery state. It identifies candidate opportunities from authorized source records and stops there.

If paid Recovery is later activated, delivery reconciliation becomes part of the evidence and safety boundary. “Sent” is never treated as “received,” and neither state is treated as “recovered revenue.”

Run a free Revenue Leak Scan to review possible stalled revenue without enabling customer outreach.