Maildriply
Features

Everything you need to send and measure email.

Seven 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

Save once, send forever

Save your best openings, follow-ups and full emails as templates. Organize them with tags and insert them from the dashboard or straight into Gmail compose.

  • Insert templates right inside Gmail compose
  • Organize templates with tags
  • Use the same templates from the dashboard or extension
Templates.tsx
// Save once, send forever
✓ Insert templates right inside Gmail compose
✓ Organize templates with tags
✓ Use the same templates from the dashboard or extension
↑ illustrative only
Scheduling

Send when your recipient is awake

Queue any email for a future timestamp. Long schedules wait in Postgres until they're due, then a once-a-minute scheduler hands them to the send queue, so a deploy or restart never drops a send.

  • Queue-backed delivery with exponential-backoff retries
  • 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
✓ Queue-backed delivery with exponential-backoff retries
✓ Per-account rate limiting (Gmail's per-minute and per-day caps)
✓ Visible queue in Settings - cancel anything not yet sent
↑ illustrative only
AI assistants (MCP)

Let Claude or Cursor send - and check - your email

A hosted Model Context Protocol server lets AI assistants send tracked email from your own Gmail, follow up in the original thread, and read who opened and clicked. It runs on the same pipeline as the dashboard, so quotas, warm-up and unsubscribe suppression all still apply.

  • Personal API keys - read-only or send-enabled, revocable any time
  • Sender is always your connected Gmail - the AI can't change it
  • Works with Claude Code, Claude Desktop, Cursor and VS Code
  • Follow-ups land in the recipient's existing Gmail thread
AI assistants (MCP).tsx
// Let Claude or Cursor send - and check - your email
✓ Personal API keys - read-only or send-enabled, revocable any time
✓ Sender is always your connected Gmail - the AI can't change it
✓ Works with Claude Code, Claude Desktop, Cursor and VS Code
↑ 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 will stop when a recipient replies, clicks, or unsubscribes.

  • 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 during early access. Revoke access from your Google permissions page any time - we'll stop being able to send.

Sign in with Google