Run a campaign
The safety checks Galactic Outreach runs over every batch, the SEND or HOLD verdict they add up to, and the Send page, the one screen that sends, with the limits that hold it back on purpose.
By Joan Gumban · Last updated
Safety checks runs over the rendered batch (the actual messages, to the actual addresses) and returns SEND or HOLD. A HOLD is enforced by the code that sends, not by the button being greyed out, so it holds for a scheduled send at three in the morning exactly as it does for you at your desk.
The checks cover the things that are expensive to get wrong: a missing postal address, a footer link that goes nowhere, a batch that has already been sent, addresses on the do-not-contact list, leads in countries that require opt-in, a sending domain without SPF or DMARC.
Three limits sit outside the verdict and stop a send on their own: the email credits you have left, your email provider's own sending limit, and a suspension we place on a campaign by hand, usually over spam complaints.
They are computed over what is rendered. An empty or half-rendered batch is caught rather than passing vacuously. A check that nothing failed because nothing was there is the failure this was built for.
A campaign with a sending domain runs 29 checks. A blocking check holds the send until it is fixed; an advisory one is shown but does not stop it. Where a check can do either, the table says when it blocks.
Until a sender address is set, or while DNS cannot be reached, the five domain checks (SPF, DKIM, DMARC, Replies reach you, Name matches domain) are replaced by one, Sending domain, which blocks when no address is set and only advises when DNS is down. That makes 25.
| Check | Blocks the send? | What it looks at |
|---|---|---|
| Leads ready to send | Blocks | Whether anything is queued at all |
| Emails are written | Blocks | Whether the preview has written the batch the other checks read |
| Broken email addresses | Blocks | Addresses in the batch that would bounce on sight |
| Already contacted before | Blocks if the whole batch was sent before, shown then as Last batch already sent: the last run's emails, still on screen, until the next batch is written. Advises if part of it was | Recipients already in the send history |
| Send history is readable | Blocks | Past sends whose status cannot be read, which would let a repeat through |
| Do-not-contact list respected | Blocks | Emails addressed to anyone on the do-not-contact list |
| Countries that require opt-in | Blocks | Emails written for a country where Galactic holds every lead |
| Claims we can back up | Blocks | Emails claiming a problem on a site where none was found |
| No blanks left in the text | Blocks | Template blanks such as {{name}}, undefined or NaN left in an email |
| Drafts match the current list | Advises | Emails written for leads no longer on the list |
| Opt-in countries kept off the list | Blocks | Leads in a country where Galactic holds every lead, marked ready to send |
| Privacy rules recorded | Advises | Whether each lead carries its country's rule |
| Every lead has a country | Advises | Leads with no country, so no rule could be applied |
| European recipients | Advises | Leads in the EU, UK or Ireland, and whether the line saying where you found them is on |
| Address quality on the list | Advises | Queued addresses with defects, cleaned up before sending |
| No duplicates | Blocks | Addresses on the list more than once |
| Opt-outs not slipping through | Advises | Leads who opted out on their website but whose address is not blocked |
| Subject lines under 60 characters | Advises | Subject lines long enough to be cut off in the inbox |
| Subject lines sound human | Advises | Subject lines that read like a heading copied off the recipient's site |
| Emails written | Advises | How much of the list has an email written; normally a batch, on purpose |
| Site address is set | Blocks | The site every email links to, which the unsubscribe link is built from |
| Postal address in the footer | Blocks if missing; advises if it looks like a placeholder | The physical address printed under every email |
| SPF | Blocks | An SPF record for the sending domain |
| DKIM | Advises | A DKIM key at a selector the app knows; Amazon SES selectors cannot be guessed, so SES senders may see this with DKIM working |
| DMARC | Blocks if missing; advises on p=none or with no report address | The domain's DMARC record |
| Replies reach you | Blocks | An MX record, so replies to the From address arrive |
| Name matches domain | Advises | Whether the From name and the domain look like the same sender |
| Links point at you | Advises | Links in the emails that go to a different domain from the one sending |
| Bounces and complaints within your provider's limits | Blocks at the provider's own line (Resend 0.08% complaints, 4% bounces; Amazon SES 0.1% and 5%; Mailgun and SendGrid 0.1% and 4%); advises when it cannot be measured | Bounce and spam-complaint rates over the last 30 days, from the provider's webhook, once 200 emails have been sent |
The Send page writes the batch and sends it. It was called Review & send until October 2026; the reviewing happens on Templates and Safety checks. Every email is written for its lead and checked before anything can go out — the preview, which runs by itself (there was a Preview button until October 2026, and a Dry run button before that). There is no template to pick: each lead gets the template set for its industry, and the Template filter under Which emails shows how many are waiting for each, to narrow a send to one. The preview is not decorative: the gate reads the rendered batch, so a send without a fresh one is refused rather than guessed at.
Send a test sends one email to an address you type, with the template you pick, through the same provider. It is free: it uses no credit and stays out of every chart and total. A campaign can send up to 20 test emails a day.
After a lead search or a CSV import finishes, or a template is published, the preview runs by itself, so the batch is already written when you open the Send page. It needs an email provider connected, since the preview renders with its settings, and a published template set for an industry; the search's finish card points you to whichever is missing. It uses the panel's defaults: every template, each to its own industries, the whole queue. Narrow the send, to one template or a city, and the batch is written again a moment later, so the checks read the batch you will actually send; the same happens when you open the page with no batch, or after connecting a provider. Once you have fixed something a safety check flagged, press Check again in the Send card. Nothing is sent until you press Send or a schedule runs.
Send sits in the Send card's header, and one press sends. It stays off until sending would go through, so you are never told no after pressing it: the card's description says why it is off and links to the fix — wait for the batch, fix a safety check and check again, connect a provider, add a From name, get credits. If you change the template, city or limit, the batch is written again before Send turns back on. On the Follow up tab it stays off while a safety check that holds follow-ups is failing, such as a missing postal address.
When a send you started finishes, the next batch is written by itself with the same settings, so sending more is pressing Send again. For an hour after, the Send card's description also offers Schedule this send: it opens the schedules with that send's templates and limit filled in, so you pick the days and time and add it. A schedule cannot narrow by city or by when leads were found, so if your send did, the form says so above it.
Three things hold a batch back, and they are separate: a send stops at whichever it reaches first.
A new sending domain has no reputation yet, and mailbox providers judge it by how fast its volume grows. Raise each run's limit — Most per run, on a schedule — one step a week, and only after a clean week.
| Week | Emails per day |
|---|---|
| 1 | 10–20 |
| 2 | 20–30 |
| 3 | 30–40 |
| 4 | 40–50 |
| 5 onward | 50 at most |