Email Tracking & Analytics

TrackPost provides comprehensive email tracking so you can monitor engagement, delivery, and performance in real-time.

Table of Contents

What Can You Track?

Engagement Metrics

  • Opens - When recipients open your emails
  • Clicks - When recipients click links in your emails
  • Open Rate - Percentage of delivered emails opened
  • Click Rate - Percentage of opens that clicked
  • Click-to-Open Rate - Clicks per unique open

Delivery Metrics

  • Sent - Emails successfully queued
  • Delivered - Emails successfully delivered to recipient server
  • Bounced - Emails that couldn’t be delivered
  • Complained - Emails marked as spam
  • Delivery Rate - Percentage of sent emails delivered

Email Events

EventDescriptionTrigger
sentEmail queued for deliveryWhen you call send API
deliveredEmail delivered to recipientWhen recipient server accepts
openedRecipient opened emailWhen tracking pixel loads
clickedRecipient clicked linkWhen tracked link clicked
bouncedEmail bouncedHard or soft bounce from recipient
complainedMarked as spamWhen recipient clicks “spam”
droppedEmail not sentDue to suppression or invalid address

Enabling Tracking

Default Settings

By default, all emails have tracking enabled:

{
  "track_opens": true,
  "track_clicks": true
}

Disable Tracking

For privacy-sensitive emails, disable tracking:

curl -X POST https://api.trackpost.de/v1/emails \
  -H "Authorization: Bearer tp_live_your_key" \
  -d '{
    "to": "[email protected]",
    "from": "[email protected]",
    "subject": "Confidential",
    "html": "<p>Private message</p>",
    "track_opens": false,
    "track_clicks": false
  }'

Disable Click Tracking Only

Keep open tracking but disable link tracking:

{
  "track_opens": true,
  "track_clicks": false
}

How Tracking Works

Open Tracking

TrackPost adds an invisible 1x1 pixel image to HTML emails:

<img src="https://api.trackpost.de/v1/track/open/abc123" 
     width="1" height="1" alt="" />

When the email client loads this image, we record an open.

Info

Open Tracking Limitations:

  • Only works in HTML emails
  • Blocked by some email clients (Apple Mail privacy, Outlook)
  • Requires images to be loaded by recipient
  • Counts multiple opens from same recipient

Click Tracking

TrackPost replaces links with tracking URLs:

Original:

<a href="https://yourapp.com/dashboard">Go to Dashboard</a>

With Tracking:

<a href="https://api.trackpost.de/v1/track/click/abc123?url=https%3A%2F%2Fyourapp.com%2Fdashboard">
  Go to Dashboard
</a>

When clicked, we redirect to your URL and record the click.

Disable tracking for specific links:

<a href="https://yourapp.com/unsubscribe" data-track="false">Unsubscribe</a>

Viewing Analytics

Dashboard

  1. Log in to TrackPost Dashboard
  2. Navigate to Analytics

Dashboard Sections:

  • Overview - Key metrics at a glance
  • Emails - List of all emails with status
  • Templates - Performance by template
  • Domains - Metrics by sending domain
  • Exports - Download detailed reports

Metrics Available

Overview Cards:

  • Total emails sent (this month)
  • Delivery rate
  • Open rate
  • Click rate
  • Bounce rate
  • Complaint rate

Charts:

  • Emails over time (daily/weekly/monthly)
  • Open rates by template
  • Click rates by link
  • Geographic distribution
  • Device/client breakdown

Email Details

Click any email to see:

{
  "id": "msg_abc123",
  "to": "[email protected]",
  "subject": "Welcome!",
  "status": "delivered",
  "sent_at": "2025-01-15T10:30:00Z",
  "delivered_at": "2025-01-15T10:30:02Z",
  "opened_at": "2025-01-15T10:35:15Z",
  "opens_count": 3,
  "clicks": [
    {
      "url": "https://yourapp.com/activate",
      "clicked_at": "2025-01-15T10:36:20Z",
      "ip": "192.168.1.1",
      "user_agent": "Mozilla/5.0..."
    }
  ],
  "bounce_reason": null,
  "complaint_feedback": null
}

API Analytics

Get Email Stats

curl "https://api.trackpost.de/v1/analytics/emails?from_date=2025-01-01&to_date=2025-01-31" \
  -H "Authorization: Bearer tp_live_your_key"

Response:

