Case Study — Email Automation
Jenny —
Cold Email Automation Extension
A Manifest V3 Chrome Extension that automates cold email campaigns via the Gmail API — with OAuth 2.0 authentication, smart Google-block protection that auto-terminates on account risk, and real-time open tracking over WebSockets.
Automation Pipeline
Overview
Cold Outreach Without the Manual Grind
Cold email outreach is effective but labour-intensive — composing, sending, and tracking hundreds of individual emails manually eats hours per week. Existing bulk-email tools bypass Gmail entirely, risking deliverability and account health. Jenny was built to automate outreach directly through the Gmail API: same inbox, same reputation, zero manual effort.
The Problem
Manual Outreach at Scale is Broken
- Time cost — sending 100+ individual emails manually takes several hours per week
- Account risk — bulk tools route outside Gmail, hurting deliverability and risking bans
- No visibility — no way to know which recipients opened emails without external tools
- No safety net — one Google block can silently kill an entire campaign with no alert
The Solution
Gmail-Native Automation with Smart Protection
Jenny sends directly through the Gmail API using the user's own account and OAuth 2.0 tokens — preserving sender reputation and deliverability. A real-time block detector monitors every send; if Google flags any message, the campaign terminates immediately to protect the account. WebSocket-powered open tracking reports back exactly who opened, when.
Architecture
Five Layers, One Seamless Extension
Jenny is built on Manifest V3 — Chrome's current extension standard — which imposes strict background service worker constraints. The architecture is designed around these constraints: a React popup UI, a persistent backend, and a real-time WebSocket channel for live tracking.
Key Features
Built for Safe, Scalable Outreach
Technical Highlights
Engineering Challenges Solved
MV3 Service Worker Constraints
Persistent Logic Without Persistent Workers
Manifest V3 service workers are ephemeral — they shut down after ~30s of inactivity, breaking long-running campaigns. Jenny works around this by offloading all stateful campaign logic to the Express.js backend. The extension's service worker acts as a thin relay: it starts a campaign run, then the backend drives execution independently, pinging the extension via WebSocket only when an event (open, block, completion) occurs.
Real-Time Open Tracking
Pixel → Webhook → WebSocket Pipeline
Each outgoing email has a unique 1×1 PNG tracking pixel URL embedded in the HTML body. When a recipient opens the email, their client fetches the pixel — hitting a lightweight Express endpoint that records the open event in PostgreSQL with a timestamp and IP hash. A WebSocket message is immediately broadcast to the connected extension popup, updating the live campaign dashboard without polling.
Technology Stack
Modern Automation Stack
Built By
Development Team
Mujadid Sana
DeveloperNeed a custom automation or Chrome Extension built?
We build browser extensions, email automation pipelines, and workflow automation systems that save your team hours every week.

