Skip to main content
Every state change in your account — a message getting delivered, a contact unsubscribing, a domain passing verification — produces an event. Events are the single source of truth behind both webhooks and the activity you see in the dashboard.

Events vs. webhooks vs. messages

These three are easy to conflate:
Purpose
MessagesThe current state of one send. Mutable — its status changes over time.
EventsAn immutable record that a specific transition happened, with a timestamp. A message generates several events over its lifetime.
Webhook endpointsA push delivery mechanism for events to your server, as they’re created.
If your webhook endpoint goes down for a day, you don’t lose data — query List events for the gap once it’s back up.

Querying events

# Every event for one message, oldest first in the underlying log
curl "https://api.pulsewave.dev/v1/events?message_id=msg_3p2k9q" \
  -H "Authorization: Bearer pw_live_8f2k9q3m1n7r5t6y4u2i0o8p"

# Every bounce in the last page
curl "https://api.pulsewave.dev/v1/events?type=message.bounced" \
  -H "Authorization: Bearer pw_live_8f2k9q3m1n7r5t6y4u2i0o8p"

Retention

Events are retained for 90 days through the API. For longer-term analytics, consume them via webhooks and store them in your own system as they arrive.