How do you test an automation before it touches real customer data?
You build a sandbox that mirrors the real thing, feed it data you invented, and break it on purpose before it ever sees a customer. The mistake most people make is assuming a test run is harmless. In many automation tools a test writes real records to real systems, which is the opposite of harmless.
This catches people out constantly, and it caught me out early. The word test carries an assumption from software, where tests run in isolation and nothing escapes. Automation tools borrowed the word without borrowing the isolation.
So here is the process I use before an automation is allowed anywhere near live customer data, including the specific failures I cause deliberately and the checks I run on the first real execution.
Why is testing an automation different from testing software?
Because the automation has real credentials to real systems. A unit test in a codebase calls a fake version of your database. An automation step calls your actual HubSpot account with your actual API token, and whatever it writes stays written. The test is not a simulation. It is a rehearsal performed on the real stage.
That difference changes the whole approach. You cannot make the tool safe, so you have to make the target safe. Every technique below comes back to that one idea: point the automation at something you are willing to have it damage.
It also means the blast radius is a design decision you make before you start, not something you discover afterwards. I have watched a test run create eleven duplicate contacts in a CRM because someone assumed the word test meant what it means in a code editor.
What does Zapier actually do when you test a step?
It performs the action for real. Zapier's own documentation is direct about this, stating that testing is live and may result in changes made in your app. When you test an action step, Zapier carries out that action on your behalf, so a test of a create-contact step creates a contact.
Zapier also documents what it requires before you can ship. Its help pages state that you must test your trigger step and all Filter and Paths steps, and that the Publish button will be disabled until you successfully test those steps. Other action steps can be skipped, and Zapier documents an option to skip tests to remove the warning icon without testing.
Read those two facts together and you get the real risk. The tool forces you to test the steps that only read data, and lets you skip the steps that write it. That is a sensible default for the tool, because writing is exactly what it cannot make safe for you. It just means the dangerous half is the half you have to think about.
Zapier describes a test record as a representative sample of the step's data when the Zap runs live. Representative is doing a lot of work in that sentence. A sample that happens to be clean will not tell you how the automation behaves on the messy record that arrives on a Tuesday.
How do you build a safe place to test?
Duplicate the destination, not the automation. Create a separate CRM pipeline, a separate Airtable base, a separate Slack channel, or a sandbox account where the vendor offers one, and point every write step at that copy while you build. The automation stays identical. Only the target changes.
I prefer a duplicate over a filter that says stop if this is not a test, because a filter is a line of logic that can be wrong. A separate destination is structural. If the automation misbehaves in a way I did not anticipate, it misbehaves inside a container I do not care about.
Name everything in that container obviously and ugly. Sandbox, test, do not use. When you swap to production later you want any leftover connection to the sandbox to be glaringly visible in a record, not a quiet mystery six weeks on. This is the same instinct behind writing things down before you ship, which I covered in my piece on the automation runbook and what to write before you ship.
What should your test data look like?
Like your worst records, not your best ones. Most people test with a tidy invented contact called Test User with a clean email address, and that record proves almost nothing. Your automation will meet names with apostrophes, empty fields, trailing spaces, wrong country codes, and someone who typed their phone number into the name box.
Build a small set of deliberately awful records and reuse it every time. Include an empty required field, a very long value, a name with an accent or an apostrophe, a duplicate of an existing record, and one that is simply blank. Five ugly records will teach you more than fifty clean ones.
The point is to find out what the automation does with input it did not expect. Silently writing garbage is worse than failing loudly, and you only learn which one you built by feeding it garbage on purpose. Bad data reaching a CRM is the specific failure I wrote about in how to stop an AI automation from sending bad data to your CRM.
Which failures should you deliberately cause?
The ones you expect to happen in the first month. Disconnect the destination app and run it. Revoke a token and run it. Send two identical records back to back. Send a record with the required field missing. Each of those is a Tuesday afternoon in real life, not an exotic edge case.
What you are looking for is not whether it fails. It will fail. You are looking at how it fails. Does the run stop and tell you, or does it continue and write a half-record? Does the message that reaches you say which record broke, or just that something broke?
An automation that fails loudly and specifically is safe to run. An automation that fails quietly is a liability, because the damage accumulates for weeks before anyone notices, and by then you cannot tell which records are wrong.
How do you test the parts that only break later?
By testing volume and time, not just correctness. A step that works once can still fail at fifty in an hour if the destination throttles you. A step that reads yesterday's records will behave differently on the first of the month. Neither shows up in a single manual test.
So run a batch. Push twenty records through in quick succession and watch whether anything gets dropped, duplicated, or delayed past the point of usefulness. Then leave the automation running against the sandbox for a few days and look at what accumulated, because the interesting failures are the ones that need time to appear.
This is also where you find out whether the thing should exist at all. If getting it to behave reliably takes more effort than doing the task by hand, that is real information, and I would rather learn it in a sandbox. I wrote about that decision separately in when you should not automate a workflow.
What do you check on the first live run?
Watch one real record go all the way through, by hand, before you let it run unattended. Pick a single genuine record, ideally one you own, trigger the automation, then open the destination and compare every field against the source. Not a spot check. Every field.
Then leave the automation limited for a short window. Many tools let you constrain a run by filter or schedule, so let it process a small slice of real traffic while you are watching, rather than the full stream while you are asleep. First live runs are where the difference between the sandbox and production shows up.
Keep the first day's records identifiable. If you have to unwind something, being able to find exactly which records the automation touched in its first twenty-four hours turns a crisis into an afternoon of cleanup.
When is an automation tested enough to trust?
When you know what it does wrong. That is a deliberately low bar and I mean it seriously. You are never certain an automation is correct. You can be certain you have seen its failure modes, know which ones are loud, and have a plan for the quiet ones.
My working standard is that I should be able to answer three questions without checking. What happens if the destination is down. What happens if the same record arrives twice. How will I find out something went wrong if I am not looking. If any answer is I am not sure, it is not ready.
Across 70 plus projects for 25 plus clients over 6 plus years, the automations that caused real trouble were never the complicated ones. They were the simple ones nobody tested against bad input, because simple felt like it did not need it.
What should you do next?
Take the automation you rely on most and answer those three questions honestly. If you cannot, spend an hour building a duplicate destination and pushing five deliberately broken records through it. You will find something, and finding it in a sandbox is much cheaper than finding it in your CRM.
Then write down what you found next to the automation itself, so the next person to touch it knows where the sharp edges are. Testing that lives only in your memory stops protecting anyone the moment you get busy.
I build and maintain automations for founders and small teams on fixed fees, with most projects landing between 1,000 and 10,000 dollars, and a fair amount of that work is making existing automations fail properly instead of quietly. If yours has never been tested against bad data, reach out and let's chat.
Get found, cited and the back office automated
Let's make your site the source AI engines quote and wire up the systems behind it.
Read more blogs
Let's get your website found and cited by AI
Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.