Open and click tracking
Open and click tracking is an automatic feature available in campaigns (bulk). When you send a campaign with HTML content, MailerDash injects a tracking pixel and rewrites links to capture recipient interactions.
Tracking does not apply to transactional sends (POST /v1/mail/send).
How it works
Section titled “How it works”Open tracking (pixel)
Section titled “Open tracking (pixel)”At send time, MailerDash inserts an invisible 1×1px pixel at the end of the HTML <body> (or at the end of the content if there is no <body>):
<img src="https://track.mailerdash.com/o/<token>" width="1" height="1" alt="" style="display:none;border:0;width:1px;height:1px;">When the email client loads the image, an open is recorded and associated with that send and contact.
Click tracking (link rewriting)
Section titled “Click tracking (link rewriting)”All <a href="..."> elements in the HTML that point to http:// or https:// URLs are rewritten to pass through the tracking domain:
<!-- Before --><a href="https://mi-app.com/promo">Ver oferta</a>
<!-- After sending --><a href="https://track.mailerdash.com/c/<token>">Ver oferta</a>The redirect captures the click and sends the recipient to the original URL in under a second.
Links that are not rewritten:
mailto:,tel:,javascript:, anchors (#sección)- Unresolved placeholders (
{{variable}}) - The List-Unsubscribe and
One-Clickunsubscribe link - URLs that already point to the tracking domain
Where to view analytics
Section titled “Where to view analytics”Campaign analytics
Section titled “Campaign analytics”GET /v1/bulk/campaigns/{id}/analyticsAuthorization: Bearer $MAILERDASH_API_KEYResponse (summary):
{ "campaign_id": "camp_abc123", "delivered": 1250, "opens_unique": 342, "opens_total": 489, "clicks_unique": 118, "clicks_total": 201, "bounces": 12, "complaints": 2, "unsubs": 5, "rates": { "open": 0.2736, "ctr": 0.0944, "ctor": 0.3450, "bounce": 0.0096, "complaint": 0.0016, "unsub": 0.0040 }, "top_links": [...], "timeline": [...], "detail_window_days": 90}Also append ?format=csv to export per-recipient detail with columns email, status, sent_at, first_opened_at, first_clicked_at.
Aggregated rates across campaigns
Section titled “Aggregated rates across campaigns”GET /v1/bulk/analytics/rates?period=7dperiod accepts 24h, 7d, or 30d. Returns consolidated metrics for all campaigns on your key within that window.
Contact engagement
Section titled “Contact engagement”GET /v1/bulk/contacts/{email}/engagementReturns the interaction history (opens, clicks, bounces, complaints, unsubscribes) for a specific contact, useful for segmentation and deliverability diagnostics.
Unique vs. total
Section titled “Unique vs. total”| Metric | Meaning |
|---|---|
opens_unique | Number of distinct contacts who opened at least once |
opens_total | Total opens (includes multiple opens from the same contact) |
clicks_unique | Distinct contacts who clicked at least one link |
clicks_total | Total clicks (includes repeated clicks and clicks on multiple links) |
For calculating open rates, always use opens_unique / delivered; opens_total is useful for measuring deep engagement (if a contact opens the email multiple times).
Data retention
Section titled “Data retention”The detail_window_days: 90 field indicates that individual open/click events (detailed per-recipient timeline) are kept for 90 days. Aggregated campaign counters are retained indefinitely.
Privacy and GDPR
Section titled “Privacy and GDPR”See the full bulk endpoint reference at /reference/bulk/.