Message statuses
Every message sent through Zapster goes through a lifecycle with well-defined statuses. The table below lists all the possible ones:
Once a message reaches
sent, failed, or canceled, the status is final. It does not change again.
Timestamps
Beyond the status, each message carries timestamps that show what happened and when. Not all of them are filled in on every message: it depends on the send type and on what happened afterward.About delivery and read receipts
Thedelivered_at and read_at fields depend on factors outside Zapster’s control:
- If the recipient turned off read receipts in their WhatsApp settings,
read_atwill never be filled in. - If the recipient’s phone has no internet,
delivered_atmay lag until they come back online. - These fields do not change the message status. Once the status is
sent, it stayssent. Delivery and read are extra pieces of information, recorded only in the timestamps.
delivered_at and read_at to build delivery and read reports, but do not rely on them for critical flows. Not every recipient will generate these events.
When a message fails
If a message has the statusfailed, the errors field carries a list with the details of what went wrong. The error structure varies a bit depending on the instance type.
For official (WABA) instances, errors includes Meta’s error code and a direct link to their documentation:
- 131047: The 24-hour window has expired. The recipient did not reply in the last 24h and you tried to send a non-template message.
- 132000: Template not found. Check that the template name and language are correct.
- 131026: The number is not on WhatsApp or is invalid.
- The instance is offline (the phone lost connection or the session expired).
- The number is blocked or does not exist on WhatsApp.
- The WhatsApp send limit was reached.
errors field carries enough information for you to understand what happened and decide whether it is worth trying again.