{
  "success": true,
  "data": {
    "total": {
      "sent": 15000,
      "delivered": 14850,
      "bounced": 120,
      "complained": 30,
      "opened": 6500,
      "clicked": 2100
    },
    "rates": {
      "delivery_rate": 99.0,
      "open_rate": 43.8,
      "click_rate": 32.3,
      "bounce_rate": 0.8,
      "complaint_rate": 0.2
    },
    "by_date": [
      {
        "date": "2025-01-15",
        "sent": 500,
        "delivered": 495,
        "opened": 220,
        "clicked": 70
      }
    ],
    "by_template": [
      {
        "template_id": "welcome_email",
        "template_name": "Welcome Email",
        "sent": 5000,
        "open_rate": 65.2,
        "click_rate": 45.3
      }
    ]
  }
}

Get Template Performance

curl "https://api.trackpost.de/v1/analytics/templates/welcome_email" \
  -H "Authorization: Bearer tp_live_your_key"

Export Data

# CSV export
curl "https://api.trackpost.de/v1/analytics/export?format=csv&from_date=2025-01-01" \
  -H "Authorization: Bearer tp_live_your_key" \
  --output analytics.csv

Understanding Metrics

Benchmarks

Industry Averages for Transactional Emails:

MetricGoodExcellent
Delivery Rate> 97%> 99%
Open Rate> 40%> 60%
Click Rate> 10%> 20%
Bounce Rate< 2%< 1%
Complaint Rate< 0.1%< 0.05%

By Email Type:

TypeOpen RateClick Rate
Welcome emails50-70%20-40%
Order confirmations60-80%30-50%
Password resets70-90%50-70%
Notifications30-50%5-15%
Newsletters20-40%2-5%

Interpreting Your Data

High Open Rate, Low Click Rate:

  • Subject line is good (opens)
  • Content or CTA needs improvement (clicks)

Low Open Rate:

  • Subject lines need work
  • Sender name not recognizable
  • Emails going to spam/promotions

High Bounce Rate:

  • List quality issues
  • Need email verification
  • Check for typos in addresses

High Complaint Rate:

  • Unwanted emails
  • Poor unsubscribe process
  • Mismatch with expectations

Advanced Analytics

TrackPost shows which links get clicked:

{
  "links": [
    {
      "url": "https://yourapp.com/dashboard",
      "clicks": 150,
      "unique_clicks": 120
    },
    {
      "url": "https://yourapp.com/settings",
      "clicks": 45,
      "unique_clicks": 40
    }
  ]
}

Use cases:

  • A/B test different CTAs
  • Optimize link placement
  • Remove underperforming links

Geographic Data

See where opens and clicks come from:

{
  "geography": {
    "US": { "opens": 3500, "clicks": 1200 },
    "UK": { "opens": 800, "clicks": 250 },
    "DE": { "opens": 600, "clicks": 180 }
  }
}

Device/Client Breakdown

Understand how recipients view emails:

{
  "clients": {
    "Gmail": 45,
    "Apple Mail": 25,
    "Outlook": 15,
    "Yahoo": 8,
    "Other": 7
  },
  "devices": {
    "Mobile": 60,
    "Desktop": 35,
    "Web": 5
  }
}

Best Practices

  1. Monitor Regularly - Check analytics weekly
  2. Set Baselines - Establish your normal rates
  3. Investigate Anomalies - Sudden drops need attention
  4. A/B Test - Test subject lines, content, CTAs
  5. Segment Analysis - Compare different user groups
  6. Act on Bounces - Clean your lists regularly
  7. Review Complaints - Understand why users mark spam

Troubleshooting

Tracking Not Working

Open tracking:

  • Check track_opens is set to true
  • Email must be HTML (not plain text)
  • Some clients block tracking pixels by default

Click tracking:

  • Check track_clicks is set to true
  • Links must be valid URLs
  • Some security tools may strip tracking

Discrepancies

Opens higher than deliveries:

  • Multiple opens by same user
  • Forwards to other people
  • Preview pane opens

Clicks higher than opens:

  • Some clients don’t load images (no open tracked)
  • But links still work

Dashboard different from webhooks:

  • Timing differences (webhooks are real-time)
  • Webhook processing delays on your end

Exporting Data

Scheduled Reports

Set up automated report delivery:

  1. Dashboard → AnalyticsReports
  2. Click New Report
  3. Configure:
    • Frequency (daily, weekly, monthly)
    • Metrics to include
    • Recipients
    • Format (CSV, PDF, JSON)
  4. Click Create Report

API Integration

Pull analytics into your own systems:

// Fetch daily stats
const stats = await fetch(
  'https://api.trackpost.de/v1/analytics/emails?' + 
  'from_date=' + yesterday + 
  '&to_date=' + today,
  {
    headers: { 'Authorization': 'Bearer ' + apiKey }
  }
);

// Store in your database
await db.analytics.insert(stats);

Next Steps