Open source Apache 2.0

The biggest open-source cold email platform.

Warmbly warms your mailboxes, sends your campaigns, and triages every reply. Run it on our cloud or self-host the whole thing on yours.

14 days, 3 mailboxes, no credit card. Apache 2.0 if you want to self-host.

Warmbly
A Acme
Accounts
Growth
28ms
Accounts
128 mailboxes
Total
128
connected
Healthy
122
sending now
Warming
6
ramping up
Needs attention
0
paused / fail
Mailboxes 128
Search by email…
Account Sent Warmup Status
FO
founder@acme.co
37 22 healthy
HE
hello@acme.co
24 18 healthy
TE
team@northwind.dev
46 34 healthy
ML
ml@helio.gen
18 12 warming
github.com/warmbly/warmbly · Apache 2.0 · Run it on our cloud or your own infra · Go · Rust · Elixir · React
Campaigns

Sequences that branch on real behavior.

Build a multi-step flow on the canvas, then drag a connector from any step to fork on opens, clicks, and replies. It's the exact builder you'll use in the app.

Drag to branch
Pull a link from a step to add an “if opened / clicked / replied” path. No match just stops.
A/B at every step
Weighted subject + body variants; the stronger one keeps sending.
Threaded follow-ups
Follow-ups reply on the previous subject, so they land in the same conversation.
Explore campaigns
app.warmbly.com/campaigns/q1-sales/sequences

Q1 Sales Outreach

draft

cmp_8fK2pQ7rXa19

Overview
Leads
Steps
Schedule
Settings
Stop on reply
wait 2d else
First email Start
Email
Quick question, {{.FirstName}}
if opened within 3d
Follow-up
Email
Following up on my message
Alternative
Email
Trying a different angle
Add engagement tag
Add tag
engaged
Ends here
Stop
Scheduling

Send only inside their working hours.

A calendar-style editor with full per-day control. Draw a sending window on any weekday, drag to move it, grab an edge to resize. Everything snaps to 30 minutes.

Per-day windows
Independent windows for each day: mornings only, or split shifts. Several per day is fine.
Timezone-aware
Sends follow the chosen timezone; worker IPs spread the volume naturally.
One-click presets
Mon–Fri 9–5 in a tap, then fine-tune by dragging the blocks.
See sending controls
app.warmbly.com/campaigns/q1-sales/schedule
Weekly sending windows

7 windows across 5 days

Presets Drag to add · drag a block to move · edges to resize · ⧉ copies a day to all
Mon
Tue
Wed
Thu
Fri
Sat
Sun
12a 3a 6a 9a 12p 3p 6p 9p 12a
9am
12pm
1pm
5pm
9am
5pm
8:30am
12pm
2pm
6pm
9am
5pm
9am
3pm
drag, or tap +
drag, or tap +

Each day is independent. Set different windows per day, or several windows in one day. Sends are scheduled in America/New York; worker IPs spread distribution naturally.

Campaign dates Jun 9 – Jul 7, 2026 28 days
Start date
End date

Optional bounds for when the campaign may send. Leave both blank to run open-ended.

Unified inbox

Every reply, triaged the moment it lands.

Replies from every connected mailbox stream into one searchable queue. The classifier tags each one on arrival so you act on the labels that matter.

One queue, every mailbox
Scope by inbox, tag, or status: unread, awaiting reply, snoozed, scheduled.
Classified on arrival
Positive, out-of-office, unsubscribe and bounce are labeled before you open them.
Reply in place
Snooze, schedule, and send from the same pane, keyboard-first.
Tour the inbox
app.warmbly.com/unibox
Inbox
7 unread
3 awaiting
24 today
89 week
2 snoozed
3 mailboxes
live
Search inbox… (/)
Today 4
SC
Sarah Chen 5m
Follow up on Q1 proposal
Thanks for sending over the docs. I've reviewed them and have a few…
hello@company.com Urgent Clients
JS
Jordan Smith 42m
Re: Dashboard integration
The API endpoint looks good. When can we expect the staging build?
support@company.com
AM
Alex Morgan 3h
New partnership opportunity
Hi there, I'm reaching out about a potential partnership between…
sales@company.com Leads
CR
Casey Reynolds Jan 15
(no subject)
(no preview)
hello@company.com
Thread
Follow up on Q1 proposal hello@company.com
Snooze
3 messages 2
SC
Sarah Chen sarah@acme.io
to hello@company.com
Jan 18, 10:32
Thanks for sending over the docs. I've reviewed them and have a few questions. Can we sync up tomorrow morning?
YO
You hello@company.com
to sarah@acme.io
14:15
Absolutely! How does 10am EST work for you?
SC
Sarah Chen sarah@acme.io
to hello@company.com
14:28
Perfect. See you then!
Reply Forward Hover any message to reply to it directly.
Analytics

