EmailBison
Sending and campaign QA
A cold email platform. It holds sender accounts, sequences and leads, and exposes almost all of it over an API so campaigns can be built and audited by script.
EmailBison is the other sending platform I work in. It does the same job as the rest of this category, and the difference that matters to me is that almost everything is reachable by API, so campaign QA can be a script rather than a person clicking through twenty campaigns.
How I use it
Everything gets read back. Before a launch I pull every campaign, every step, every sender and a sample of rendered leads, and check them against what the copy document says they should be. Presence, then logic, then quality: is the variable there, is the lead in the right segment, does the sentence read like a person wrote it. Three passes, in that order, because a quality judgement on a missing variable is wasted effort.
Infrastructure swaps go through a duplicate. Changing which senders a live campaign uses is not a field edit. I duplicate the campaign onto the new senders and move the uncontacted leads across, so the people who are mid sequence keep their thread and their history.
Signatures are checked on every attached sender, every time. They are a field on the sender account and they are easy to miss on a freshly connected batch, because nothing warns you. An unsigned mail from a named person is the fastest way to look like a robot.
Bulk variable updates go in batches of a few hundred. When copy changes and a variable has to be added to leads already loaded, I patch them in chunks rather than rebuilding the campaign, and confirm by fetching a sample back afterwards.
What I have learned the hard way
Moving leads to another campaign copies them. The leads stay in the source campaign as well, still scheduled. If you do not stop future emails in the source, the same person gets both sequences, and the first sign of it is a confused reply.
Page size is capped whatever you ask for. The campaign leads endpoint quietly returns a small page no matter what limit you send, so a script that asks for a thousand and takes the first response believes it has everything. Every count I take from that endpoint is paged to the end.
Search is fuzzy, so it will hand you the wrong person confidently. Never treat a search result as proof a lead exists. Assert an exact address match, or fetch the record by its id.
QA on a paused campaign returns nothing by default. Which looks exactly like a clean campaign with no problems. Pre launch campaigns are usually paused, so this is the state you are most likely to audit and most likely to misread.
Two small edges that cost a real send: a reply step gets Re: prepended
automatically, so sending a subject that already has it produces Re: Re:. And
sequence steps have no update endpoint, so editing one means deleting and
recreating it, and the last remaining step cannot be deleted at all.
Resources
This is one part of a stack. The rest is on the tools page, and what I build with it is on work.