Automation examples
A variable stores a field on the card. A segment collects customers by conditions. A trigger runs one action for that segment: a push, an SMS, an email, a template change, a balance update, or a new variable value. Pick the pairs that fit and build the scheme from them.
The first days with the card
| Scenario | Segment | Trigger |
|---|---|---|
| Welcome on the day of install | Installed, created today | On entering the segment — a push on how to open the card |
| Reminder the next day | Created yesterday, no installs | After 1 day — a push with the install link |
| Second install reminder | No installs | After 3 days — a push |
| SMS reminder | No installs | After 5 days — SMS (beta) |
| Email with the card link | No installs | After 10 days — email (beta) |
| How bonuses work | Card installed | After 7 days — a push with the rules |
| Bonus for the first visit | order_count = 0, card installed | After 14 days — add balance and send a push |
| A larger bonus if there is still no visit | order_count = 0, card installed | After 21 days — a larger credit and a push |
| First-month recap | Card installed | After 30 days — a push |
| A short note on Apple | Apple installs greater than 0 | After 45 days — a push |
| A quarter with the card | Card installed | After 90 days — a push |
| Half a year with the card | Card installed | After 180 days — a small credit |
| A year with the card | Card installed | After 365 days — add balance and send a push |
| Bonus for a campaign promo code | The campaign promo code | On entering — add balance |
| Bonus for a partner code | A different promo code | On entering — its own credit and a push |
| Welcome from checkout | Signup form “checkout” | On entering — a push that the card works at the till |
| Welcome from the website | Signup form “website” | On entering — a push on how to add the card to Wallet |
| Welcome from a QR form | QR signup form | On entering — a short push |
| Card from Telegram | Telegram signup form | On entering — a message in the Telegram bot, if the module is connected |
| Web push without a wallet | Apple installs = 0 and Google installs = 0 | After 2 days — a web push, if the module is connected |
| A second device after Apple | Apple greater than 0, Google = 0 | After 3 days — a push about Google Wallet |
| A second device after Google | Google greater than 0, Apple = 0 | After 3 days — a push about Apple Wallet |
| The card on several devices | Installs greater than 1 | After 1 day — a push that the balance is shared |
| Not in the CRM yet | Sync = no, created today | On entering — write the variable needs_sync |
| Balance already came from the CRM | Sync = yes, balance greater than 0 | On entering — a push that the amount is already on the card |
| Complete the profile | Age = 0 | After 5 days — a push with the profile-enrichment link |
| Ask again to fill in the profile | Age = 0 | After 14 days — a second push |
| No date of birth | Age = 0 | After 3 days — a push on why the date is needed |
| Gender is not set | Gender “not specified” | After 7 days — a push asking them to complete the profile |
| How stamps work | Stamp-card template, current stamps = 0 | On entering — a push: one purchase, one stamp |
| Where to see the discount | Discount-card template | On entering — a push that the discount is on the front |
| A starter template for three days | Created today | On entering — switch the template and remove it after 3 days |
| First onboarding step | Card installed | On entering — write onboard_step = 1 |
| Second onboarding step | onboard_step = 1 | After 7 days — a push and set onboard_step = 2 |
| Third step with no purchases | onboard_step = 2, order_count = 0 | After 14 days — a bonus and onboard_step = 3 |
| A check on a list of card numbers | Card numbers separated by commas | Now — a test push |
| Only after phone verification | A form with phone verification | On entering — a welcome push |
| Issued with no promo code | Promo code is empty | On entering — a general welcome |
| A link on the back of the card | Card installed | After 3 days — a push about the link on the card |
| How to share the card | Card installed | After 7 days — a push on passing the card on |
| A template for staff | The staff variable is on | On entering — the staff template |
| No privileges yet | Balance = 0, bonus = 0, discount = 0, card installed | After 7 days — a push on how a bonus or discount appears |
| A discount is already on the card | Discount greater than 0 | On entering — a push with the discount size |
| A bonus is already on the card | Bonus greater than 0 | On entering — a push on where to see the bonus |
| An event signup form | Signup form “event” | On entering — a push inviting them to visit |
| A separate counter form | Another signup form | On entering — its own welcome text |
| The welcome was not sent yet | Installed, push text does not contain the welcome | On entering — send the welcome |
| A short note on day two | Installed, order_count = 0 | After 2 days — a short push |
| An offer on day ten | order_count = 0, installed | After 10 days — a push with an offer |
| A last email if the card was never installed | No installs | After 60 days — email (beta) |
Birthdays and campaign dates
| Scenario | Segment | Trigger |
|---|---|---|
| Announcement 30 days ahead | Birthday in 30 days, card installed | 30 days before — a push |
| Announcement 14 days ahead | Birthday in 14 days, card installed | 14 days before — a push |
| Announcement 7 days ahead | Birthday in 7 days, card installed | 7 days before — a push with the gift terms |
| Announcement 3 days ahead | Birthday in 3 days, card installed | 3 days before — a push |
| Reminder the day before | Birthday tomorrow, card installed | 1 day before — a push |
| Gift on the birthday | Birthday today | On the birthday — add balance |
| Birthday template for one day | Birthday today | Switch the template and remove it after 1 day |
| Birthday template for 3 days | Birthday today | Switch the template and remove it after 3 days |
| Birthday template for a week | Birthday today | Switch the template and remove it after 7 days |
| Gift for women | Birthday today, female | Its own amount and its own push |
| Gift for men | Birthday today, male | A different amount and different text |
| A shared gift when gender is empty | Birthday today, gender not specified | A shared bonus and shared text |
| Gift under 18 | Birthday today, age under 18 | Its own bonus, without an adult offer |
| Gift at 18–24 | Birthday today, age from 18 to 24 | Its own bonus and text |
| Gift at 25–34 | Birthday today, age from 25 to 34 | Its own bonus and text |
| Gift at 35–44 | Birthday today, age from 35 to 44 | Its own bonus and text |
| Gift at 45–59 | Birthday today, age from 45 to 59 | Its own bonus and text |
| Gift from 60 | Birthday today, age over 59 | Its own bonus and text |
| Birthday with no install, SMS | Birthday today, no installs | SMS (beta) |
| Birthday with no install, email | Birthday today, no installs | Email (beta) |
| Greeting on Apple | Birthday today, Apple greater than 0 | A push |
| Greeting on Google | Birthday today, Google greater than 0 | A push |
| A large balance on the birthday | Birthday today, balance above a threshold | A push that bonuses are already on the card, with no new credit |
| Zero balance on the birthday | Birthday today, balance = 0 | Add balance |
| A discount already exists on the birthday | Birthday today, discount greater than 0 | A push about the discount that day |
| Birthday and no purchases yet | Birthday today, order_count = 0 | A bonus and an invitation to the first visit |
| A champion’s birthday | Birthday today, purchases are frequent and recent | A larger credit and a push |
| Birthday after a long gap | Birthday today, order_days greater than 180 | A win-back bonus |
| Reminder to spend the gift | Gift variable = 1, balance greater than 0 | 1 day after the birthday — a push |
| Remove the birthday template | Birthday-template variable = 1 | After 3 days — the regular template and clear the variable |
| The gift is still unspent | Gift variable = 1, order_days greater than 7 | After 7 days — one more push |
| One greeting per year | Birthday today, the year variable is not the current year | Add balance and write the year |
| New Year push | Card installed | On a date — a push |
| New Year template | Card installed | On a date — a template, removed after 14 days |
| 8 March | Female, card installed | On a date — a push |
| 23 February | Male, card installed | On a date — a push |
| Start of summer | Card installed | On a date — a push and the seasonal template |
| End of summer | Season variable = 1 | On a date — the regular template and clear the variable |
| A season for younger customers | Age under 25, card installed | On a date — a push |
| Seasonal sale | Card installed | On a date — a push |
| Announcement that the campaign is ending | Campaign variable = 1 | On the day before the end — a push |
| Campaign close | Campaign variable = 1 | On the end date — the regular template and clear the variable |
| Announcement a week before the start | Card installed | On a date — a push that the start is soon |
| Opening date | Card installed | On a date — a push to the whole database |
| Program anniversary | Card installed | On a date — add balance and send a push |
| Birthday and the website form | Birthday today, form “website” | Its own push text |
| Birthday and the checkout form | Birthday today, form “checkout” | Its own push text |
| A one-off greeting for birthdays today | Birthday today | Now — a push |
| A staff birthday | Birthday today, staff variable on | Its own template, no guest bonus |
| A greeting in Telegram | Birthday today, Telegram form | A message in the Telegram bot, if the module is connected |
Purchases and RFM
Recency and frequency bands come from RFM analysis: the variables order_days and order_count. You set the band edges.
| Scenario | Segment | Trigger |
|---|---|---|
| Champions | Buy often and visited recently | On entering — a push with early access |
| Loyal | Visited recently, medium frequency | On entering — a thank-you push |
| Newcomers with potential | Visited recently, few purchases | A second-purchase bonus and a push |
| Frequent customers cooling off | Used to buy often, mid recency | A win-back offer |
| Middle | Mid recency and mid frequency | An offer to visit more often |
| Rare guests | Mid recency, few purchases | One gentle reminder |
| Lost champions | Used to buy often, away for a long time | A stronger bonus and a push |
| Rare and long gone | Away for a long time, few purchases | One reminder |
| Lost | Away for a long time, almost no purchases | One last message |
| A status template for champions | Buy often and visited recently | Switch the template |
| Loyal customers in Telegram | Visited recently, medium frequency | A message in the Telegram bot, if the module is connected |
| Newcomers without a wallet | Visited recently, few purchases, no installs | A web push, if the module is connected |
| Cooling-off customers with no install | Used to buy often, no installs | SMS (beta) |
| Lost customers with no install | Away for a long time, no installs | Email (beta) |
| Remember the cell | Buy often and visited recently | Write the variable rfm_cell |
| Guests only, not staff | Frequent and recent, staff variable off | A push |
| Exactly one purchase | order_count = 1 | An offer for the second purchase |
| Exactly two purchases | order_count = 2 | A small credit |
| Exactly three purchases | order_count = 3 | A push |
| Fifth purchase | order_count = 5 | Add balance |
| Seventh purchase | order_count = 7 | A push with the next threshold |
| Tenth purchase | order_count = 10 | A regular-guest template and a push |
| Fifteenth purchase | order_count = 15 | An extra bonus |
| Twentieth purchase | order_count = 20 | A VIP template |
| Twenty-fifth purchase | order_count = 25 | A credit and a push |
| No purchases yet | order_count = 0, card installed | On entering — an invitation to the first visit |
| Thanks on the day of the visit | order_days = 0, order_count greater than 0 | On entering — a push |
| Mark a fresh visit | order_days under 2, order_count greater than 0 | Write recent_visit = 1 |
| A two-week gap | order_days greater than 14, order_count greater than 0 | A push |
| A month of quiet after real visits | order_days greater than 30, order_count greater than 2 | An offer and a push |
| A 45-day gap | order_days greater than 45 | A push |
| A 60-day gap among frequent buyers | order_days greater than 60, order_count greater than 3 | A stronger bonus |
| A 90-day gap | order_days greater than 90 | A template for 14 days, then remove it |
| A 120-day gap | order_days greater than 120 | One message |
| Half a year away and no install | order_days greater than 180, no installs | SMS (beta) |
| A year away | order_days greater than 365 | One email (beta) |
| First stamp | Current stamps = 1 | A push with how many are left |
| Second stamp | Current stamps = 2 | A push |
| Third stamp | Current stamps = 3 | A push |
| One stamp away from the gift | Current stamps are 1 below the gift slot | A push that the next visit is the gift |
| The stamp gift is complete | Current stamps reached the gift slot | A push to collect the gift |
| Mark the gift as given | Stamps are at the maximum, the reward variable is empty | Write that the gift was given |
| Frequent buyers with a small ticket | Buy often, average ticket below a threshold | A push about another category |
| Frequent buyers with a high ticket | Frequent and recent, average ticket above a threshold | A closed offer |
| Back after a gap | order_days under 2, order_count greater than 5, a win-back offer was already sent | A thank-you push and clear the offer variable |
| Do not send the win-back twice | order_days greater than 30, push text does not contain the win-back offer | A push |
| A purchase on the day the card was issued | order_count = 1, created today | On entering — a thank-you push |
| Three purchases and a month of quiet | order_count at least 3, order_days from 30 to 60 | An offer |
| One purchase and two months of quiet | order_count = 1, order_days greater than 60 | An invitation to the second purchase |
| Champions already in the CRM | Sync = yes, frequent and recent | A push only for synced cards |
Balance, tier, and pass design
| Scenario | Segment | Trigger |
|---|---|---|
| Spend a balance from 100 | Balance greater than 100 | On entering — a push |
| Spend a balance from 300 | Balance greater than 300 | On entering — a push |
| Spend a balance from 500 | Balance greater than 500 | On entering — a push |
| Spend a balance from 1000 | Balance greater than 1000 | On entering — a push |
| A closed offer from a balance of 5000 | Balance greater than 5000 | On entering — an invitation push |
| A bonus sitting for two weeks | Bonus greater than 500, order_days greater than 14 | A push |
| A bonus sitting for a month | Bonus greater than 100, order_days greater than 30 | A push that the bonuses are waiting |
| Balance back at zero | Balance = 0, order_count greater than 0 | A push on how to earn again |
| Balance in a narrow band | Balance from 100 to 300 | A gentle push |
| A 5% discount on the front | Discount = 5 | Switch the template |
| A 10% discount on the front | Discount = 10 | Switch the template |
| A large discount | Discount at least 15 | A template where the discount is large |
| The discount is gone | Discount = 0, the discount template is still on the card | Restore the regular template |
| Bronze tier | Tier variable = bronze | The bronze template |
| Silver tier | Tier variable = silver | The silver template and a push |
| Reaching gold | Tier variable = gold | The gold template, a push with the terms, and a write of the tier |
| Platinum tier | Tier variable = platinum | The platinum template and a push |
| From gold down to silver | Tier variable = silver after gold | Switch to the silver template |
| Tier back to standard | Tier variable = standard | The regular template |
| A new amount on the card | Balance crossed a set threshold | On entering — a push about the amount |
| Remember the spend offer | Balance above a threshold, the offer variable is empty | A push and write offer_state |
| Do not repeat “spend it” | offer_state = spend, balance still above the threshold | The spend trigger is not attached to this segment |
| A campaign look for a week | Balance above a threshold | Switch the template and remove it after 7 days |
| A discount with no balance | Balance = 0, discount greater than 0 | A push that the discount stays on the card |
| A large balance and no install | Balance above a threshold, no installs | SMS (beta) |
| A large bonus on Apple only | Bonus above a threshold, Apple greater than 0, Google = 0 | A push |
| A large bonus on Google only | Bonus above a threshold, Google greater than 0, Apple = 0 | A push |
| Guest balance | Balance above a threshold, staff variable off | A push |
| Only cards from the CRM | Sync = yes, balance above a threshold | A push |
| A premium template | Balance greater than 1000 | Switch to the premium template |
| How to earn faster | Balance under 50, order_count greater than 5 | A push |
| The first bonus | Bonus greater than 0, seen_bonus is empty | A push and write seen_bonus |
| The discount got bigger | Discount is above the value stored as the previous size | A push and write the new size |
| Copy for a 5–10 discount | Discount from 5 to 10 | Its own push |
| A template for a 10–20 discount | Discount from 10 to 20 | Its own text and template |
| A large discount figure | Discount greater than 20 | A template with a large figure |
| A bonus on entering gold | Tier = gold, bonus = 0 | Add balance |
| The date of the tier change | Tier = gold | Write a variable with the transition date |
| A month on the tier with no visit | Tier = gold, order_days greater than 30 | A push with the tier terms |
| A temporary discount on the card | The temporary-discount variable is on | The discount template, removed after 30 days |
| The temporary discount ended | The temporary-discount variable is off | The regular template |
| A new card still at zero | Balance = 0, order_days under 7 | This segment is kept out of the “spend your bonuses” trigger |
| A large balance and a small ticket | Balance above a threshold, average ticket below a threshold | A push on what to spend it on |
| A small balance and a high ticket | Balance below a threshold, average ticket above a threshold | A push on how to earn more |
| The threshold in Telegram | Balance crossed a threshold | A message in the Telegram bot, if the module is connected |
| The threshold without a wallet | Balance above a threshold, no installs | A web push, if the module is connected |
| Balance is there, the card was never installed | Balance above a threshold, no installs | Email (beta) |
| Balance fell back under the threshold | Balance below the threshold, offer_state = spend | Clear offer_state |
| Stamps with a saved bonus | Bonus above a threshold, stamp-card template | A push that the gift is close |
| Staff with a balance | Staff variable on, balance above a threshold | Keep the staff template instead of a guest one |
Events and custom fields
An event comes from the website, the app, or another system. How to create one is in Working with events.
| Scenario | Segment | Trigger |
|---|---|---|
| Abandoned cart the next day | An abandoned-cart event, no purchase after it | On the event — a push the next day |
| Abandoned cart on day three | An abandoned-cart event, still no purchase | After 3 days — a second push |
| A bonus on an abandoned cart | An abandoned-cart event, order_count greater than 0 | A small credit and a push |
| A cart after a long gap | An abandoned-cart event, order_days greater than 30 | A stronger offer |
| Viewed a product | A product-view event | A reminder push |
| Viewed a specific product | A product-view event, value is the product name | A push about that product |
| Visited the site and did not buy | A site-visit event, order_days greater than 1 | A push |
| Three visits and no purchase | A visit event at least 3 times, order_count = 0 | An offer for the first order |
| Opened an email | An email-open event | A follow-up push for the offer |
| Opened a message | A messenger-open event | A push |
| A booking was created | A booking event | A confirmation push |
| A booking for tomorrow | A booking event, value = tomorrow | A reminder |
| Left a review | A review event | A small bonus and a thank-you push |
| Added to favorites | A favorite event | A push when the next availability event arrives |
| Opened the app again | An app-open event, order_days greater than 30 | A push |
| Searched the catalog | A search event | A push on the topic from value |
| Viewed a category | A category-view event | A push for that category |
| Favorite category | The category variable equals the value you need | A push for that category only |
| Home store | The store variable equals a location | Push text that names that location |
| Text in French | Language variable = fr | A push in French |
| Text in English | Language variable = en | A push in English |
| Text in German | Language variable = de | A push in German |
| A campaign only for people who opted in | The consent variable is on | The campaign push goes only to this segment |
| Staff kept apart | The staff variable is on | Its own template; customer campaigns are not attached to the segment |
| City on the card | The city variable equals a value | A push with a city offer |
| Came from social | Source variable = social, a first-visit event | Its own push |
| Came from a QR | Source variable = qr | Its own text |
| A high average ticket | The average-ticket variable is above a threshold | An invitation to a closed offer |
| A list of card numbers | Card numbers separated by commas | A personal push |
| A bonus for another list | A second list of card numbers | Add balance |
| Already received this campaign | Push text contains the campaign name | The next wave is not attached to this segment |
| The card is not in the CRM | Sync = no | Write the variable needs_sync |
| An empty profile after a site visit | Age = 0, a visit event happened | A push with the profile-enrichment link |
| A stamp is already on the card | A purchase event, current stamps greater than 0 | A push with how many stamps are on the card |
| An English template | Language variable = en | Switch to a template with English text |
| A cart in Telegram | An abandoned-cart event, Telegram form | A message in the Telegram bot, if the module is connected |
| A cart without a wallet | An abandoned-cart event, no installs | A web push, if the module is connected |
| A cart by SMS | An abandoned-cart event, no installs | SMS (beta) |
| A cart with no purchase for a week | An abandoned-cart event, no new purchase | After 7 days — email (beta) |
| A visit and a birthday soon | A visit event, birthday within 7 days | A push with the gift ahead of time |
| A view by a champion | A view event, purchases frequent and recent | Early access instead of the general offer |
| A visit with a large balance | A visit event, balance above a threshold | A push to spend |
| A promo code and a site visit | The campaign promo code, a visit event | An extra push for the campaign |
| A cart from the website form | Form “website”, an abandoned-cart event | Text about returning to the order |
| Category and gender | The category variable is set, gender is set | Offer text for that pair |
| A class booking | Age under 25, a booking event | A reminder before the class |
| A check on test card numbers | A list of card numbers | Now — a test push |
| Remember the offer from the event | An event whose value is an offer code | Write offer_state to that value |
| A purchase closes the offer | A purchase event, offer_state is not empty | Clear offer_state |
| Consent is off | The consent variable is off | Campaign triggers do not use this segment |
Get started free
Try Passquare — it’s free & easy.
Create an account, set up your signup form, design your cards, issue a few wallet passes, and send your first push notifications.
Sign up for free