Skip to content

Deliveries

A delivery is a single attempt to send an event to one contact via one channel. Every API call creates one or more deliveries that you can track.

Delivery statuses

StatusMeaning
queuedAccepted, waiting to be processed
sentHanded off to provider
deliveredProvider confirmed handoff (email delivered ≠ inbox)
failedDelivery failed (see reason)
suppressedNot sent (contact opted out or bounced)

Viewing deliveries

Check the Activity page in your dashboard to see:

  • All recent deliveries
  • Status and timestamps
  • Channel and template used
  • Error messages for failures

What to do when...

Delivery is queued too long

Likely causes:

  • High volume causing queue delays
  • Provider rate limits

What to do:

  1. Check the Activity log for progress
  2. If it remains queued unusually long, contact support with the delivery ID

Delivery is failed

Likely causes:

  • Invalid email address or phone number
  • Provider rejected the message
  • Template rendering error

What to do:

  1. Check the error message in Activity log
  2. Verify the contact's email/phone is valid
  3. Check your template for syntax errors
  4. Review the error details

Delivery is suppressed

Likely causes:

  • Contact previously bounced (hard bounce)
  • Contact marked as spam complaint
  • Contact unsubscribed

What to do:

  1. Check the suppression reason in Activity log
  2. If legitimate contact, have them re-subscribe
  3. Remove invalid addresses from your system

Delivery shows sent but user didn't receive (email)

Likely causes:

  • Spam folder
  • Email provider delays
  • DKIM/SPF not configured

What to do:

  1. Ask user to check spam folder
  2. Verify domain authentication (see Email)
  3. Check the Activity log for any errors

Delivery response

When you send a notification, the API returns delivery IDs:

json
{
  "success": true,
  "deliveries": [
    { "email": "550e8400-e29b-41d4-a716-446655440000" }
  ]
}

See Send API for the full response format.

Multi-contact deliveries

Sending to multiple contacts creates multiple deliveries:

json
{
  "success": true,
  "deliveries": [
    { "email": "550e8400-e29b-41d4-a716-446655440000" },
    { "email": "550e8400-e29b-41d4-a716-446655440001" },
    { "email": "550e8400-e29b-41d4-a716-446655440002" }
  ]
}

Each delivery is independent — one can fail while others succeed.

Common pitfalls

  • Checking status too soonqueuedsentdelivered takes seconds
  • Ignoring suppressed — Clean your contact list of bounced addresses
  • Missing DKIM — Causes deliverability issues, not immediate failures

See also

Released under the MIT License.