Skip to main content
Everything on Overview and Sending can be done from the workspace. This page walks through that end-to-end.

What you’ll build

A sending domain, one mailbox on it, warm-up running, and a play that sends from that mailbox as new contacts land.

Step-by-step

Step 1: Register a domain

  1. Open Settings → Domains
  2. Buy a sending domain, or bind one the workspace already owns
  3. Wait until its status is active — a new registration sits at pending while the registrar provisions it
  4. Confirm MX and SPF are in place if you are not letting Cargo publish the zone
A mailbox can only be created on an active domain the workspace owns. The same domain is what defineDomain manages from code, and the same mailbox is what defineMailbox declares. The create-mailbox form only lists active domains.

Step 2: Create a mailbox

  1. Open Send → Mailboxes and click New mailbox
  2. Pick the domain, a type (Google, shared, or private), and the local part of the address
  3. Fill in first and last name (the From display name) and an optional signature
  4. Optionally file it in a mailbox folder
The mailbox starts pending. The overview page polls until the provider has issued credentials and the status becomes active. Only then can it send. Auth failure or a spam flag later moves it to inactive and sending stops. Monthly credits start being charged once the mailbox exists. See Overview for the rates.

Step 3: Start warm-up

On the mailbox Overview:
  1. The Warm-up card reads “Warm-up is off” until you start it
  2. Click Start — that both turns on Mailpool’s dummy-mail pool and starts Cargo’s 45-day send ramp
  3. Pause / resume from the same card; Stop tears the pool down and resets the ramp to 5/day
Until warm-up has been started, Send allowance → Daily limit stays at 5, even if the mailbox is months old. That is the never-warmed floor, not “unlimited because warm-up is off”.

Step 4: Read send allowance

The Send allowance card is what the pacer actually uses:
  • Daily limit — the ramp right now (5 → 40 over 45 days)
  • Sent — successful deliveries in the last rolling 24 hours
  • Left — headroom in that window
If Left is 0, further sendEmail nodes wait for a send to age out of the window. A send-email span that sits pending for hours is that wait. See Sending.

Step 5: Add a Send email node to a play

  1. Open (or create) a play on the contacts model
  2. Add a Send email node from the palette (Sales)
  3. Pick the mailbox, map To / Subject / Body from the record
  4. For a reply, set In reply to and References so the thread stays together
  5. Connect it downstream of whatever enriches or drafts the body
The visual node is the same sendEmail action sendEmail() emits in code. Re-deploying a changed CDK play overwrites canvas edits on that play — see Code and UI round-trips.

Step 6: Watch the thread

  • Workspace Emails lists every thread across mailboxes
  • A mailbox’s Emails tab lists that inbox’s threads
  • Open a thread for the outbound copy, then opens, clicks, replies, and unsubscribes as they arrive
A recipient who clicks unsubscribe is added to the workspace suppression list and will not be mailed from any mailbox.

Next steps

Overview

Domains, mailbox types, folders, and the API.

Sending

sendEmail(), the warm-up ramp, and per-mailbox pacing.

Build a play

Run sendEmail on each new row of a model.

Workflows

The TypeScript DSL sendEmail() lives in.