Email Open and Click Tracking: How It Works, Implementation, and Privacy
How tracking pixels and click links work, Rovela's built-in tracking, and Apple MPP's impact on open rates.
Email Open and Click Tracking: How It Works, Implementation, and Privacy
Open rate and click rate are the fundamental metrics for measuring email performance — but it's worth understanding how they work and where they break down.
How open tracking works
Open tracking embeds a 1×1 transparent pixel in the email HTML. When the recipient opens the email and loads images, the request hits the tracking server and records an open:
<img src="https://track.yourdomain.com/open?eid=abc123" width="1" height="1" style="display:none;" />
// Tracking server
app.get('/open', async (req, res) => {
const { eid } = req.query;
await db.query('UPDATE emails SET opened_at = NOW() WHERE id = $1', [eid]);
// Return 1×1 transparent GIF
res.set('Content-Type', 'image/gif');
res.send(Buffer.from('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', 'base64'));
});
How click tracking works
Links in the email are replaced with tracking URLs that log the click and redirect to the original destination:
// Tracking server
app.get('/click', async (req, res) => {
const { eid, url } = req.query;
await db.query(
'INSERT INTO email_clicks (email_id, url, clicked_at) VALUES ($1, $2, NOW())',
[eid, url]
);
res.redirect(302, decodeURIComponent(url));
});
Built-in tracking with Rovela
Rovela supports automatic open and click tracking with webhook event delivery — no need to build the infrastructure above:
// Rovela webhook event types:
// email.opened, email.clicked, email.delivered, email.bounced, email.complained
The limits of open rate
- Apple Mail Privacy Protection (iOS 15+): pre-fetches all email images, inflating open rates
- Images blocked by default: Outlook users who don't load images don't show as opens
- Actual engagement is typically 15–20% higher than recorded opens
Don't evaluate campaigns on open rate alone — look at click rate and downstream conversion together.