Proof of what actually landed.

Deliverability across the whole workspace: sent, opens, clicks, replies and bounces, with per-campaign breakdowns and account health on one screen.

Placement, not vanity
Track the metrics that move reputation, over 7, 30 or 90 days.
Best performers, surfaced
Top campaigns and account health rank themselves as sends roll in.
Shareable report card
Export a branded image of any range in a single tap.
View analytics
app.warmbly.com/analytics
Analytics
Deliverability across the workspace
Total sent
2,847
in range
Open rate
31.3%
after delivery
Reply rate
2.0%
incl. positive
Bounce rate
0.5%
hard + soft
Email performance
Dec 2 Dec 8
Top campaigns All campaigns
Q4 Outreach - Tech Leaders 850 sent 38.5% open 2.8% reply
Win-back: Former Customers 620 sent 26.3% open 1.6% reply
Product Launch Beta Access 480 sent 42.1% open 3.1% reply
Recent activity
Opened by sarah.chen@techcorp.com Q4 Outreach Dec 8, 02:32 PM
Clicked by mark.ross@northwind.dev Win-back Dec 8, 02:18 PM
Reply from jess@helio.gen Product Launch Dec 8, 01:54 PM
AI assistant

Draft the whole email from one line.

Describe what the email should do and the assistant writes it in your voice, merge fields and tone already in place. Edit inline, regenerate, or keep what works.

One-line briefs
Tell it the goal; get back a ready-to-send draft with variables filled in.
Tone presets
Friendly, professional, concise, persuasive. Switch and regenerate in a click.
Credits, no surprises
Each draft uses one writing credit, shown before you generate.
Try the assistant
app.warmbly.com/campaigns/q1-sales/steps
Sequence
1 Step 1 2 Follow-up +3d Add step
Draft saved
Step 1

Compose the email this step sends.

Cold intro

Internal label only. Recipients never see it.

Quick question about Acme's AWS spend, {{.FirstName}}
Edit Preview

Hi {{.FirstName}}, ...

Hi Alex,

Noticed Acme has been scaling fast on AWS. Teams your size are usually overpaying 30 to 40 percent on compute they spun up once and never tuned.

I help engineering teams find that spend without re-architecting anything. Worth a quick 15-minute call to walk through the three line items I'd check first?

Open to next Tuesday or Wednesday afternoon?

Best,

Jordan

A short intro asking to book a 15-min call about cutting their AWS bill.
DefaultFriendlyProfessionalCasualConcisePersuasive
3 credits remaining Generated. 2 credits remaining
Integrations

Plug into the stack you already run.

Connect Gmail, Microsoft 365, your CRM, Slack and Zapier over OAuth. Tokens are encrypted at rest and every webhook is HMAC-signed.

OAuth in two clicks
Authorize a provider and Warmbly handles the rest. Revoke anytime.
Signed webhooks
Every event is HMAC-signed and HTTPS by default, with SSRF protection.
Encrypted at rest
Secrets are sealed with your data key, never stored in plaintext.
Browse integrations
app.warmbly.com/integrations
Integrations
Connect your stack: CRMs, alerts, automation, meetings, and data
Search integrations
Available
8
providers
Connected
3
3 total
Needs attention
0
all healthy
Meetings
14
booked via integrations
App directory 8
OAuth tokens encrypted at rest. Webhooks HMAC-signed.
G
Gmail
one-click
connected

Send and sync through your Google Workspace mailboxes.

Docs
M
Microsoft 365
one-click
connected

Send and sync through Outlook and Exchange Online mailboxes.

Docs
S
Slack
one-click

Real-time alerts for positive replies, bounces, and deliverability.

Docs Connect connected
H
HubSpot
one-click

Push positive replies and new leads straight into your CRM.

Docs Connect
S
Salesforce
one-click

Sync leads, contacts, and email activity to Salesforce.

Docs Connect
Z
Zapier
api_key

Triggers and actions across 8,000+ apps.

Docs Connect
W
Webhooks
webhook
configured

HMAC-signed event delivery to your own endpoint.

Docs Manage
G
Google Sheets
one-click

On-demand lead sync from a spreadsheet into your contacts.

Docs Connect
Automations

When this happens, do that.

