Send.dev provides comprehensive email tracking to help you understand how recipients interact with your emails. Track opens, clicks, bounces, and more.
Tracking Overview
| Metric | Description | How It Works |
|---|---|---|
| Opens | When recipients open your email | Invisible tracking pixel |
| Clicks | When recipients click links | Link wrapping and redirects |
| Bounces | Failed deliveries | Bounce notifications from mail servers |
| Complaints | Spam reports | Feedback loops from ISPs |
Enabling Tracking
By default, both open and click tracking are enabled. You can control this per-email:
{
"from": "hello@mail.yourdomain.com",
"to": "user@example.com",
"subject": "Welcome!",
"html": "<p>Welcome to our platform!</p>",
"track_opens": true,
"track_clicks": true
}Plain Text Limitations
Open tracking requires HTML emails. Plain text emails cannot be tracked for opens.
Open Tracking
Open tracking works by inserting a tiny, invisible image (tracking pixel) into your HTML email. When the recipient's email client loads the image, an open is recorded.
Limitations
- Image blocking: Some email clients block images by default
- Preview panes: May trigger opens without full engagement
- Privacy features: Apple Mail Privacy Protection hides opens
- Plain text: Not available for plain text emails
Best Practices
- Use open rates as a trend indicator, not an exact metric
- Compare opens over time rather than relying on absolute numbers
- Consider open tracking as one of many engagement signals
Click Tracking
Click tracking works by wrapping links in your email with Send.dev tracking URLs. When clicked, we record the click and redirect to the original URL.
Example
Original link in your email:
<a href="https://yourdomain.com/welcome">Get Started</a>Transformed for tracking:
<a href="https://track.send.dev/c/abc123...">Get Started</a>When clicked:
- Request hits Send.dev tracking server
- Click is recorded with timestamp and metadata
- User is instantly redirected to original URL
Link Data
Each tracked click includes:
- Original URL
- Click timestamp
- User agent (browser/device info)
- Approximate location (from IP)
- Click count per link
Viewing Tracking Data
Via API
curl https://api.send.dev/v1/emails/email_01HXYZ123456789 \
-H "Authorization: Bearer sk_live_your_api_key"{
"id": "email_01HXYZ123456789",
"status": "delivered",
"from": "hello@mail.yourdomain.com",
"to": "user@example.com",
"subject": "Welcome!",
"created_at": "2025-01-13T10:30:00Z",
"delivered_at": "2025-01-13T10:30:03Z",
"opened_at": "2025-01-13T10:35:00Z",
"opened_count": 3,
"clicked_at": "2025-01-13T10:36:00Z",
"clicked_count": 2,
"clicks": [
{
"url": "https://yourdomain.com/welcome",
"count": 2,
"first_at": "2025-01-13T10:36:00Z",
"last_at": "2025-01-13T10:45:00Z"
}
],
"tracking": {
"opens_enabled": true,
"clicks_enabled": true
}
}Via Dashboard
- Go to Emails in your dashboard
- Click on any email to view details
- See opens, clicks, and engagement timeline
Delivery Statuses
Track the full lifecycle of each email:
| Status | Description | Webhook Event |
|---|---|---|
queued | Email accepted, waiting to send | - |
sending | Being sent to mail server | - |
sent | Handed off to receiving server | email.sent |
delivered | Confirmed in recipient's inbox | email.delivered |
opened | Recipient opened the email | email.opened |
clicked | Recipient clicked a link | email.clicked |
bounced | Delivery failed | email.bounced |
complained | Marked as spam | email.complained |
Bounce Types
| Type | Description | Action |
|---|---|---|
| Hard bounce | Permanent failure (invalid address) | Remove from list |
| Soft bounce | Temporary failure (full mailbox) | Retry later |
Bounce Response
{
"id": "email_01HXYZ123456789",
"status": "bounced",
"bounce": {
"type": "hard",
"code": "550",
"message": "User unknown",
"diagnostic": "550 5.1.1 The email account does not exist",
"bounced_at": "2025-01-13T10:30:05Z"
}
}Spam Complaints
When a recipient marks your email as spam, major ISPs notify us through feedback loops. Complaints are serious and affect your sender reputation.
{
"id": "email_01HXYZ123456789",
"status": "complained",
"complaint": {
"feedback_type": "abuse",
"complained_at": "2025-01-13T12:00:00Z"
}
}Handle Complaints
Always remove complaining recipients from your lists immediately. High complaint rates can result in account suspension.
Privacy Considerations
Apple Mail Privacy Protection
Apple Mail Privacy Protection (iOS 15+, macOS Monterey+) pre-fetches tracking pixels, which can:
- Inflate open rates
- Make open times inaccurate
- Mask actual user engagement
Recommendations:
- Don't rely solely on open rates
- Use click tracking for more accurate engagement data
- Look at reply rates and conversions
GDPR and Privacy
- Tracking data is personal data under GDPR
- Include tracking disclosure in your privacy policy
- Provide opt-out mechanisms where required
- Consider offering tracking-free options for privacy-conscious users
Disabling Tracking
For sensitive emails where tracking is inappropriate:
{
"from": "legal@mail.yourdomain.com",
"to": "customer@example.com",
"subject": "Legal Notice",
"html": "<p>Important legal information...</p>",
"track_opens": false,
"track_clicks": false
}Use cases for disabling tracking:
- Legal/compliance communications
- Password reset emails
- Privacy-sensitive content
- Regulated industries (healthcare, finance)
Analytics Dashboard
Your Send.dev dashboard provides aggregate analytics:
- Delivery rate: Percentage delivered vs. sent
- Open rate: Percentage opened vs. delivered
- Click rate: Percentage clicked vs. delivered
- Bounce rate: Percentage bounced vs. sent
- Complaint rate: Percentage complained vs. delivered
Monitor these metrics regularly to maintain healthy sender reputation.