Measure
Automations
Flows that act at the moments that matter: an email when someone signs up, a reminder when a checkout stalls, a note to you when a lead looks at pricing.
An automation (a flow) waits for a moment, like a signup or a stalled checkout, then runs its steps for that one person. Each site has its own flows, on the site's Automations tab.
Automations are on paid plans: Solo, Studio and Agency. Free shows the tab with the plans.
Make a flow
- Open the site, then Automations.
- Pick a template, such as Welcome new signups or Abandoned checkout, or press New flow.
- Press the trigger at the top to choose what starts the flow.
- Press + between steps to add one. Press a step to change it in the panel on the right (on a phone it slides up from the bottom).
- Drag a step by its handle to move it, or use the up and down arrows in the panel.
- Press Test run, pick a person, and read what each step would do for them. Nothing is sent.
- Press Publish. The flow is live.
Changes save as you go, as a draft. People already in a flow keep the version they started on. Publish changes makes a new version for everyone who starts after that. Pause stops new people from starting; people on the way wait until you press Resume.
Triggers
| Trigger | Starts when |
|---|---|
| Someone gives their email or phone | A profile gets an email or phone for the first time: a website form, the Events API, a connected store or tool. Never from an import. Pick Website forms only to start only from forms |
| Someone reaches a goal | Any goal, or the one you pick |
| First visit from an ad | Their first visit, with an ad click id in the address. Any ad platform, or the one you pick |
| Someone comes back after a while | They visit again after at least the days you set |
| Someone visits a page | A page like /pricing. Use * for any part, like /pricing* |
| Checkout started, no purchase | They reach a checkout page (like /checkout*) or send a checkout event (like InitiateCheckout), then buy nothing within the minutes you set |
| Someone buys | A sale from Stripe, Shopify, the Events API or your script, optionally above an amount. One sale starts a flow once, even when two sources report it |
| Someone clicks a short link | They visit through any short link, or the one you pick |
| Someone joins a segment | They join a segment. Checked every 15 minutes. People already in it when you publish are left out |
| A deal is won in your CRM | (when shipped) |
Triggers that come from visits (goals, pages, ads, links, checkouts, coming back) need Attribution mode, and consent where the site waits for it, because they follow one person.
Can someone go through it again? Once only, Again after some days, or Every time (one run at a time). Stop when they buy ends their run as soon as a sale comes in. Abandoned checkout flows always stop on a purchase.
Steps
| Step | Does |
|---|---|
| Wait | For minutes, hours or days, or until a time of day in their time zone |
| If / else | Checks one thing, then runs the Yes steps or the No steps. The two paths do not join again |
| Send email | Your email, built from blocks |
| Send text | A text through Twilio (when shipped) |
| Add tag | Puts a tag on the profile, for If / else steps and for finding people later |
| Send to webhook | Posts the profile as JSON to an address you give, signed |
| Push to CRM | (when shipped) |
| Notify me | Emails you, with a link to the profile |
| End | The flow ends here |
If / else can check: has an email, has a phone, agreed to texts, came from a source, came from an ad platform, came from a campaign, visited a page, reached or did not reach a goal (within some days, or since they entered), is in a segment, spent more than an amount, has a tag.
Their time zone comes from their email or text tool when it told us one, else from the first country they visited from (a guess), else your site's time zone.
Build an email from blocks: heading, text, button, image and divider. Links in text and buttons are counted when clicked.
Merge fields fill in for each person: {first_name}, {name}, {source}, {campaign}, {last_page} and {site_name}. Add a fallback after a bar for people you do not know the field for: {first_name|there}.
Press Preview to see it with a sample person, and Send a test to me to get it in your own inbox.
Every email:
- Comes from your From name, with replies going to your Replies go to address (your account email when empty). The address it is sent from is Sporetag's sending address. Sending from your own domain is (when shipped).
- Ends with your name, your postal address and an Unsubscribe link, as the US CAN-SPAM Act asks. A flow with an email cannot go live until the postal address is set in Automations settings.
- Carries one-click unsubscribe headers, so Gmail and Apple Mail show their own unsubscribe button.
- Has a plain-text version.
Emails go only to people whose email is stored: Show contact details must be on, in the settings of the site's customer profiles. Someone who unsubscribed, from a flow email or in Klaviyo or Mailchimp, is skipped.
Texts (when shipped)
Texts go through Twilio. Until Twilio is set up for Sporetag, text steps are skipped and say why. Once it is:
- Consent first. A text goes only to someone with consent to texts on record: a ticked box about texts on your website form (with form capture on; its words are kept as the record), or a yes in an imported Agreed to texts column. Everyone else is skipped.
- Quiet hours. No texts from 9 pm to 8 am in their time zone. A text due then waits until 8 am.
- STOP works at once. A reply of STOP (or STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT) stops all texts from that site. START turns them back on. HELP gets a short answer.
- Your brand first. Each text starts with your brand name, and the first text a person gets ends with "Reply STOP to opt out."
- US numbers need 10DLC. Carriers block business texts to US numbers from unregistered senders. Register your brand and campaign with Twilio first (Twilio's guide).
- The editor counts characters and message parts. A plain text fits 160 characters in one part; emoji and some letters bring that to 70.
Limits
| Plan | Live flows per site | Emails a day per site | Texts a day per site |
|---|---|---|---|
| Solo | 5 | 500 | 100 |
| Studio | 25 | 2,000 | 500 |
| Agency | 100 | 10,000 | 2,000 |
Set a lower daily limit in Automations settings. A send past the day's limit waits until the next day (UTC), it is not dropped.
Numbers
Each flow shows the last 30 days: how many people entered and completed it, emails sent, opened and clicked, texts sent, delivered and replied, and sales. Each step shows its own counts on the canvas.
A sale counts for a flow when the buyer's last flow email or text came within the days you set in settings (5 by default): last touch. The Attribution tab shows these sales in a By automation table.
Opens are counted when the email's images load. Some mail apps load them on their own, so opens run high. Clicks are a better signal.
Webhooks
A Send to webhook step posts JSON: the flow, the step, the site and the profile (id, label, email and name when stored, first and latest source, orders and revenue). It is signed: x-sporetag-timestamp and x-sporetag-signature: sha256= the HMAC-SHA256 of the timestamp, a dot and the body, with the key in Automations settings, under For developers. Addresses must use https.
How it runs
Steps that are due run every 15 minutes, so a wait of 10 minutes can take up to 25. The first steps of a flow run the moment it starts. Each step is recorded before it acts, so an email or text is never sent twice, even when something is retried.
Something missing or wrong? Email hello@sporetag.com.