Every reply, booked meeting, bounce and warmup dip is a trigger. Wire it to your stack on a canvas: branch on intent, post to Slack, open the deal, update the CRM. The one below is running its test right now. Press Test in the window to fire it again.

app.warmbly.com/automations/reply-to-revenue
Reply to revenue Active
History Tidy up Saved
Add action Add condition
drag a node's dot to connect · IF block: right dot = yes, bottom dot = no
yes no
Prospect replies Trigger
When
campaign.reply_received
if intent is positive · ≥ 80%
S Send a Slack message
Then
#sales · reply from {{.contact_email}}
Create a deal
Then
Discovery · $4,800
H Update HubSpot contact
Then
lifecycle stage · opportunity
Add a tag
Then
nurture
Send a webhook
Then
hooks.yourapp.com/replies
Branches like you think

One IF chip routes on intent, confidence, source, or a random split. Yes goes right, no goes down, and the no path is still yours to wire.

Acts across your stack

Seven built-in actions plus Slack, Discord, HubSpot, Salesforce, Pipedrive, Close and HMAC-signed webhooks. No keys to paste for automation tools.

Test before it is on

Dry-run any automation against a sample event and read every node verdict, yes or no, before the switch ever flips.

Developers

An API you can build a product on.

Everything in the dashboard is a REST endpoint: scoped API keys, idempotent writes, opaque cursors, and HMAC-signed webhooks.

Scoped keys
Mint read, write, or send-only keys per environment and rotate without downtime.
Idempotent by default
Send an Idempotency-Key and retries are always safe.
Webhooks that verify
Subscribe to events like contact.replied with signed payloads.
Read the API docs
app.warmbly.com/api-keys
API keys
Programmatic access · stripe-style scoped tokens
Search…
Active keys
3
1 inactive
Requests · 24h
8,241
4 errors
Avg latency · 24h
28ms
across all keys
Last call
14s ago
Jun 6, 02:02 PM
Traffic · last 24h 8,241
2xx 4xx 5xx live; refreshes every minute
Keys 4
production-server Server-side calls from EU production
wmbly_live_a1…4f2a active 600/m used 2m ago
ci-pipeline GitHub Actions deploy step
wmbly_live_7c…91c7 active 120/m used 1h ago
zapier-replies Inbound reply automation
wmbly_live_3d…3d8e active 300/m used 3d ago
old-laptop Rotated out, kept for audit
wmbly_live_0p…xx0p revoked 120/m used 23d ago
Quick start
Your first request
curl Copy
curl https://api.warmbly.com/v1/campaigns \
  -H "Authorization: Bearer wmbly_live_a1…" \
  -H "Content-Type: application/json"

Pass the secret as a Bearer header. Every request returns rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining) so well-behaved clients can self-throttle before hitting 429.

Response 200 OK
{
  "id": "cmp_01HQX9F7P3A8KY",
  "status": "scheduled",
  "daily_cap": 50,
  "created_at": "2026-06-06T14:02Z"
}
HMAC-signed webhooks

Events post to your endpoint with an X-Warmbly-Signature header. Verify the HMAC-SHA256 digest before you trust the body.

contact.replied delivered 4s ago
CRM

From positive reply to closed won.

When a reply lands positive, Warmbly opens the deal and pauses the sequence on its own. From there you get one timeline that threads every send, open, reply, and stage change back to the exact sequence step that started it.

Born from the reply
A reply classified positive in the unibox opens the deal and pauses the sequence, so nothing keeps sending to someone who already said yes.
One timeline, traced to the send
Every send, open, reply, and stage change lands on the deal, each tagged with the sequence step and mailbox it came from.
Pipeline and forecast in one view
Move deals across your stages on the board while value, weighted total, and probability stay current on the record.
Tasks with a type and an owner
A positive reply spins up a typed follow-up task on the deal, assigned to a teammate with a due date, so the next step never slips.
See the CRM
app.warmbly.com/crm/deals
Deals
8 deals on Sales pipeline
Table Board
Search deals…
Open
7
active deals
Pipeline value
$140,000
open · all stages
Won
$42,000
closed won
Stages
4
on this pipeline
4 stages 8
live
Qualified 3
$59,700 open
Stratech
$45,000
rowan@stratech.io
Sequence · acme-fy26-q2
BH Enterprise
Northwind
$8,500
ravi@northwind.dev
JS Outbound
Spruce Bio
$6,200
lena@sprucebio.com
AM Inbound
Proposal 2
$39,500 open
Helio
$24,000
founder@helio.gen
MO Enterprise Inbound
Tidewater Labs
$15,500
ops@tidewater.io
CR Outbound
Negotiation 2
$40,800 open
Brightfold
$31,000
priya@brightfold.com
JS Enterprise Hot
Maple & Co
$9,800
sam@mapleco.com
AM Inbound
Won 1
$42,000 total
Cobalt Group
Won
$42,000
ceo@cobaltgroup.com
MO Closed
Deal DEAL-2026-0184

