Workflow triggers, steps and variables
Reference for the workflow builder: the events that can start a workflow, the steps it can run, the rules a condition can check, the ways a delay can wait, and the variables available in messages.
This page lists the building blocks of a workflow as they are named in the builder at /workflows/<id>. For the procedure, see Build a workflow.
Triggers
A trigger is the event that starts a run for one person. The trigger picker groups them into four sections:
| Group | Trigger | Fires when |
|---|---|---|
| Sales & checkout | New purchase | A customer completes a purchase, paid or free. Renewals have their own triggers. |
| Free signup completed | Someone signs up for free (lead magnet, free offer). Paid purchases do not trigger it. | |
| Form submitted | Someone submits one of your signup forms. It has no product scope; you choose forms instead. | |
| Order created (incl. failed payment) | An order is created at checkout, even if the payment fails or is never completed. | |
| Order refunded | A full refund of an order for the product is confirmed. | |
| Checkout abandoned | A visitor enters their email at checkout and leaves. Detected after a few minutes, at most once per day per person and checkout. | |
| Subscriptions & access | Subscription renewal | A subscription renewal payment succeeds. |
| End of subscription | A client's subscription ends and their access is revoked. | |
| Renewal of the access period | A customer pays to extend time-limited access. New purchase does not cover renewals. | |
| End of access period | A client's time-limited access expires. | |
| 14 / 7 / 3 / 1 days until the end of the access period | The given number of days before access ends. The 14-day trigger applies to access lasting at least 3 months. | |
| Customers | Subscribed to the newsletter | A customer becomes a subscriber through a confirmed double opt-in, a single opt-in form or a checkout consent. Not fired by imports. |
| Tag added to a customer | One of your tags is added manually, by an automation or by a signup form. Not fired by bulk imports. | |
| Subscriber went quiet | Once a day for subscribers with no tracked click or open for the number of days you set. Repeats at most every 30 days per person. | |
| The client has been imported | You add a client to a product manually, by import or by an automation. | |
| Client archived in the product | The client is archived in the product by hand, by a bulk action, by a refund or by another automation. | |
| Client removed from the product | The client is removed from the product completely. | |
| Milestones & referrals | Course completed | A client completes the last lesson of a course. |
| Validated referral | A person referred by your client signs up and is verified as a valid subscriber. | |
| Referral reward earned | A participant of your referral program reaches a reward milestone. |
Product-based triggers can be limited with the Products field on the trigger card. The builder shows a description under every trigger when you pick it.
Access that simply runs out does not fire Client archived in the product: expired time-limited access fires End of access period, and a subscription that ends fires End of subscription. Use the archived and removed triggers for your own follow-ups when someone loses access, such as removing a tag or emailing yourself.
Steps
| Category | Step | What it does |
|---|---|---|
| Messaging | Send email | Sends an email from your template library to the customer. See Emails sent by workflows. |
| Send SMS | Texts the customer from your own SMS account (SMSAPI or Twilio). Only customers with a phone number and SMS consent get it. | |
| Email me | Emails you, the account owner, for example when a subscription renews. Variables work here too. | |
| Request a testimonial | Emails the customer a link to leave a testimonial, with a form chosen per product. | |
| Create a community post | Posts to a feed channel of a community as the workspace owner. | |
| Customers | Add or remove tags | Tags or untags the customer for segments and filters. |
| Set email subscription | Unsubscribes or subscribes the customer. Unsubscribed customers are kept, never deleted. | |
| Access | Grant product access | Adds the customer to one or more products. |
| Revoke product access | Removes the customer from one or more products. | |
| Community action | Add to community, Deactivate in community or Change member role. See the note below the table. | |
| Logic | Condition | Splits the flow on rules into a yes and a no branch. |
| Delay | Pauses before the next step. | |
| Email marketing | Email marketing action | Adds or removes lists, tags or groups in a connected mailing tool. |
| Social media | Publish a social post | Publishes a text post on connected social accounts, or saves it as a draft for review. |
| Other apps | Webhook | Calls an external URL with data from the run. |
| Discord, Circle, GitHub actions | Manage access in those apps. |
Steps that need an integration are listed as unavailable, with a hint such as "Connect an email marketing tool in Integrations to use this action", until the integration is connected.
Change member role lists every role of the chosen community, including roles you created yourself. The role is added on top of the basic Member role, which the person keeps. The person must already be a member of that community, and the community owner's role is never changed.
Condition rules
All rules of one condition must match for the yes branch. A Consent answer rule follows the consent itself, so editing the consent text later keeps the rule working; when the run carries no answer to that consent (for example, the person never went through a checkout with it), the rule does not match.
| Field | Checks |
|---|---|
| Order total amount | A number comparison: equals, at least, at most, greater than, less than. |
| Price, Checkout | Which price or checkout the order came through (is one of, is none of). |
| Client email | The customer's address. |
| Client has product access | Has access or Does not have access to a chosen product. |
| Consent answer | How the customer answered one of your checkout consents: pick it in Consent name, then Answered yes or Answered no. Archived consents are not listed. |
| Customer has tag | Has the tag or Does not have the tag. |
| Customer engaged with emails | Clicked or opened within the last N days. Only emails sent with measurement on count. |
| Customer has a phone number, Customer consented to SMS | Useful before a Send SMS step. |
| Checkout funnel stage, Checkout had failed payment, Visitor completed the purchase | Available after a Checkout abandoned trigger. Visitor completed the purchase is checked when the step runs and counts a purchase of the same product with the same email or browser, also in another checkout session. You do not need it just to stop reminders to buyers: every email and SMS step of an abandoned-checkout workflow skips a buyer and ends the run. Use it for other actions on buyers, for example adding a tag; email and SMS steps in this workflow never reach a buyer. |
Delay modes
| Mode | Behavior |
|---|---|
| Wait for | A number of minutes, hours, days or weeks, up to one year. With days and weeks you can add Then at: "2 days, then at 9:00" continues the day after tomorrow at 9:00, whatever time the client reached the step. |
| Until a time | Waits until the next occurrence of the chosen time: today if it hasn't passed yet, otherwise the next day. On days limits it to chosen weekdays, e.g. Monday to Friday. |
| Until a weekday | Waits until the chosen day of the week and time. |
| Until a date | Waits until a fixed date and time. If the date has already passed when the run gets there, it continues at once. |
Times use the workspace time zone.
Variables
Variables are written in double curly braces and replaced with the run's data in email subjects and bodies, SMS texts and notification emails.
| Variable | Value |
|---|---|
{{firstName}}, {{lastName}}, {{fullName}}, {{email}} | The customer's name and address. |
{{productName}}, {{productId}} | The product the event concerns. |
{{price}}, {{priceId}}, {{orderId}} | Paid amount with currency, and the price and order identifiers. |
{{currentAccessPeriodEndDate}} | End of the current access or paid period; it can change after a renewal. |
{{utmSource}}, {{utmMedium}}, {{utmCampaign}}, {{utmTerm}}, {{utmContent}} | Campaign tracking values. |
{{checkoutUrl}} | Link back to the abandoned checkout. Only after Checkout abandoned. |
{{formName}} | Name of the submitted form. Only after Form submitted. |
{{certificateUrl}} | Public certificate verification link. Only after Course completed. |
The builder refuses to publish a step that uses an unknown variable or one that is out of scope for its trigger.
Good to know
Each trigger shows its own description in the picker when selected. An SMS step is limited to 10 SMS segments per message.
Was this article helpful?

