Maildriply
Features

Everything you need to send and measure email.

Six core capabilities. Each one is here because we kept reaching for it and getting tired of the alternatives.

Open tracking

Pixel-based, bot-filtered, deduped

A single 1×1 PNG, HMAC-signed and tied to one recipient at one send time. We strip Gmail's image proxy pre-fetches, ignore null user-agents, and dedupe per recipient so one human equals one open.

  • Per-recipient HMAC token
  • Gmail proxy filter built-in
  • User-agent + IP scoring for bot detection
  • Open events stream into the dashboard in real time
Open tracking.tsx
// Pixel-based, bot-filtered, deduped
Per-recipient HMAC token
Gmail proxy filter built-in
User-agent + IP scoring for bot detection
↑ illustrative only
Click tracking

HMAC-signed redirects, locked at send time

We rewrite each link to a signed URL on the tracking host. The destination is recorded when the email goes out and validated again at click time, so a token can never be flipped to an attacker-controlled URL.

  • No open-redirect risk - destinations are server-side
  • Timing-safe comparison on every redirect
  • Aggregated click counts per link in the campaign view
  • Per-recipient click attribution for follow-up logic
Click tracking.tsx
// HMAC-signed redirects, locked at send time
No open-redirect risk - destinations are server-side
Timing-safe comparison on every redirect
Aggregated click counts per link in the campaign view
↑ illustrative only
AI writer

Drafts in your voice, not the model's

Powered by Gemini through the Vercel AI SDK. Tone, length, and intent are user-controlled. Every request is gated behind a per-user monthly quota so a runaway prompt can't bankrupt you.

  • Rewrite, shorten, expand, follow-up modes
  • Per-user monthly quota (configurable)
  • Provider swap via single file - swap to OpenAI in minutes
  • Hides itself in the UI when no API key is configured
AI writer.tsx
// Drafts in your voice, not the model's
Rewrite, shorten, expand, follow-up modes
Per-user monthly quota (configurable)
Provider swap via single file - swap to OpenAI in minutes
↑ illustrative only
Templates & personalization

Save once, send forever

Templates support {{first_name}}, {{company}}, and custom variables. Compose with mail-merge tokens; we resolve them per recipient at send time without leaking the unrendered placeholder.

  • Mail-merge tokens validated before send
  • Per-recipient preview before launch
  • Versioned - edit a template, old sends stay snapshotted
Templates & personalization.tsx
// Save once, send forever
Mail-merge tokens validated before send
Per-recipient preview before launch
Versioned - edit a template, old sends stay snapshotted
↑ illustrative only
Scheduling

Send when your recipient is awake

Queue any email for a future timestamp. The worker uses Redis-backed BullMQ jobs, so a Heroku dyno restart doesn't drop sends.

  • BullMQ delayed jobs with exponential retry
  • Per-account rate limiting (Gmail's per-minute and per-day caps)
  • Visible queue in Settings - cancel anything not yet sent
Scheduling.tsx
// Send when your recipient is awake
BullMQ delayed jobs with exponential retry
Per-account rate limiting (Gmail's per-minute and per-day caps)
Visible queue in Settings - cancel anything not yet sent
↑ illustrative only
Sequences (in development)

Multi-step follow-ups that stop themselves

Day 1 / Day 3 / Day 7 cadences with branching on open and click. Sequences auto-pause when a recipient replies - detected through Gmail's threading metadata.

  • Stops on reply, click, or unsubscribe
  • Personalized per recipient
  • Pause / resume / clone an entire flow
Sequences (in development).tsx
// Multi-step follow-ups that stop themselves
Stops on reply, click, or unsubscribe
Personalized per recipient
Pause / resume / clone an entire flow
↑ illustrative only
FAQ

Questions we get a lot.

Does Maildriply read my Gmail inbox?

No. We request the gmail.send scope, which is technically incapable of reading messages. We literally cannot see your inbox - the OAuth grant doesn't allow it.

Do you use shared SMTP or IP pools?

No. Every email leaves your own Gmail account, so your sender reputation stays yours. We're a thin layer over Gmail's API, not a relay.

How do you filter bot opens?

We exclude requests with empty or known-bot user agents, deduplicate by recipient, ignore Gmail's image proxy pre-fetch fingerprint, and score each event against a small heuristic set. Opens that fail the filters are recorded but never surfaced as 'real'.

What happens to my data if I delete my account?

We revoke the OAuth grant at Google, wipe every database row tied to your user (Gmail connection, templates, campaigns, recipients, link records, send logs, tracking events), and sign you out. Backups roll off within 90 days.

Try it without committing.

Free up to 500 sends per month. Revoke access from your Google permissions page any time - we'll stop being able to send.

Sign in with Google