Stratech

Qualified Rowan Cole · VP Platform
Value
$45,000
Close
Jul 15
Weighted
$18,000
Probability
40%
Activity Fields Tasks
Activity · last 14 days 7 events 8 events
  1. note Ben Hsu

    Logged a call with Rowan. Sending the seat-tiered proposal.

    just now
  2. reply Rowan Cole

    Replied positively. Classified Positive, sequence auto-paused.

    2m ago
  3. stage system

    Deal opened in Qualified, linked to the reply.

    2m ago
  4. Follow-up Ben Hsu

    Auto-created from the reply, due Jun 10.

    2m ago
  5. note Ben Hsu

    Two opens on the Step 02 thread, no reply yet.

    Jun 05
  6. send sequence

    Step 02 soft follow-up, variant B, from ben@acme.com.

    Jun 05
  7. open system

    Opened Step 01, tracked near San Francisco.

    Jun 04
  8. send sequence

    Step 01 initial outreach, variant A, from ben@acme.com.

    Jun 02
Changelog Shipping continuously

The latest from Warmbly.

New features, behavioural changes, and fixes, in the order they reached production. Every entry is dated, tagged, and traceable to a commit.

View full changelog
  1. 2026-07-07 #63 New

    Launch prep: coming-soon banner, self-host warmup notice, trial/free-tier copy, and the SEO blog cluster

    • Site-wide LaunchBanner announcing Warmbly Cloud is coming soon (open source and self-hostable today, waitlist at…
    • Reusable WarmupPoolNotice explaining the shared warmup pool is a cloud feature; a self-hosted instance starts with an…
    • Trial copy updated to 3 addable mailboxes; free-tier limitation copy added (not for production, unfilled pool, good for…
  2. 2026-07-04 #62 New

    Feature/gmail imap sync fixes

    • Feature/gmail imap sync fixes.
  3. 2026-07-04 #61 New

    Fix realtime image publish: native multi-arch runners instead of 6h QEMU hang

    • Build linux/amd64 on ubuntu-latest and linux/arm64 on a native ubuntu-24.04-arm runner (no QEMU)
    • Push each arch by digest, then merge into one multi-arch manifest with docker buildx imagetools create
    • Per-arch GHA build cache scopes
  4. 2026-07-04 #58 New

    Fix Gmail and SMTP/IMAP sync/send bugs; bring both to parity with the Graph path

    • History sync mapped id-only stubs. History responses carry just {id, threadId, labelIds} — no envelope, headers, or…
    • Read state was inverted. The mapper turned the UNREAD label into \Seen — unread messages were recorded as read. \Seen…
    • MessageId-map key mismatch. Adds were keyed by RFC Message-ID, but remove/label lookups used the Gmail id, so removes…
Older releases and the full history Read the full changelog
Open source Apache 2.0

Read the code. Run it yourself.

Read exactly how warmup, sending and deliverability really work, self-host the whole platform, and send a pull request. Help us build the biggest open-source cold email and warmup platform.

100%
Open source
Apache 2.0
Fork it, ship it
$0
To self-host
Public
Issues and pull requests
warmbly · self-host
$ git clone https://github.com/warmbly/warmbly.git
$ cd warmbly
$ make up # build images, boot the full stack
Warmbly is live on http://localhost:8080
$

Every layer is open

  • Go Backend API Control plane and business orchestration
  • Go Consumer Turns Kafka events into platform state
  • Go Workers Distributed sending and mailbox sync
  • Rust Tracking Open and click pixel service
  • Elixir Realtime Websocket fanout for live dashboards
  • React Dashboard & admin The product UI and the admin console
  • Astro Marketing site This very site you are reading

Run it your way

  • Run on your own infra: Postgres, Redis, Kafka, S3, KMS
  • One make up command boots the whole stack
  • Cloud, with the shared warmup pool, is coming soon
  • BYOK encryption and SSO on enterprise

One caveat: the shared warmup pool runs on our cloud. It only works with a large base of vetted mailboxes sending to each other, which a single self-hosted instance starts without. Self-hosting still gives you the full sending, inbox, CRM and API stack. The pool is the one part that needs the cloud.

Built with Go · Rust · Elixir · React · Astro DocsArchitectureChangelogApache 2.0 license
Personalization / Templating

Go templating, rendered at send time

Every step is a Go text/template. Merge fields, if/else conditionals, and spintax all resolve per recipient the moment the email goes out, and the composer previews exactly what each contact will receive.

Merge fields

Pull any contact field with a leading dot. Missing values render empty, so a blank field never breaks the line.

{{.FirstName}}{{.LastName}}{{.Company}}{{.Email}}{{.Phone}}
Before / after
Hi {{.FirstName}}
Hi Alex

Conditionals

Branch on a contact field with if / else / end. Compare values with eq.

{{if eq .role "Engineer"}}
  We built this for teams like yours.
{{else}}
  Thought this might be useful.
{{end}}

Combine checks with and / or, for example {{if and (eq .role "Engineer") .Company}}.

Spintax

List variants in braces and Warmbly picks one per send, so the same step reads a little differently to every recipient.

{Hi|Hey|Hello} {{.FirstName}}
Picks one variant
Hey Alex Hi Alex Hello Alex

Everything resolves at send time, and the composer previews the result against sample data before you launch.

How we differ

Defaults that protect reputation.

Cold-email platforms typically optimise for volume. Warmbly optimises for sender reputation. The numbers below ship as defaults and the system enforces them.

Setting Warmbly Typical cold-email tool
Per-mailbox cold cap 50 / day default 200+ / day on request
Warmup pool composition Vetted, monitored, quarantined Mixed with trial mailboxes
Reputation response Acts at 10% spam placement Acts at 80%+ spam placement
Worker concentration Sum of mailbox budgets Flat per-worker ceiling
Auth validation on connect SPF · DKIM · DMARC checked Manual DNS setup, no check
Source available Apache 2.0 on GitHub Closed source
One platform

Warmup, sending, inbox, engineered together.

The signal one part collects is the signal the next part acts on.

Quarantines on warning, not catastrophe

Watch band kicks in at 10% spam placement, months before mailbox providers act.

Healthy
Watch
Quarantined
Blocked

Placement, not open rate

We probe inbox placement through the pool, then act on it.

96% inbox

Distributed across workers & IPs

One worker per machine. Each with its own IP. Migrable on the fly.

eu-worker-378%
us-worker-756%
eu-worker-141%

Sequences with branching, A/B and TZ-aware delays

Up to 12 steps. Variants per step. Business-hour delays by recipient time zone.

Step 12 variants
Intro · plain text
Step 2if no reply
Wait 3 biz days
Step 34 variants
Follow-up · context
Step 4if no open
Soft break · 7 days

Vetted pool, real reputation surface

Premium pool diversity across Gmail, Outlook, iCloud, Yahoo and self-hosted IMAP.

Gmail
46%
Outlook
24%
Yahoo
12%
iCloud
9%
Self-IMAP
9%
Pricing

Pay for what you send.

The number on each card is daily send volume. Warmup, the unified inbox, analytics, CRM and the API are in every paid plan.

Save 20%

Starter

Great for small businesses with a small budget.

$23

/ month · billed yearly

150 sends / day
Start free trial
  • Unlimited warmup
  • Unlimited mailboxes
  • 150 emails / day
  • Unified inbox + reply detection
  • Sequences with branching

Grow

Ideal for growing businesses scaling their outreach.

$71

/ month · billed yearly

3,000 sends / day
Start free trial
  • Unlimited warmup
  • Unlimited mailboxes
  • 3,000 emails / day
  • CRM · pipelines · deals · tasks
  • API & HMAC-signed webhooks
Most popular

Business

For established teams that need higher limits and advanced features.

$263

/ month · billed yearly

15,000 sends / day
Start free trial
  • Everything in Grow
  • 15,000 emails / day
  • Dedicated IPs
  • Team roles + audit log
  • Priority support

Enterprise

Large orgs with custom volume and dedicated support.

Custom

/ month · billed yearly

15,000+ sends / day
Talk to sales
  • Everything in Business
  • 15,000+ emails / day
  • BYOK encryption · SSO / SAML
  • Custom data residency
  • Dedicated CSM
All plans include warmup, sending, inbox, analytics and CRM. See full comparison

The free tier is a limited demo with an unfilled warmup pool. Use it to see what the product does, not to send at volume.

Send cold email people actually open.

Connect a mailbox, warm it up, send your first campaign today.