When you send a tracked email and then open it yourself (e.g., in your Sent folder), the tracking pixel fires just like it would for a recipient. Without suppression, your own opens would inflate the open count.Email Tracker uses identity-based, event-driven suppression to reliably distinguish sender opens from genuine recipient opens.
The key to reliable suppression is comparing the sender email in the token with the currently logged-in Gmail account:
// extension/src/content/gmailCompose.js:554-558// Identity-based suppression: sender viewing own tracked message should suppress next open.// Folder names are unreliable in Gmail SPA; account identity is stable for this decision.if (normalizeEmailCandidate(payload.senderEmail) !== normalizeEmailCandidate(currentEmail)) { return;}
This approach is more reliable than folder-based detection (e.g., checking if you’re in “Sent” folder) because Gmail’s SPA architecture makes folder inference brittle. Account identity is stable and unambiguous.
Suppression signals are consumed once (line 111: suppressionMap.delete(emailId)). If the pixel fires again later (e.g., sender reopens the message), subsequent opens are not suppressed.
The 10-second TTL exists to prevent memory leaks if pixel requests never arrive. It’s not a “suppression window” — suppression is consumed immediately when the pixel fires.
The identity-based approach has key advantages over other suppression methods:
Avoids brittle folder/tab inference
Gmail’s SPA architecture makes it unreliable to detect whether you’re viewing “Sent” vs “Inbox”. URL paths and DOM structure change frequently.Identity comparison is stable: The logged-in account email is always available and unambiguous.
Works across Gmail views
Whether you open your message from:
Sent folder
Search results
Conversation view
Pop-out window
The identity check (sender_email === logged_in_email) works consistently.
Event-based, not time-based
Some trackers use a “suppression window” where all opens within N seconds are suppressed. This can miss legitimate recipient opens.Email Tracker uses explicit signal + consume-once, so only the first pixel hit after the signal is suppressed.
No false positives on shared inboxes
If you send from a shared inbox (e.g., team@company.com) and a teammate opens the message while logged in as teammate@company.com, the open is not suppressed because sender_email !== teammate@company.com.
Gmail proxies images through Google’s servers, introducing latency between the suppression signal and pixel hit. The tracker measures this latency for debugging.
Only the first pixel hit after the suppression signal is suppressed. Subsequent opens are counted normally (but may be caught by deduplication).
What if the pixel fires before the suppression signal arrives?
If the pixel request arrives before the POST /mark-suppress-next signal, the open is counted. This can happen if:
Network latency is high
Gmail’s image proxy is very fast
The extension content script is slow to scan
In practice, the signal usually arrives first because it’s sent immediately when the content script detects the pixel.
Can I suppress opens for a specific recipient?
No. Suppression is sender-based (not recipient-based). It only suppresses opens when the sender views their own message.To implement recipient-based suppression, you’d need to maintain a blocklist of recipient emails/IPs.
Does suppression work if sender_email is missing from the token?
No. If sender_email is not included in the tracking token, the content script cannot compare it with the logged-in account, so suppression does not trigger.Ensure your extension captures sender email during token generation: