Many mailboxes.
Many workers. Many IPs.
Not a glorified SMTP relay. The control plane decides what to send. Workers spread sends across machines and IPs so no single point becomes a reputation liability.
The engine, end to end.
Every component, every link. The backend never talks to a mailbox provider directly. Workers never read from Postgres. Each plane has one job and stays in its lane.
318ms from queue to 200 OK.
One message, every handoff. Latencies here are illustrative for a Gmail send on a warm worker. Real traces are visible in the per-mailbox event view.
Volume scales by adding mailboxes.
Not by cranking a few. Each scenario keeps every mailbox at the default cap. When one worker fills with mailboxes, the next worker takes the next batch.
A single [email protected] runs on one worker. Default 100/day cap. Plenty of headroom on the worker for warmup partners.
Right at the per-worker concentration warning. One worker carries all 10 mailboxes; healthy as long as no mailbox drifts.
Spread across 5 workers so each holds ~10. Concentration warnings never fire. Adding mailboxes triggers a new worker, not a denser one.
Native Gmail. Native Outlook. SMTP for the rest.
Gmail API for send. Threaded replies preserved via In-Reply-To and References. Postmaster Tools surfaced where the domain is enrolled.
Graph API for send with shared-mailbox support. IMAP and EWS for sync. Tenant-scoped admin consent.
Bring your own server. TLS, STARTTLS, app passwords, and OAuth where the provider supports it. iCloud and Zoho work first-class.
Four engine questions.
Mailboxes are pinned to a worker on first connect and stay there for stability. The control plane can rebalance live by moving the mailbox to a different worker without dropping campaigns or warmup.
Worker state is disposable. A replacement worker reads pending commands from the same Kafka topic on boot and resumes. No mailbox is stuck waiting on a single host.
No. A mailbox lives on one worker with one IP at a time so receiver reputation can stabilise. Migration changes the IP intentionally and is logged.
The per-mailbox 600-second gap is enforced server-side. Even if a campaign queues 100 sends at once, dispatch is rate-limited to the gap, not the queue size.
Connect a mailbox. Send your first campaign today.
OAuth in 30 seconds. Worker assignment is automatic.