Skip to content
Accounts are by invitation while we set up the first stores.Book a call
GROWTH DEPT.ACR

Start conditions: choose which shoppers start a campaign

Write a formula that decides who starts a campaign, set the order campaigns are tried in, and limit how often one shopper can be contacted.

Last reviewed November 7, 2026

How ACR picks a campaign

A shopper starts at most one campaign: the first in the list that accepts them. When a checkout counts as abandoned, ACR walks the campaigns that share that event and lead source from the top, and checks each one in this order:

  1. The campaign is published and not paused, and its trigger is on.
  2. Its shopper cap has not been reached.
  3. This shopper's cooldown for this campaign has passed.
  4. Its formula matches, or it has no formula.
  5. Consent, the suppression list and country rules leave at least one channel it can use.

If no campaign accepts, no run starts, and the lead's history records why each one passed. A lead already in a running campaign is skipped before any of this.

Leads you add by hand or import with a chosen campaign skip the order, the formula and the cooldown, because a person picked the campaign. The cap and the consent and country checks still apply.

Read and reorder the list

The Who to contact list shows every campaign that shares this campaign's trigger, with its formula and one of these labels:

LabelWhat it means
Takes matching shoppersIt has a formula, and shoppers who match start it.
Takes every shopperIt has no formula. Campaigns below it get nobody, so keep it last.
Never reached: a campaign above takes everyoneA campaign higher up has no formula.
Trigger offThe campaign is paused or its trigger is off.
Shopper cap reachedIt has taken as many shoppers as its cap allows.
Not publishedIt has never been published, so it takes nobody.

Use the up and down arrows beside a row to move it. The new order saves at once. Campaigns that belong to an A/B test do not appear here, because the test splits shoppers between its two variants before the order applies.

Write the formula

A formula saves straight away, with no publish step, even on a running campaign. It can be up to 4,000 characters. The buttons on your campaign's row give you three ways to change it:

  • Write the conditions with AI (the sparkle): describe who should start the campaign, choose Generate, read the formula and its explanation, then choose Use these conditions. Nothing changes until that last click. If the store has no AI provider set up, ACR asks you to write the formula by hand.
  • Edit the formula (the pencil): type it yourself. ACR checks it as you type, lists the fields it uses, and warns about any field this lead source never sends. Finish with Save conditions.
  • Remove all conditions (the ban sign), then Remove all: the campaign now takes every shopper its trigger sends. To stop a campaign, pause it or switch its trigger off instead.

Formula examples

FormulaWho it takes
country_code IN ('US', 'CA') AND context.total_price >= 100Shoppers in the US or Canada with a cart of 100 or more
region_code IN ('US-CA', 'US-NY') AND language STARTS WITH 'en'English speakers in California or New York
is_returning = FALSE AND context.discount_codes IS EMPTYShoppers with no order on record and no code applied yet
context.line_items CONTAINS 'duvet' AND NOT (email CONTAINS '@yourstore.com')Carts with a duvet in them, leaving out your own staff
context.utm_source = 'meta' AND has_phone = TRUEShoppers who came from a link tagged meta and gave a phone number
tags CONTAINS 'vip' OR context.item_count >= 3Leads tagged vip, or carts of three or more items

Operators

OperatorUse
=, !=Text, numbers, TRUE or FALSE
>, <, >=, <=Numbers only. ACR refuses them on any other known field.
CONTAINS, NOT CONTAINSPart of a text field, or one whole item of a list
STARTS WITH, NOT STARTS WITHThe start of a text field
IN ('a', 'b'), NOT IN ('a', 'b')Any value from a list you write out
IS EMPTY, IS NOT EMPTYMissing, blank, or a list with nothing in it

Put text in single quotes. Text comparisons ignore capitals and surrounding spaces, and a number sent as text compares as a number. Combine rules with AND, OR, NOT and brackets; AND is read before OR. A TRUE or FALSE field needs the comparison written out, as in is_returning = TRUE.

Fields about the lead

FieldWhat it reads
country_codeCountry from the phone number or address, in capitals: 'US'
region_codeState or province: 'US-CA'
languageLanguage: 'en-US'
timezoneTime zone: 'America/New_York'
email, phoneContact details. The phone number is in international format: '+12025550143'
first_name, last_nameThe shopper's name
has_email, has_phoneTRUE when ACR has a usable address or number
is_returningTRUE when ACR has an order on record for this lead. Orders from before you connected do not count.
tagsThe lead's tags, as a list
sourceWhere the lead came from: 'shopify', 'custom_api', 'csv' or 'manual'

Fields about the checkout

FieldWhat it readsSent by
context.total_priceCart total, in the checkout's currencyShopify, Custom API
context.item_countNumber of itemsShopify, Custom API
context.itemsItems as a list of names and idsShopify, Custom API
context.line_itemsItem names as one piece of textShopify, Custom API
context.discount_codesCodes already applied, as a listShopify, Custom API
context.currencyCurrencyShopify, Custom API
context.utm_source, context.utm_medium, context.utm_campaignLink tagsShopify, from the landing page; Custom API, if you put them in context
context.shipping_priceShipping costShopify; Custom API, if you put it in context
context.subtotal_priceCart subtotalShopify
context.source_nameSales channel, such as 'web'Shopify
context.landing_site, context.referring_siteLanding page and referring siteShopify
context.shipping_country, context.shipping_provinceShipping country and state or provinceShopify
context.accepts_sms_marketing, context.accepts_email_marketingTRUE when the shopper ticked that box at checkoutShopify

A Growth Dept connection reads fewer Shopify fields than the app does; that article lists them. On the Custom API, anything else you send in context works too, including nested values such as context.customer.tier = 'gold'.

Rules that surprise people

  • A comparison on a field the lead does not have is false, and that includes !=, NOT CONTAINS and NOT IN. So context.utm_source != 'meta' skips a lead with no UTM source, while NOT (context.utm_source = 'meta') takes it.
  • CONTAINS finds part of a text field, but on a list it wants a whole item. context.line_items CONTAINS 'duvet' finds a Linen Duvet Cover. context.items CONTAINS 'duvet' does not.
  • A rule on a field this lead source never sends still saves, with a warning, and never matches.
  • The formula belongs to the campaign, so all of a campaign's triggers share it.

How often the same shopper can start

Recommended limits set no cap on shoppers and a 30-day wait before the same shopper can start this campaign again. Custom limits let you change both, and either choice applies as soon as you save, with no publish step.

  • Most shoppers this campaign takes: leave it empty for no cap, or enter up to 10,000,000. Every run started counts toward it. At the cap, ACR sends a notification and new shoppers pass to the next campaign. The count and Reset the count are on the lead source step.
  • Days before the same shopper can start again: 0 to 3,650, where 0 means no wait. It counts from the shopper's last run in this campaign, so a different campaign can still take them sooner.
Did not find what you need? Write to hello@growthdept.ai and the Growth Dept team will answer.