Work through these steps in order. The status chips update live from your workspace, so you always know what is left before a mailbox can reliably land in the inbox.
1/8 completeServer and environment
doneThe API, worker and Postgres must be running, with strong secrets set before you connect anything.
cp .env.example .env # .env: APP_PASSWORD, ENCRYPTION_KEY (openssl rand -hex 32), # SESSION_SECRET, DATABASE_URL, API_URL (public https URL), APP_URL docker compose up -d npm install && npm run migrate npm run server # API on :4000 npm run worker # warmup + sending + inbox sync npm run dev # console on :8080
API_URL matters: open-tracking pixels, click redirects and unsubscribe links are built from it. Put a TLS reverse proxy (Caddy/nginx) in front of port 4000 and set API_URL to that public hostname.
Sending domains and DNS
pendingNever send cold email from your primary domain. Buy lookalike domains, then publish SPF, DKIM and DMARC on each one.
# Per sending domain, in your DNS: TXT @ v=spf1 include:_spf.google.com ~all # SPF — one record only TXT _dmarc v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com # DKIM: publish the key your mailbox provider gives you (Google, Microsoft, MXroute…)
Next Day Mail re-checks DNS continuously and blocks sending from any mailbox whose domain fails. Point DMARC reports (rua) at an address you read — or connect that mailbox and Next Day Mail will ingest the reports for you.
Outbound proxy
pendingEach mailbox must reach the internet from its own sticky residential IP — one IP for every account looks like a botnet to Google and Microsoft.
Add your proxy in Settings. 711Proxy users: paste your credentials, choose the 711Proxy sticky mode and set the session length — Next Day Mail rewrites the username per mailbox (sessid) so every sender keeps a consistent exit IP while senders differ from each other. Use the built-in test to confirm the exit IP and stickiness.
No proxy configured — all accounts currently share your server IP.
Warmup pool accounts
pendingSenders only ever warm against pool (seed) accounts — never against each other. The pool is what generates a real reputation signal.
Connect everyday mailboxes at Google, Microsoft, Yahoo, Apple and other providers and mark them as pool accounts in Accounts. Aim for at least 1 pool account per 2 senders, spread across provider families — the pairing engine prefers cross-provider conversations.
Sender mailboxes
pendingConnect the mailboxes you will actually send campaigns from — MXroute, Gmail, Outlook or any SMTP/IMAP provider.
Add each sender in Accounts (MXroute has a dedicated preset), keep warmup enabled, and leave the daily limit alone — the reputation engine ramps each mailbox from a few emails a day to full capacity over ~3–4 weeks and rests it automatically when signals degrade.
Run the doctor on every mailbox
pendingOne button per mailbox checks the entire pipeline end to end before it is allowed to spend capacity.
The doctor verifies proxy exit IP and stickiness, SMTP and IMAP auth, SPF/DKIM/DMARC, PTR/FCrDNS/TLS/HELO, warmup maturity, then sends a real message to a pool account and reads back where it landed. Every failure comes with the fix. Do not launch campaigns from a mailbox that has not passed.
Import and verify leads
pendingBounces are the fastest way to burn a warm mailbox. Verify every list before it touches a campaign.
Import CSVs in Leads with column mapping, add competitors and existing customers to the blocklist, and run verification — campaigns are gated so unverified leads cannot be sent.
Launch your first campaign
pendingBuild the sequence, preview the rendered email, pass the preflight gate, then let the pacing engine do its job.
In Campaigns, write the sequence and use the Preview tab to see the exact rendered email per lead plus the content heuristic warnings. The preflight gate re-checks DNS, mailbox health and pool readiness before the first send. Start small and watch the Deliverability board for placement by provider.