Skip to content
Documentation

Email Tracking & Analytics

Monitor delivery status, open rates, and click rates for every email campaign. Understand how recipients interact with your sent PDFs — all built in, no third-party analytics required.

What is Email Tracking?

Email tracking gives you visibility into what happens after you send an email campaign. Every email campaign in Mergram automatically tracks three categories of events:

CategoryWhat It MeasuresHow It Works
DeliverySent, failed, bouncedSMTP response from the recipient’s mail server
OpensWhen a recipient views the emailInvisible 1×1 tracking pixel embedded in the email body
ClicksWhen a recipient clicks a linkURL rewriting through a redirect endpoint

No third-party analytics services are required. Tracking works with any SMTP provider — Gmail, SendGrid, Mailgun, Amazon SES, or your own mail server.

No setup required

Tracking is enabled by default for all email campaigns. You do not need to configure anything — just send your campaign and check the results.


Tracking Dashboard

After an email campaign finishes, open the job from History to see the tracking dashboard. The dashboard shows both summary statistics and per-recipient details.

Summary Statistics

The top of the results page displays stat cards with key metrics:

MetricDescription
SentEmails successfully delivered to the recipient’s mail server
FailedEmails that could not be delivered (SMTP error)
BouncedHard bounces (invalid address) and soft bounces (temporary failure)
Total OpensCumulative open count across all recipients (includes repeat opens)
Unique OpensNumber of distinct recipients who opened at least once
Total ClicksCumulative click count across all recipients (includes repeat clicks)
Unique ClicksNumber of distinct recipients who clicked at least once

Derived rates are calculated automatically:

  • Open rate = Unique Opens ÷ Sent × 100
  • Click rate = Unique Clicks ÷ Sent × 100

Unique vs. total

Unique opens tells you how many people opened your email. Total opens tells you how many times it was opened in aggregate. If one recipient opens your email three times, that counts as 1 unique open and 3 total opens. Both metrics are useful — unique opens for reach, total opens for engagement depth.


Per-Recipient Tracking

Below the summary stats, the results page shows a paginated table with per-recipient details:

ColumnDescription
RecipientThe email address the email was sent to
SubjectThe email subject line
StatusDelivery status — sent, failed, bounced_hard, or bounced_soft
Sent AtTimestamp when the email was handed to the SMTP server
First Opened AtTimestamp of the first open event
Open CountNumber of times the email was opened
First Clicked AtTimestamp of the first click event
Click CountNumber of times links were clicked
Error MessageSMTP error details (for failed sends only)

The table is paginated with 20 recipients per page. Use the pagination controls to browse through large campaigns.

Delivery Statuses

StatusColorMeaning
sentGreenSuccessfully accepted by the recipient’s mail server
failedRedSMTP rejected the email — check the error message for details
bounced_hardRedPermanent delivery failure — the email address does not exist or the domain rejected it
bounced_softAmberTemporary failure — the recipient’s mailbox was full, the server was unavailable, or the message was rate-limited

CSV Export

Click the Export CSV button to download all tracking data as a spreadsheet. The CSV file includes one row per recipient with the following columns:

CSV ColumnDescription
RecipientEmail address
SubjectEmail subject line
StatusDelivery status
Opened”Yes” or “No”
Open CountNumber of opens
First Opened AtTimestamp of first open
Clicked”Yes” or “No”
Click CountNumber of clicks
First Clicked AtTimestamp of first click
Sent AtTimestamp when sent
Error MessageError details (if failed)

Excel compatibility

The CSV file includes a UTF-8 BOM (byte order mark) so that Microsoft Excel correctly recognizes non-ASCII characters in recipient names, subjects, and error messages. Line endings use \r\n (Windows convention) for maximum compatibility.

The export streams data in chunks — even campaigns with thousands of recipients export without memory issues. No row limit.


How Open Tracking Works

When you send an email campaign, Mergram appends an invisible 1×1 tracking pixel (a transparent PNG image) to the end of the email body. The pixel URL includes an HMAC-signed token that uniquely identifies the email send.

When a recipient’s email client loads remote images:

  1. The client requests the pixel image from Mergram’s server (/t/open/<token>.png)
  2. Mergram verifies the token signature and checks expiry
  3. If valid, the open event is recorded with a hashed IP and timestamp
  4. A 1×1 transparent PNG is returned (always — even for invalid tokens, to avoid leaking information)

Deduplication

Repeated opens from the same IP within a 1-hour window are deduplicated — they count as a single open event. This prevents inflated counts from email clients that repeatedly load images (e.g., when switching folders or reconnecting).

After the 1-hour window, a new open from the same IP creates a new event. This means multiple genuine opens on different days are counted correctly.


How Click Tracking Works

Any links (<a> tags) in your email body are automatically rewritten through Mergram’s redirect endpoint. For example:

  • Original: https://example.com/landing
  • Rewritten: https://mergram.com/t/click/<token>

The token is HMAC-signed and contains:

  • The send ID for attribution
  • The original destination URL
  • An expiry timestamp (default: 365 days)

When a recipient clicks:

  1. The browser requests the redirect URL
  2. Mergram verifies the token signature and checks expiry
  3. If valid, the click event is recorded
  4. The browser is immediately redirected (HTTP 302) to the original URL

Security

Only http:// and https:// URLs are allowed in click tracking. JavaScript URLs (javascript:...) and data URLs (data:...) are rejected to prevent XSS attacks. The redirect always goes to a valid web URL.


Privacy

Mergram’s email tracking is designed to be privacy-conscious:

  • IP addresses are hashed — Recipient IP addresses are hashed with SHA-256 before storage. Raw IPs are never stored. The hash is used only for deduplication within the 1-hour window.
  • No JavaScript — Tracking relies on a simple image pixel and URL redirects. No scripts are injected into email bodies.
  • No third-party services — All tracking data is processed and stored on your Mergram instance. No data is sent to external analytics platforms.
  • Token expiry — Tracking tokens expire after 365 days by default (configurable via TRACKING_TOKEN_EXPIRY_SECONDS). Expired tokens still serve the pixel or redirect, but do not record events.

Tips

  • Send a test email to yourself first — Open it and click links to verify that tracking registers correctly before sending to your full list
  • Check unique opens, not total opens — Unique opens give a more accurate picture of campaign reach. Total opens can be inflated by a few highly engaged recipients
  • Don’t obsess over exact open rates — Email clients that block remote images (Outlook desktop, Apple Mail) will not register opens. Open rates are directional indicators, not precise measurements
  • Use click rates as your primary engagement metric — Clicks are more reliable than opens because they require explicit user action. A click always means the recipient engaged with your content
  • Export CSV for reporting — Download tracking data as CSV to import into your CRM, spreadsheet, or reporting tool. Combine with other campaign data for trend analysis
  • Review bounces before re-sending — Remove hard-bounced email addresses from your list before the next campaign. Continuing to send to invalid addresses harms your sender reputation

Limitations

  • Open tracking is not 100% accurate — Clients that block remote images will not register opens. Privacy-focused email clients and extensions may also suppress tracking pixels
  • No real-time notifications — Tracking data is available on the job results page but does not trigger push notifications or webhooks
  • No geolocation — Since IP addresses are hashed, geographic data is not available in tracking reports
  • No device or client detection — User agent strings are stored but not parsed into device, browser, or OS categories in the UI
  • No link-level breakdown — Click tracking counts total clicks per recipient but does not break down which specific link was clicked if the email contains multiple links