Skip to main content
email·digit

Stop automation emails once someone buys

Give every automation a goal a person has to choose to reach, such as a purchase, a reply or real engagement, and check it before every step, not only at the end. Then make each branch route people in a way you can predict, and keep a log of what happened at every step. Email Digit does all three, and refuses to publish a branch that could quietly send everyone down one path.

Why automations send the wrong email

The classic mistake is “Still thinking about it? Here’s 10% off” arriving the day after someone bought. It happens because most flows are a fixed list of steps: wait three days, send the reminder, wait two more, send the discount. The flow does not know the customer already bought, because nothing told it to look.

Three habits prevent most of these emails, whatever tool you use:

  1. Decide what success looks like before you draw anything. A purchase, a reply, a booked call. If you cannot name it, the flow has no reason to stop.
  2. Check for it before every send. A goal checked only at the end of the flow is a report, not a brake.
  3. Never use opens as the goal. Mail apps that preload images record opens nobody made, so an open goal can end a flow for a person who never read a word.

Goals in Email Digit

A flow’s goal is one of three honest signals:

GoalMet when
ConvertedA conversion is recorded for the contact
RepliedThe contact has replied to you
Became engagedThe contact’s engagement score puts them in the engaged or hot tier

The goal is checked before every step, not only when a contact reaches the goal step. Someone who buys halfway through a three-day wait leaves the flow at the next step, so the reminder after the wait never goes. For the Converted goal it is faster still: when your shop reports the order through the conversions API, their place in any flow with that goal is closed at the same moment.

Conversion goals depend on that API. Email Digit cannot see a purchase you never send it, so a flow with a Converted goal and no conversions coming in will run to the end for everyone. Your checkout needs to send one request per order to the conversions API before this goal can work.

One behaviour to plan around: the goal reads the contact’s whole record, not only what happened since they entered. A customer who bought last year already counts as Converted, and leaves a Converted goal flow at its first step. That is right for a first-purchase flow. For a flow aimed at existing customers, use a different goal, or none.

Branches that cannot misroute people

A branch splits contacts by a condition. The conditions are the same honest signals: has not replied, has not converted, has clicked, is engaged or hot, or has a particular tag. Each path out of the branch carries one condition, and one path may be marked Otherwise, for everyone the others did not catch. Paths are checked in order, and the first one that matches wins.

The flow will not publish unless every branch passes two rules:

  • At least two paths. A branch with one way out is not a branch.
  • At most one Otherwise path. Two paths with no condition would mean one of them silently takes everyone.

If no condition matches and there is no Otherwise path, the contact finishes the flow at that point. They are never forced down a path whose condition they do not meet. Add an Otherwise path when you want everyone to continue.

For a single step rather than a split, a send can carry an “only run if” condition instead, such as “only if they haven’t converted”. A contact who does not meet it skips that step and carries on.

A run log that does not round up

Every step a contact passes is written to the flow’s run log with an outcome: done, held, skipped or failed. A held send records the reason, so you can see why a person did not get an email:

Reason heldWhat happens next
On your do-not-send listThat email is not sent; the contact carries on through the flow
Weekly limit on marketing email reachedThe same send is retried 12 hours later
Quiet hours (9pm to 8am UTC, if you turned them on)Retried an hour later
Sending allowance used upRetried when the allowance resets

A step that is not built yet is logged as skipped with that reason, never as done, so the log cannot claim work that did not happen. Each entry names the contact, so two people’s runs are never mixed up. Alongside the log, a summary shows where active contacts are sitting, how finished contacts left (completed, goal met, stopped) and how many sends were held for each reason.

Limits worth knowing

  • Reply and engagement goals are checked at the next step, so a contact in a long wait shows as active until that wait ends. They still receive nothing more.
  • Quiet hours run on UTC, not each recipient’s local time.
  • Editing a live flow does not move people already in it. They finish the version they started, and new contacts get the new one.

The pattern holds in any tool: a goal checked before every send, branches that cannot fall through silently, and a log you can read. To try it on your own flows, start a trial and open Automations.

Share this guideShare on XShare on LinkedIn