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:
| Category | What It Measures | How It Works |
|---|---|---|
| Delivery | Sent, failed, bounced | SMTP response from the recipient’s mail server |
| Opens | When a recipient views the email | Invisible 1×1 tracking pixel embedded in the email body |
| Clicks | When a recipient clicks a link | URL 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:
| Metric | Description |
|---|---|
| Sent | Emails successfully delivered to the recipient’s mail server |
| Failed | Emails that could not be delivered (SMTP error) |
| Bounced | Hard bounces (invalid address) and soft bounces (temporary failure) |
| Total Opens | Cumulative open count across all recipients (includes repeat opens) |
| Unique Opens | Number of distinct recipients who opened at least once |
| Total Clicks | Cumulative click count across all recipients (includes repeat clicks) |
| Unique Clicks | Number 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:
| Column | Description |
|---|---|
| Recipient | The email address the email was sent to |
| Subject | The email subject line |
| Status | Delivery status — sent, failed, bounced_hard, or bounced_soft |
| Sent At | Timestamp when the email was handed to the SMTP server |
| First Opened At | Timestamp of the first open event |
| Open Count | Number of times the email was opened |
| First Clicked At | Timestamp of the first click event |
| Click Count | Number of times links were clicked |
| Error Message | SMTP 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
| Status | Color | Meaning |
|---|---|---|
| sent | Green | Successfully accepted by the recipient’s mail server |
| failed | Red | SMTP rejected the email — check the error message for details |
| bounced_hard | Red | Permanent delivery failure — the email address does not exist or the domain rejected it |
| bounced_soft | Amber | Temporary 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 Column | Description |
|---|---|
| Recipient | Email address |
| Subject | Email subject line |
| Status | Delivery status |
| Opened | ”Yes” or “No” |
| Open Count | Number of opens |
| First Opened At | Timestamp of first open |
| Clicked | ”Yes” or “No” |
| Click Count | Number of clicks |
| First Clicked At | Timestamp of first click |
| Sent At | Timestamp when sent |
| Error Message | Error 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:
- The client requests the pixel image from Mergram’s server (
/t/open/<token>.png) - Mergram verifies the token signature and checks expiry
- If valid, the open event is recorded with a hashed IP and timestamp
- 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:
- The browser requests the redirect URL
- Mergram verifies the token signature and checks expiry
- If valid, the click event is recorded
- 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