Magio

2026

Abstract

A Gmail extension and self-hosted dashboard for email tracking and recorded open events.

1   Background and motivation

I built Magio to inspect recorded open events for emails sent through Gmail while keeping the tracking backend under my own control. The project combines a browser extension with a self-hosted service, rather than sending event data through a separate hosted tracker. Its purpose is to provide a record of image requests associated with a message, which can help examine delivery interactions but cannot establish that a person read or understood the email.

2   Message and event lifecycle

The Plasmo-based extension integrates with Gmail’s compose view and adds a per-message tracking toggle. When tracking is enabled, it embeds a small image URL associated with the outgoing message. A subsequent request for that URL reaches the tracking endpoint, which returns a transparent GIF and records the event against the message.

The backend is a Next.js application using Prisma and PostgreSQL. Message records and their events support two interfaces: a sidebar inside Gmail’s sent-message view and a standalone analytics dashboard. This keeps the presentation near the original conversation while also allowing an overview across tracked messages.

3   Filtering and inspection

The implementation attempts to reduce events generated by the sender’s own activity. The documented filters include sender-IP matching, ignoring requests shortly after sending, and clearing recent events when the sender opens the message with the sidebar. The dashboard exposes timestamps and request-derived browser or device information, together with per-message event details.

These filters are heuristics rather than proof of recipient behaviour. A legitimate recipient may open a message during the initial exclusion window, while an image proxy or cache can make a request without corresponding directly to a fresh human open. Returning no-store headers expresses the server’s caching preference but does not give the sender control over every recipient’s email client.

4   Deployment and interpretation

Docker Compose packages the web application and PostgreSQL, and the extension can be configured with the chosen server URL. A per-user API token links the extension to its account on that backend. Self-hosting makes the storage location and retention policy controllable by the operator; it does not remove the privacy implications of collecting recipient metadata. The useful output is an event history with known limitations, not a definitive read receipt.