Prompt
We're an early-stage startup. how do I track email delivery?
Latest observation
To track email delivery as an early-stage startup, you want visibility into what was sent, what was accepted by the recipient’s mail server, what was opened/clicked, and what bounced or got complained about.
1) Use a sending provider that exposes delivery events
If you’re sending product or transactional email, use a provider like:
- SendGrid
- Postmark
- Amazon SES
- Mailgun
- Brevo
These providers typically give you:
- Delivered
- Bounce
- Deferred / retrying
- Dropped
- Spam complaint
- Open / click tracking
2) Instrument webhook events
The best way to track email delivery is with webhooks from your email provider.
Set up a webhook endpoint in your app to receive events like:
sentdeliveredbouncedeferredopenclickunsubscribespamreport
Store these in your database keyed by:
- your internal
message_id - recipient email
- campaign / template
- timestamp
- provider event ID
That lets you build a delivery timeline per email.
3) Distinguish “sent” vs “delivered”
Important:
- Sent = your provider accepted the message
- Delivered = recipient’s mail server accepted it
- Open = recipient’s client loaded tracking content (not always reliable)
- Click = tracked link clicked
You usually cannot know with certainty that a human actually saw the email unless they click or reply.
4) Track bounces and complaints aggressively
These are the most important metrics for deliverability health.
Watch:
- Hard bounces: invalid address, reject permanently
- Soft bounces: mailbox full, temporary issues
- Spam complaints: bad for sender reputation
- Unsubscribes: less severe, but important
Act on them:
- suppress hard bounces immediately
- reduce sending to inactive users
- keep complaint rate low
- authenticate your domain with SPF/DKIM/DMARC
5) Add open/click tracking carefully
If you send marketing or lifecycle emails:
- enable open tracking and link tracking
- use a custom tracking domain if possible
- note that opens are less reliable now because of Apple Mail Privacy Protection and other privacy features
Clicks are generally more trustworthy than opens.
6) Create a delivery dashboard
At minimum, track:
- sent
- delivered
- bounced
- deferred
- opened
- clicked
- unsubscribed
- complained
Break down by:
- domain (
gmail.com,outlook.com, etc.) - template/campaign
- recipient segment
- time window
This helps you spot deliverability issues early.
7) Set up inbox placement monitoring
Delivery doesn’t always mean inbox placement. You can also use:
- seed/test inboxes across providers
- deliverability tools like Postmark’s insights, GlockApps, Mail-Tester, or Everest
Useful when you’re ramping volume or seeing poor engagement.
8) Make sure your email authentication is set
To improve tracking reliability and delivery:
- SPF
- DKIM
- DMARC
- optionally BIMI later
Without these, your emails are more likely to land in spam or be rejected.
9) Practical startup stack
A simple setup:
- Use Postmark or SendGrid for sending
- Receive webhook events
- Store events in Postgres
- Build a basic dashboard in your app or Metabase
- Alert on bounce/complaint spikes via Slack
10) Minimal implementation plan
- Choose a sending provider
- Turn on event webhooks
- Save each event to your DB
- Build per-message status from events
- Monitor bounces/complaints daily
- Add auth records (SPF/DKIM/DMARC)
- Add open/click tracking if needed
If you want, I can also give you:
- a recommended email tracking schema
- a sample webhook handler
- or the best provider for your use case.