Skip to content

Pre-send checker

Check a sequence step and its lead CSV for gaps before anything is sent.

In your browser

What you enter, paste or load stays on this page and is never sent to us.

The step

Spintax as {a|b}, merge tags as {{first_name}} or {{ first_name | default: "there" }}. The same reading as the spintax and Liquid tester.

The leads

The CSV you will import, or a sample of it, with a header row.

or drop one here
Or paste the CSV

Runs in your browser. The copy and the file stay on this page.

This tool runs in your browser and needs JavaScript.

How long sending takes

Every number here is yours; none is filled in for you except the leads, which start at the count from your file. The estimate counts sending capacity only: the wait between steps comes on top for the last leads.

Your number. Starts at the leads in your file; raise it if the file is a sample.

Your number: inboxes this campaign sends from.

Your number: the daily limit you set on each inbox.

Your number: emails each lead gets if nobody replies.

Your number, 1 to 7. Leave it empty for the answer in sending days.

Enter the leads, inboxes, emails per inbox and steps as whole numbers, each 1 or more, to see the estimate.

What is a pre-send check?

A pre-send check reads a campaign step together with the leads it is about to go to, the way the merge will, before anything is sent. It catches the mistakes that only show once the two meet: a merge tag with no matching column, blank cells, broken spintax, the same lead twice and addresses that cannot be sent to.

Reading the result

Each merge tag is matched to a column, exactly or ignoring case, spaces, _ and -, so first_name finds First Name, and the match is shown. Gaps are counted over the rows that would be sent: valid addresses, each once. The send estimate uses only your numbers: leads times steps, divided by inboxes times daily sends per inbox, rounded up to whole sending days. Nothing is uploaded.

Common problems it finds

  • A tag your file does not have

    {{company}} in the copy and Company Name in the file do not match, so the tag prints nothing for every lead. Rename the column or the tag.

  • Blank cells behind a tag

    One empty first_name in a thousand rows is one email that opens "Hi ,". The checker lists the rows, or you can add a default to the tag.

  • Duplicates and invalid addresses

    A repeated address gets the step twice, and a malformed one bounces or is skipped. Both are counted, with examples, and left out of the gap counts and the estimate.

  • A schedule that does not fit

    The estimate counts sending capacity only. Each lead waits between steps, so the last leads finish later than the estimate. It never assumes a sending limit: the numbers are yours.

Pulse · cold-email sending

Sending infrastructure that is yours alone.

Every domain gets its own MX host, IP, DKIM selector and certificate. Managed Pulse is available now, and we run it for you; the self-hosted version arrives in Q4 2026.

# on a fresh Ubuntu server
$ cd pulse && sudo ./install.sh
→ docker compose up · kumomta · stalwart · caddy
→ dashboard ready on https://pulse.yourdomain.com
$

Also from us:Beat: monitoring that tells you the fixConsulting: $65/hr, no retainer