Skip to main content

What the statuses mean

The word "status" in the cabinet means two different things, and almost every question about a report comes from mixing them up.

The status of a campaign answers "has the cabinet finished handing this campaign over". The status of a message answers "what happened to this one message on the way to this one phone". A campaign can show "Completed" while a third of its messages are still on their way, and that is normal.

The four buckets

Whatever the operator reports, the cabinet sorts it into four groups. The report, the campaign card and the progress bar all use the same four.

BucketWhat it meansIs it final
Pending deliveryAccepted, not handed over yet — waiting, being retried, or held backNo
SentHanded to the operator, no answer about delivery yetNo
DeliveredThe operator confirmed the phone received itYes
FailedEverything else: rejected, expired, no route, wrong number, unknownYes

The names in the table are the ones on the summary cards above a report and in the totals strip under its rows. The hint with the breakdown by delivery status calls the first bucket "Awaiting sending". A line for a single message carries a badge that names the same buckets in its own words: "Waiting for sending", "Sending…", "Delivered", "Error".

Two things follow from this table, and both surprise people.

"Sent" is not good news. It means the message left and nothing has come back. It will become either "Delivered" or "Failed" later. A campaign that stays at "Sent" for a long time is usually a campaign to numbers whose operator does not send delivery reports.

"Failed" is a leftover, not a diagnosis. Everything the cabinet cannot count as "Pending delivery", "Sent" or "Delivered" lands here. The reason for a specific message is in the campaign card, not in the bucket.

In the totals, the "Failed" figure is arithmetic

The totals strip under a report counts the remainder: whatever is not "Pending delivery", "Sent" or "Delivered" is shown as "Failed". So the reason for one particular message is worth looking up in the campaign card, where it is written out.

What "Sent" means in the totals

There is one more trap in aggregates. In the list of campaigns, one line is one campaign, not one message. While a campaign is "Sending in progress" or "Completed", the badge of its line is chosen by priority, not by majority:

  1. anything still "Pending delivery" keeps the line on the campaign's own status, "Sending in progress" or "Completed";
  2. otherwise anything delivered makes it "Delivered";
  3. otherwise anything sent makes it "Sending…";
  4. only then does it become "Error".

In any other state the line shows the status of the campaign itself.

A campaign of ten thousand messages of which one is delivered and the rest failed is shown as "Delivered" in that list. This is why the count of campaigns and the count of messages never add up to each other, and why the campaign card exists.

A "Completed" or "Deleted" campaign may show as fully delivered

Once a campaign is "Completed" or "Deleted", the statuses of its messages may no longer be kept. The campaign card then draws the whole campaign as delivered: the chart follows the state of the campaign itself rather than the states of its messages.

Parts against messages

A message longer than one part travels as several parts, and each part gets its own status from the operator. The cabinet keeps both counts:

  • the reports count messages — one line is one message to one number;
  • the analytics count both, side by side: messages and parts.

Money follows the parts. Delivery follows the parts too: a long message counts as delivered when its parts arrive, and it is the reason a report can show "Partially delivered" for something that looks like a single SMS on the phone.

What the "Read" column shows

There is a fifth bucket, Read, and it is filled by the channels that report reading — Viber is one of them.

With SMS the operator confirms that the phone received the message, and that is what the "Delivered" column shows. The "Read" column keeps its own count for the channels that have one, so next to a full "Delivered" column it stays at zero for ordinary SMS — that is SMS working exactly as SMS works. The read figure is also never allowed to exceed the delivered figure.

The full list of codes

Every status the operator can return has a number and a name of its own, from QUEUED to SIM FULL. The complete numbered table lives in the API section of this documentation, on the page about message statuses: that page explains each code, and this one explains the four buckets the codes are folded into.