Help · Automations

Steps in an automation

Steps are what an automation does once somebody is inside it. Most send something or wait; the rest put people on lists, set properties or tell your team.

A Send email step sends one email and a Text message step one text. A Wait holds people for a time before the next step, and a Split sends each person down the first path whose rule they match. Press a step’s card to set it up in its panel.

Send email. A send step always has an email — it is made with the step and cannot exist without one. Its panel leads with the email: a small preview of it, then its subject and preview text — and its name too, when the name is not just the subject again — then Edit email, Send test and Change template. Press the small preview to see the email at full size. The subject, the preview text and the From name live with the email, so there is one place to write each, and Edit email opens it in the email editor. There, Back to the automation (or your browser's Back) returns you to this step with its panel open. The From name is who the person sees it from: leave it empty and the step sends under your store’s own From name from Settings → Store, or set one for this email alone — “Rosa @ Fennimore & Vale”, say, if a particular person should appear to be writing. Changes to the email reach people only when you apply changes to the automation: a running automation keeps sending the email as it was when changes were last applied. When the email has changed since then, the panel says so in one amber line:

and, on a step that is already sending, adds that people still get the earlier version until you apply them. When nothing has changed there is no line at all.

Under Sending, choose Draft, Manual or Live; the ⓘ beside the heading says what each one does. Email type is a switch between Marketing and Transactional, with what the choice means under it:

A transactional email does not need an unsubscribe link or your store's address, and the email editor's checks follow the switch: open a transactional step's email and it is not told to add them. Switch a step back to Marketing and its email needs both again: if either is missing, Publish says so and the automation is not published until they are in.

If an integration or your online store can start the automation, the Email type card also says the frequency limit always applies to this step:

Its ⓘ gives the reason:

An email in an automation that starts with an event can use that event's details — "Order #1042 is on its way." In the email editor, Insert has a From the start event group; Details from the start event below lists what each event carries and what Shopify calls each detail, and the Email templates page explains the rest. A block can be shown only when a detail matches — a different block for each carrier — and a button can go to the tracking link; see Show a block to some people and Where a link goes.

An email in an automation can give a discount away. Put a discount block in it — or, in a text-only email, choose the discount under Discount in Settings — and pick a discount you made in Shopify. A code for each person works for the number of days you choose after that person's email is sent, and the email prints the last day. The discount's own code is the same for everybody and works until the discount ends in Shopify, so the block asks for no days and says so where Expires would be. Discounts has the whole story, including one code per person per day.

If the discount is deleted or ends in Shopify, or Shopify is testing it on only some shoppers, nobody is sent a code that would not work. People wait at that email until the discount can be used again; owners and managers are emailed once, and again on day 3. The automation shows Needs attention on the Automations screen with the number waiting, and its own page says what to do. Choose another discount in the email and apply your changes, or fix it in Shopify, and the people waiting are sent the email on their own. After 7 days the person skips that email and carries on, and the automation's page counts it among the messages not sent, as Discount could not be given.

When the email is set to Manual and people are waiting at it, the panel says how many and offers Review and send, which opens the page where your team sends it to them or skips them — see Manual messages, in the Draft, Manual and Live chapter.

Text message. The words of the text, up to 1,600 characters, with Insert a field for the person's first name or the current year and a count of characters and message parts under it. A first name is capitalized when the text goes — jane and JANE are sent as Jane, while McDonald stays as it is — and Capitalize names, ticked under the box once the text names somebody, disables that for every name in the text ({{first_name|exact|"there"}}). A name from the start event, like the ship-to first name, is capitalized the same way and the box covers it too ({{event:shipping_first_name|exact|"there"}}); a city or street never is. A name we cannot capitalize safely — written in an alphabet other than Latin, Greek, Cyrillic or Armenian — is sent exactly as typed. If capitalizing would make a text cost more to send, every name in that text is sent exactly as typed. The count is worked out from what you typed, so read it as a best estimate rather than a promise: a name filled in when the text goes, and the lines added to every text as it is sent, can change it.

In an automation that starts with an event, Insert a field also offers the start event's details — the order number of the order that started it, say. (A form's answers are saved to the person's profile, not to its event, so an automation that starts with a form has no start-event details to offer.) Choose A detail of Placed Order… (named for your own start event), pick the detail, type the word to send when that person's event has no value for it, and choose Add it. It goes into the text as {{event:order_number|"your order"}}, which is filled in for each person from their own start event when the text is sent. The count under the box reads it as its fallback, and says the real value may make the text longer. A yes-or-no value sends your fallback.

The word is optional. Leave the box empty and Add it writes the detail with empty quotes — {{event:order_number|""}} — and {{first_name}} with no word at all is accepted too. Somebody with no value gets nothing there: the doubled space it would leave becomes one, and a line made only of empty details goes, with no blank line. Punctuation stays as you wrote it, so a word is still worth adding inside a sentence — and when a detail with no word sits in the middle of one, a quiet line under the box says so: Add a fallback so this sentence reads well when it’s empty. It never stops you saving or sending. Anything in double braces that is not written the way a detail is filled in is still refused. An automation that starts any other way has no start event: a text carrying one says so under the box, and enabling the step is refused until it is taken out.

A text step can be written before your store sends texts. Until text messages are enabled in Settings → Text messages, the step stays a draft and the panel says so:

The card on the map says the same thing, and so does the Text message tile in the tray. A draft text step never stops you applying changes to the rest of the automation.

Once text messages are enabled, a text step can be set to Manual or Live, and it sends once your number is approved. Until then, people who reach a live text step wait at it, and their place says waiting for your text message number to be approved. Somebody who has waited there seven days goes on to the next step without the text, and the text is recorded as not sent.

Attach your contact card. A switch under the words. Enabled, the text carries your store's contact card, so the person can save you to their contacts in one tap. It is off unless you enable it, and it cannot be enabled until your card is set up — the panel says so and links to Settings → Text messages, where the card lives (the Text messages page covers it). The words of the text are exactly the same either way.

A text with your card attached is billed as one multimedia message (MMS) — $0.0446 each in the US and Canada (the pricing page lists it), so enable it where being saved to someone's phone is worth it — a welcome text, say — rather than on every text.

Wait. How long before the next step, in minutes, hours or days, up to a year. Under Then wait until a time of day, a wait can also be told to continue at a particular time, and under Only on these days to go on only on the days you tick:

Every one of those runs on your store’s clock, not the recipient’s, and the note beside the switch names the zone — Store time zone: America/New_York, for a store in New York.

Your store’s frequency limit still applies to what an automation sends. A single send step can be told to ignore it, but not on an automation that can be started from outside — the limit is what bounds how much a made-up event could send:

Split. Several paths, each with its own rule, and a last one that cannot be removed. The split's panel lists the paths in the order they are checked, each with its name and its rule in a sentence:

Drag a path by its handle to reorder it, or use its … menu, which has Move up and Move down. Everyone else is always last:

Add a path adds one to the end, before Everyone else, and the count beside it says how many you have — a split holds at most 20, counting Everyone else. Press a path to open it and give it a name and a rule.

After a split, everyone carries on with whatever comes below Paths meet again. A split left as a draft is skipped whole:

An automation that starts with an event knows which event it was, and its details can go into an email, into a text, into a block's Show this only when… rule, or behind a button as its web address. All four pick from the same list, Which detail.

Are we renaming Shopify's fields? Yes — into plain words, one name per fact, and Shopify's own name is shown beside each. Every row carries what Shopify calls it in small gray type, so you can match a detail to Shopify's own documentation or to the tool you are coming from. Typing searches both names: tracking_company finds Carrier as surely as carrier does.

For the order events — Placed Order, Fulfilled Order, Partially Fulfilled, Cancelled Order and Refunded Order — and the shipment events — Label Printed, Label Purchased, Confirmed Shipment, In Transit, Out for Delivery, Attempted Delivery, Ready for Pickup, Delivered Shipment, Shipment Failure and Shipping Updated — the list is grouped:

Checkout Started has its shipping address under Ship to — City, with Shopify's shipping_address.city beside it — the shipping method under Shipment, and its money under a group headed Checkout, whose page is the Checkout page rather than the order status page. Everything else it carries — the discount code, the number of items — is under More from Shopify.

The return events — Requested Return, Return Approved, Return Declined, Return Canceled and Return Closed — are grouped too. A return has no shipment or address of its own, but it carries its order's number and shipping method: the order number and the order status page are under Order, the shipping method under Shipment, and every return detail — the return number, the reasons, the number of items — is under More from Shopify.

A fact is listed once. An order event also knows the newest shipment's destination; its city is the same fact as Ship to: City, so it is one row, not two. And there is no separate Value row where Total already says it.

In an email, a ship-to detail reads Ship to: City or Ship to: Address line 2, so it is never mistaken for the profile's own city or name. Every other detail reads its row's name — Carrier, Order number, Shipping cost.

An event whose name Shopify does not send — one your own integration names, say — has no groups. It lists the details it carries, as they were sent, with no Shopify name beside them, because whoever sent the event named them. The groups go by the event's name, not by where it came from: a Fulfilled Order sent with your store's API key is grouped like Shopify's own.

What you see → what Shopify calls it

On a shipment event every Ship to row is the shipment's destination, so Shopify's name starts destination. instead — destination.city, destination.zip. On Checkout Started, Order is headed Checkout.

A fallback is never forced. A detail's fallback is what shows when that person's event has no value for it; leave it empty and nothing prints, and a line made only of empty details goes with no blank line. The Email templates page has the whole rule.

Add to list, Remove from list, Update property and Team alert do something for you rather than send the person anything. Each one is in the tray and behind every + like any other step.

Add to list, or Remove from list. When somebody reaches the step, they are put on the list you chose, or taken off it. The list picker puts your biggest lists first, and you can type to search. The panel says what the step does not do:

Joining a list this way is like joining it any other way — an automation that starts when someone is added to that list starts for them.

An automation cannot add people to the very list that starts it, because it would start itself again; the panel refuses that list on the spot. And if automations keep putting one person on the same list — more than three times in a day — they stay on it, but it stops starting anything for them that day, so two automations can never pass somebody back and forth for ever.

If the list has been archived by the time somebody reaches the step, they stop there rather than skip past it — nobody is quietly passed over. The panel says so when a list you chose has gone, and you cannot apply changes until you choose another.

Update property. Sets one property on the profile — Set it to a value — or takes it off with Clear it. Pick the property from the ones your profiles already carry, most used first, or type a new name. Save as says what kind of value it is: Text, Number, or Yes or no; a number that is not a number is refused at the field. Use it to mark where somebody has been: loyalty_tier set to gold, say, which a segment or a later split can then read. It never writes what this app keeps up to date itself: a person’s email address, phone number or name, their consent, whether their identity is confirmed, their Shopify tags, or anything an import or your store keeps for you. The panel says so:

Team alert. Emails one or more team members — up to ten — when somebody reaches the step. You choose who from your team, write the subject and, if you like, a short message; the email adds who the person is and a button that opens their profile. The subject is sent exactly as you write it, with no fields in it:

It comes from Carpe Messaging, not from your store, and it never goes to the profile. A team member who has left, or whose access is disabled, is drawn struck through as No longer on the team and is skipped — and an automation whose team alert names nobody who can still receive it cannot have its changes applied. So that a busy automation cannot bury anybody, one step emails one team member at most ten times an hour, and your store sends at most fifty team emails an hour across all its automations; anything past that is not sent. The panel says the same:

Each cap counts every try, including one that could not be delivered. The step never holds anybody up — whether or not the email could go, the person carries on.

A team alert is Draft or Live, never Manual. Enabling one is like enabling a message: it needs the same permission, because it goes out unattended.

A Send email step can carry a rule of its own, on the Only send if… card, with + Add a rule beside the title. It is built from the same rows a segment is built from. Anyone who does not match skips that one email and carries on through the rest of the automation.

With no rule the card reads Everyone who reaches this step., and its note says what the rule does:

It is not the automation filter, and the difference is the whole point. The automation filter decides who is in the automation at all, and somebody who stops matching it leaves and is sent nothing more. A send filter withholds one email. Nobody leaves, nothing ends, and everything after it still happens for them.

Only a Send email step can have one. A wait has nobody to filter, and a split is already how you send different people different things.

The map marks a send step that is not going to everybody with the words Only some people on its card, and previewing as a person says, for that person, which emails would be sent and which would be skipped.

A rule built somewhere this panel cannot draw — imported from another tool, say — is shown to you as a sentence and left exactly as it is, rather than quietly rewritten into something simpler.

When you add a Send email step, the first thing offered is Start from a template: one of the templates your store has saved, with a search field over them. Writing a new email from a starting point is still there, as the other choice.

A copy is made, and the picker says so before you choose.

The template's content is copied into an email that belongs to this step, and there is no live link back: editing that template afterwards changes nothing this automation sends.

It goes the other way too. An email you built inside an automation can become a template: open it in the email editor, open Versions, and use Save as a new template on the version you want. What you get is a template like any other, and any automation or campaign can start from it.

A store with no templates yet is told so, and offered the blank email instead.

An email step's panel has a Change template button beside Edit this email and Send test. It opens the same picker. Choose a template — or Write a new email instead — and you are asked once more before anything changes. The question names the template you chose and tells you where your current design goes: it is saved in the email's Versions, named for what replaced it — Before “Spring sale” if you chose a template called Spring sale, or Before a new blank email — so you can always go back to it. A very long template name is shortened with “…” to fit.

Only the design changes. The step stays where it is, with its Draft, Manual or Live setting, its Only send if rule and everything else you set on it. The template itself is not touched — the step gets a copy, as it did when it was added.

To the automation, this is the same as editing the email: the panel says the email has changed since the automation's changes were last applied, and an automation that is on keeps sending the version it already had until you press Apply changes. The email's subject, preview text and From name stay as they were.

A send step’s panel has Send test, which mails the email you are looking at, filled in with one person’s details. A test goes through the same checks a real send does.

The window says who you can send it to:

Filled from says whose details fill every copy. It is the person you are previewing the automation as, and you can choose or change them right there. When the automation starts from an event, such as Fulfilled Order, the test takes that person’s most recent one, named under Event, so the order number, items and shipping address are theirs; you can pick another of their events. With No event, or nobody chosen, the event’s details are empty.

A test goes through the same checks a real send does, so it can be refused for the same reasons, and the refusal names the reason for that person. When every copy goes, the window says Test sent and who it went to; press Done to close it.