Features
Everything it does, and what it refuses to claim.
Eight capabilities, each written up from the code with its limits stated. The differentiator is not a longer list. It is that every number on screen can be defended in one sentence.
The vocabulary
Six glyphs in Gmail, one per status. Hover any of them and the tooltip says what is known and, when the answer is uncertain, why.
Replies outrank clicks, clicks outrank opens, and a bounce is shown only when nothing was read, clicked or replied to and every recipient hard-bounced. One bad address among several never hides what the others did.
The eight capabilities
Each page below states what the feature does, the cases where it says "we cannot tell", and the code that implements it.
Open tracking
A 42-byte pixel per message, shown in Gmail as checkmarks, and counted only when a person was plausibly behind the fetch.
Read more →Honest classification
Every hit gets a verdict, a confidence and a one-sentence reason. An Apple prefetch is called a prefetch, not a read.
Read more →Self-open suppression
Your own reads of your Sent folder are recognised and withdrawn, on desktop, without touching the Gmail API.
Read more →Link tracking
HMAC-signed redirects on your own domain, typed URLs included, with scanner clicks kept but counted separately.
Read more →Replies and bounces
A reply on a tracked thread and Gmail's own delivery-failure notice, both read from the Gmail page.
Read more →Alerts and digest
First open, clicks, replies, bounces, hot threads, revived threads and follow-ups, as desktop notifications, Gmail toasts or a daily email.
Read more →Dashboard
Open and reply rates, a best-time-to-send heatmap, per-contact engagement, and a timeline that justifies every verdict.
Read more →Agent API and MCP
Mail an AI agent sends through the Gmail API gets the same tracking, with every policy decision still made server-side.
Read more →What it deliberately does not do
A tracker earns trust by the claims it declines to make. These are the ones MailSignals declines.
It will not tell you
- That someone read your email when all it saw was a proxy prefetch. Apple Mail Privacy Protection downloads are reported as delivery, never as a read.
- Which recipient of a group email opened it. One message carries one pixel, so an open means someone did.
- Whether a recipient deleted, archived or reported your email. Nothing leaves their mailbox when they do, so no tracker can see it.
- That an unrecognised client was a person. An unrecognised fetch is recorded in the timeline and counted nowhere.
- A read count that a mail proxy hid. A proxied open is labelled a lower bound.
It does not include
- Mass mailing, campaigns or mail merge. This is for the email you write one at a time.
- A CRM pipeline, e-signatures, document tracking or video messages.
- A mobile app or an Outlook add-in. The extension runs in Chrome and Edge on Gmail in the browser.
- Per-recipient tracking of group emails, which commercial trackers do by re-creating one message per recipient through the Gmail API.
- Any access to your mailbox. Sign-in requests openid, email and profile, and nothing else.
Every setting
The dashboard and the extension's options page expose the same settings; a change in one reaches an open compose window within a minute, without a reload.
| Section | What it controls |
|---|---|
| Tracking defaults | Track new emails by default; track links by default; rewrite links whose visible text is a bare URL (on); an optional one-line disclosure footer with editable text; a do-not-track domain list. |
| What counts as an open | Strict counts only direct fetches. Normal, the default, adds proxied opens from Gmail, Outlook and Yahoo. Lenient also counts Apple Mail delivery prefetches. |
| Notifications | Desktop notifications, in-Gmail toasts, every open or first open only, clicks, replies, and quiet hours that may wrap midnight. |
| Alerts | The hot-conversation threshold (3 opens in 10 minutes), the revival gap (7 days) and the follow-up reminder (3 days). Zero disables one. |
| Summary email | Daily or weekly, at an hour you choose, in your timezone, only when something was sent. |
| Privacy | Event retention in days, where 0 keeps everything. Sender view signals and unmatched hits are always pruned after seven days. |
| Gmail accounts | Every Gmail address the extension has seen, with Tracked, Needs a decision or Ignored, and the number of sends refused. |
| Agent keys | Mint, name and revoke keys for programs that send through the Gmail API; copy a ready-made MCP configuration. |
| Export and delete | Messages, events, contacts and links as CSV or JSON. Delete everything, confirmed by typing the phrase, keeps only the account and its settings. |
Defaults are read from DEFAULT_USER_SETTINGS in the shared package. Changing a default never changes a stored account: an explicit value survives.
Run it in your own project.
One Firebase project, two subdomains, one deploy script. About an hour the first time, and no subscription afterwards.