# Customer loyalty program for an online store: repeat sales

Customer loyalty program for an online store: types (points, tiers, VIP, cashback), 7 setup steps in CloudCart, win-back emails and remarketing.

Source: https://cloudcart.com/en/blog/customer-loyalty-repeat-purchases · CloudCart · 2026-11-06

In short: a customer loyalty program gives your returning customers a reward that new ones do not get: a VIP discount, free shipping or credit for the next order. It pays off because winning a new customer costs 5 to 25 times more than keeping an existing one (Harvard Business Review). In CloudCart you build the program from customer groups, segments, automated campaigns and remarketing, with no separate loyalty app.

Written by the CloudCart team, the Bulgarian ecommerce platform, for stores selling in or from Bulgaria and across the EU. Below you will find the program types in one table, the seven setup steps in the CloudCart admin, the difference between a customer group and a segment, the win-back flow for lapsed customers, and remarketing on Meta, Google and TikTok. The last part covers the numbers that prove the program works and how an AI agent pulls them from your store with one sentence. CloudCart facts come from the platform documentation and the [Campaigns](https://cloudcart.com/en/campaigns), [Discounts](https://cloudcart.com/en/discounts) and [Pricing](https://cloudcart.com/en/pricing) pages.

## What a customer loyalty program is and why repeat purchases are the cheapest growth

A customer loyalty program is a set of rules for rewarding customers who buy again. The reward can be money (a discount, cashback), convenience (free shipping, priority handling) or status (a VIP group, early access to sales). The goal is simple: on the second, third and fifth purchase the customer picks your store again, and you do not pay for an ad to bring them back. When the reward goes to someone who brings you a new customer, that is an [affiliate program](https://cloudcart.com/en/blog/affiliate-program-online-store) instead.

The numbers favour retention. Research by Bain & Company, cited in [Harvard Business Review](https://hbr.org/2014/10/the-value-of-keeping-the-right-customers), shows that a 5% increase in customer retention lifts profit by 25% to 95%. A returning customer already knows you, needs no ad for every order and usually spends more over time.

What a customer is worth over their whole relationship with you is customer lifetime value (LTV): average order value × orders per year × years. This article is about raising the middle part of that formula, the number of orders per customer.

> 0% commission Every repeat order with no cut for the platform On a platform that charges a 2% transaction fee, a loyal customer with 10 orders of €50 costs you €10 in fees alone. In CloudCart you pay a fixed plan and 0% of sales, however often the customer orders (card processing fees are separate on every platform). How 0% commission works →

## Types of loyalty programs: points, tiers, VIP group and membership

There are seven common types of ecommerce loyalty program, and they differ in the reward and in how much upkeep they need. For a small or mid-sized online store the fastest to launch are a group discount and automated emails, because both run without extra software.

| Type | How it works | Best for | How to build it in CloudCart |

| Group discount (VIP) | Customers in a "VIP" group get a standing discount or free shipping | Stores with frequent purchases: cosmetics, food, consumables | Customers → Customer groups, then Marketing → Discounts with the group selected |

| Tiers | Bronze, Silver, Gold by number of orders or total spend | Stores with a clear core of regulars | Several customer groups with different discounts; customers move with the bulk action or through an AI agent |

| Order-count reward | A discount from the Nth order onwards | Any store; the easiest start | A rule in Aura Cart Rules, for example "10% for customers with 3 or more orders" (completed orders count) |

| Points | Points for every euro spent, later exchanged for a discount | Large chains with an app and a card | There are no built-in points; euro cashback from the next row gives the same effect |

| Cashback (credit for the next order) | Part of the order value comes back as credit the customer spends next time | Stores where people reorder every 1 to 3 months | Virtual Wallet (beta): credit with an expiry date, added by hand from the customer profile or by an AI agent through the API |

| Paid membership | The customer pays a fee for access to members-only pages and products | Subscription products, courses, clubs | The Membership app: a digital product linked to pages and an access period in days |

| Gifts and occasions | A birthday code, a thank-you after the first order, a gift above a threshold | Any store, on top of the other types | Automated campaigns in Marketing → Campaigns and discounts with a per-customer limit |

Points programs look attractive but carry a hidden cost: unredeemed points are a liability you have to track, explain and account for. For an online store, a group discount gives the same effect ("I buy here because I get 10%") with one rule and no points ledger. If you still want a reward that builds up, euro credit in the Virtual Wallet is clearer than points: "you have €4 towards your next order" needs no conversion table.

## How many customers buy again and how to measure it

Your repeat customer rate is the number of customers with at least one earlier order, divided by all customers who ordered in the period. There is no single benchmark for every store: consumables and cosmetics naturally score higher, while furniture and electronics customers come back after years. Compare the number with your own category and with yourself, month by month.

In CloudCart the rate is on the [Analytics](https://cloudcart.com/en/analytics) dashboard, in the Total Customers box. It splits customers into "New" (first order in the store's history) and "Returning" (at least one order before). Three details matter before you read the number:

- Guests are not counted. Orders placed without an account count as neither new nor returning. If you have far more orders than customers, the gap is guest checkout.

- Industry comparison. If your plan includes it, the box compares you with the average for stores in your industry (you pick the industry in the dashboard settings).

- Order statuses. You decide which orders count in the analytics settings. By default they are paid, completed, pending (not yet fulfilled), authorized and fulfilled orders.

Important: because guests are left out of the returning customer report, every account makes the number more accurate. A discount visible only to registered customers (the "Registered users only" option in the discount) is a good reason to create an account.

## How to create a loyalty program in CloudCart: 7 steps

A loyalty program in CloudCart takes about an hour: a group, a discount for the group, a segment and an automated campaign. Set them up in this order.

- Decide the reward and the threshold. Work out how much discount your margin allows. With a 40% margin and a 10% VIP discount, every €100 at list price leaves €30 of profit instead of €40; with a 20% margin the same discount takes half the profit. Set the VIP threshold from your data, for example customers with 3 or more orders or over €300 in total.

- Create the customer groups. Customers → Customer groups → Add (customer groups start from Starter Pack; for three tiers such as Bronze, Silver and Gold you need CC Pro). A group has only a name (up to 100 characters), for example "VIP" or "Gold". New registered customers join the default group automatically, and guests go to the "Guests" group.

- Move the customers. In the Customers list, sort by the "Completed orders" or "Revenue" column, select the customers and choose the bulk action Change customer's group from the Tools button. The faster route is the AI agent described below .

- Give the group a discount. Marketing → Discounts → new discount (percentage, fixed amount or free shipping). Turn off the "All groups" switch and pick "VIP". Optionally set a usage limit per customer. All discount types and their fields are in the guide to promo codes and discounts in CloudCart .

- Build a segment. Marketing → Segments → Create segment → the ready template "Loyal customers" (more than 1 order and average order above 500) or from scratch as an automated segment. Replace the amount in the template with a threshold that fits your store.

- Launch an automated campaign. Marketing → Campaigns → Create campaign → the "Automated" tab → pick a ready campaign from the catalog or "Create your own automation". A ready campaign arrives as a draft with the steps and texts filled in.

- Measure after 30 days. Compare the returning customer rate in Analytics and the campaign revenue in the "Orders" and "Revenue" columns. If VIP customers order as often as before, only now with a discount, change the reward: free shipping often costs less than a percentage.

The number of customer groups depends on the plan, and it includes the two system groups (default and "Guests"). Starter Pack with 3 groups therefore gives you 1 of your own (for example "VIP"), and CC Pro with 5 groups gives you 3.

| Plan (billed annually, excl. VAT) | Customer groups | RFM analysis of subscribers | Subscribers in Marketing Suite |

| Baby Pack, €168 a year | none | no | 50 |

| Starter Pack, €390 a year | 3 (1 of your own) | no | 100 |

| CC Pro, €990 a year | 5 (3 of your own) | yes | 500 |

| CC Master, €2,990 a year | 100 (98 of your own) | yes | 1,000 |

Prices and limits are from [the pricing page](https://cloudcart.com/en/pricing); subscribers and groups can be extended with add-on packs.

> €1 for 3 months Try a VIP group and campaigns for €3 in total Every plan for a new store costs €1/month for the first 3 months. That is enough to see in Analytics whether the group and the emails lift repeat orders through Black Friday and Christmas. Create a store for €1 →

## How to single out loyal customers: customer group or segment

A customer group is a fixed label that decides which prices and discounts a customer sees. A segment is a list that fills itself by rules and decides who gets which message. A loyalty program needs both: the group carries the reward, the segment carries the email.

|  | Customer group | Segment |

| Where | Customers → Customer groups | Marketing → Segments |

| Who is in it | Each customer is in exactly one group; you, an AI agent or a "change customer group" step in an automated campaign moves them | Every subscriber who meets all the conditions |

| Updates | Only when you change the group | Automated: on every action and every 5 minutes; one-off: a snapshot at that moment |

| Used for | Discounts, free shipping, payment and shipping rules | Email, SMS, Viber and Web Push campaigns, discounts, recommendations |

| Example | "VIP" with 10% off everything | "Bought 2+ times, no order for 60 days" |

A segment is described with conditions joined by AND: all of them must be true. There are more than 60 conditions: number and value of orders, average order, last order, viewed products and categories, wishlist, abandoned cart, tags and your own fields. Six ready templates cover the most common loyalty cases:

- One-timers: exactly one order. These are the people to turn into second-time buyers.

- Returning customers: more than one order.

- Loyal customers: more than one order and an average order above 500 (in the store currency).

- High spenders: average order above €1,500 and a last order within 180 days.

- Product fans: viewed or bought a given product more than twice.

- Abandoned cart.

Important: ready templates and AI-generated segments are created as one-off segments. For a flow that starts by itself every time a customer reaches "no order for 60 days", build the segment from scratch and choose "Automated". The type cannot be changed after creation.

> AURA A VIP discount in one sentence In Aura Cart Rules you type "Free shipping for customers in the VIP group", and AURA drafts the rule for you to review and save. You can describe a segment in words too, with "Generate with AI". What AURA does in your store →

## Points without points: cashback in the Virtual Wallet

Cashback in CloudCart runs through the Virtual Wallet: the store adds euro credit to a customer's wallet, and the customer spends it on the next order, fully or in part. The wallet is built into the platform (currently in beta) and works only for registered customers, which also makes it a good reason to create an account.

- Open the settings. Products → Virtual Wallet → Settings. The "Enable virtual wallet" switch only turns on top-ups by the customer and can stay off: credit added by the store works and can be spent either way.

- Set the rule. For example 5% cashback: a customer with an €80 order gets €4 of credit, valid for 60 days. The expiry gives the customer a reason to come back before the credit runs out.

- Add the credit. By hand: the customer profile → the "Wallet" tab → Add transaction, with an amount and an expiry date. Automatically: an AI agent or another system adds credit through the API with an amount, a description the customer sees in their history, and an expiry.

- Approval and default validity. Credit from the API waits as "Pending" unless you turn on Auto-approve third-party credits. If the agent sends no expiry date, the period in Default validity for third-party credits applies (0 to 3,650 days). At 0, the default, credit without a date is rejected, so set a period such as 60 days.

- The reminder. Before credit expires, the platform sends one email per credit, as long as the template is active and customer notifications are on.

Important: wallet credit is a payment method, not a discount. The order total and the invoice stay in full, and the invoice shows a "Paid with wallet" line. Gift vouchers go into the same wallet, as described in the guide to [gift vouchers for an online store](https://cloudcart.com/en/blog/gift-vouchers-online-store).

## How to win back lapsed customers: the "We miss you" flow

A lapsed customer comes back most reliably through an automated flow that starts on the day they become inactive. A one-off mass promotion also reaches people who would have ordered anyway. Segments, campaigns and subscribers live in CloudCart's Marketing Suite (Marketing in the admin), and the catalog of ready automated campaigns includes win-back templates for inactive customers. The win-back flow looks like this:

- Day 0: a "We miss you" email. Segment "last order more than 90 days ago", an email with your bestsellers and no discount.

- Day 3: Viber or SMS with a personal code. Viber is the messaging app many Bulgarian shoppers use daily, and CloudCart sends business messages there next to SMS. The code is unique to each recipient and is created at send time. Viber and SMS are not included in the plans on the pricing page ; if you have not added them, make the second message an email.

- Day 7: exit. A customer who orders leaves the flow with the exit tag "won back". Anyone who does not order gets no more messages from this flow.

Ninety days is a starting point. If your customers buy monthly, 45 days without an order is already a signal. If they buy twice a year, start at 180. The AI agent works out the average gap between orders from your order history (see [the table of prompts](https://cloudcart.com#metriki-ai-agent)).

Around the win-back flow, three more emails turn a first-time buyer into a regular:

- Thank you and a review request, 3 to 5 days after delivery. A review keeps the customer engaged and sells to the next one. How to collect and show reviews is in the guide to customer reviews for an online store .

- A matching product, 7 to 14 days after the order. The item that completes the purchase: filters for the jug, a refill for the cream. In CloudCart, Cross-sell suggests related products in the cart and after the order.

- Birthday. The catalog of ready automated campaigns has birthday and anniversary templates (CloudCart updates the set). Collect the date with your own "Birthday" field in the signup form (Marketing → Subscribers → Custom fields).

The texts, timings and sample subject lines for the seven automated emails are in the guide to [email marketing for ecommerce](https://cloudcart.com/en/blog/email-marketing-online-store), and the screens step by step are in [the email campaign guide for CloudCart](https://cloudcart.com/en/blog/email-campaign-cloudcart-step-by-step).

### How to tell whether loyalty emails bring orders

Every Marketing Suite campaign has its results under Marketing → Campaigns → the statistics icon on the campaign row. At the top are five numbers: subscribers reached, open rate, click rate, conversion and revenue. Below them, a table by step shows sent, opened, clicked, unsubscribed, orders and revenue for each message, so you can see which step of the "We miss you" flow brings the customer back.

- The order goes to the last click. The campaign gets the order if the customer's last click before buying was a link from it and the order is in a status that counts as revenue.

- Numbers refresh every hour. Opens, clicks and revenue can lag by up to 60 minutes; the number sent shows at once.

- Unsubscribes signal frequency. If a step has more unsubscribes than orders, the message goes out too early or too often.

Important: unsubscribed customers receive nothing on any channel. Under the GDPR, people can object to direct marketing at any time, and the [European Commission](https://commission.europa.eu/law/law-topic/data-protection/rules-business-and-organisations/legal-grounds-processing-data/can-data-received-third-party-be-used-marketing_en) is clear that you must not send advertising to anyone who objected. Send only to subscribers who gave marketing consent; CloudCart records the consent with the date, IP address and the text the customer accepted.

## What remarketing is and how to run it from your store

Remarketing (also called retargeting) is advertising shown only to people who have already been to your store: they viewed a product, left a cart or bought. It is the cheapest advertising because the audience already knows you, and it carries your loyalty program beyond the inbox.

Remarketing runs on a pixel: a small piece of code that tells the ad platform what the visitor does. In CloudCart you turn pixels on from the apps, with no code in the theme.

| Platform | What you turn on in CloudCart | Loyalty audiences |

| Meta (Facebook and Instagram) | Facebook Pixel (on every plan) in the XML Feed → Facebook app; the catalog for dynamic ads (Facebook Dynamic Ads, 100 to 10,000 products depending on the plan) is there too | Bought in the last 180 days; viewed a product without buying; Lookalike based on buyers |

| Google Ads | The Google Dynamic Remarketing app (Conversion ID and label; availability depends on the plan) or Google Tag Manager | Visitors who see exactly the products they viewed |

| TikTok | The TikTok Dynamic Ads app (pixel and catalog) | Viewed a product or added it to the cart |

Three rules make remarketing part of the loyalty program:

- Exclude recent buyers. A customer who ordered 3 days ago should not see an ad for the same product. Exclude the audience "bought in the last 14 days", or at least until delivery.

- Show the next purchase. Show buyers complementary products and new arrivals. The product they already own is wasted budget.

- Consent decides. If a visitor declines targeting cookies in the banner, the Meta pixel sends nothing, from the browser or from the server. That is why a remarketing audience is always smaller than your traffic.

The step-by-step setup is in the section on [remarketing on Facebook and Instagram](https://cloudcart.com/en/blog/meta-ads-online-store#remarketing) and the section on [remarketing on Google](https://cloudcart.com/en/blog/google-ads-online-store#remarketing). Video ads for repeat buyers on TikTok are covered in the guide to [TikTok Shop and TikTok ads](https://cloudcart.com/en/blog/tiktok-shop-tiktok-ads).

## Why the loyalty program has to work on mobile first

Your loyalty program has to work on phones first, because more than 60% of web page views in Bulgaria come from mobile devices, according to monthly data from [StatCounter](https://gs.statcounter.com/platform-market-share/desktop-mobile-tablet/bulgaria). A loyal customer opens the email and the ad on a phone and expects to order in two taps.

Check four things on your own phone: logging in to the account (without it the VIP discount does not apply), the promo code field in the cart, the visible group discount before payment, and the link in the email, which should open the product directly. The mobile version is on every CloudCart plan; the checklist for speed, buttons and cart is in the guide to [the mobile version of an online store](https://cloudcart.com/en/blog/mobile-version-online-store).

## Which metrics show the program works, and how to get them with an AI agent

Five metrics show whether a loyalty program makes money: returning customer rate, orders per customer, time between orders, campaign revenue and branded searches on Google. An AI agent calculates the first three from your store data once you connect it with an access key (a PAT token). Each customer record holds the number of completed orders, the total order value and the date of the last order.

| Metric | What it shows | Prompt for the AI agent |

| Returning customer rate | How many of this period's buyers had bought before | "What is the share of returning customers by month since June?" |

| Orders per customer | How many times one customer buys on average | "How many orders does a customer place on average, and how are they split: 1, 2, 3 or more?" |

| Time between orders | After how many days a customer usually comes back | "How many days on average pass between the first and second order?" |

| VIP candidates | Which customers meet your threshold | "Show customers with 3 or more orders and over €300 in total who are not in the VIP group." |

| At-risk customers | Regulars who are drifting away | "Which customers with at least 2 orders have not ordered in 60 days?" |

| Campaign revenue | How many orders the "We miss you" flow brought | The number is in the campaign statistics in the admin. Copy the table by step and ask: "Which step brings the most orders and where are the most unsubscribes?" |

| Branded searches | How many people search for your store by name on Google | "Here is the Search Console export. How did clicks change for queries with the store name?" |

Branded searches are a quiet sign of loyalty: a returning customer often types the store name into Google instead of the product. Search Console, Meta Ads and Google Ads data are not in the store, so you give them to the agent as an export (CSV) or through a separate connection between the assistant and those services. How to read the queries is in the guide to [Google Search Console for an online store](https://cloudcart.com/en/blog/google-search-console-online-store).

## What you gain by running loyalty with an AI agent

An AI agent turns the loyalty program from a monthly chore into a daily routine: it finds the customers who crossed the threshold and moves them into the group once you say yes. In the admin the same job is a filter, manual selection and the bulk action to change the group, repeated every month.

- Tiers maintain themselves. "Move every customer with over €500 in total into the Gold group and show me the list first." The agent creates the group if it does not exist and waits for your confirmation.

- An early warning. "Which VIP customers have not ordered in 45 days?" Ask the agent every Monday and you will see a regular drifting away before you lose them.

- The number before the decision. "How many orders and how much revenue did the VIP group bring in October compared with September?" That tells you whether the reward pays for itself.

- Cashback adds itself up. "Add 5% of October orders as wallet credit for each customer, valid for 60 days, and show me the amounts first." The agent writes the credit through the API, and you approve the credits in the wallet.

- Emails built from your real products. The agent writes the campaign text with your store's bestsellers, their photos and prices. The segment and the send stay in the admin, with you.

| Task | In the admin | With an AI agent |

| Who crossed the VIP threshold | Sort by "Completed orders" or "Revenue" and review the list | One sentence with the threshold; the agent returns names and amounts |

| Moving customers into the group | Select and use the bulk action, every month | The agent moves customers after your yes |

| Time between orders | Not shown as a ready number | The agent calculates it from the order history |

| Monthly cashback | Added by hand from each customer profile | The agent calculates the amounts and writes them through the API for your approval |

| Month-on-month comparison | Two periods in Analytics and manual maths | "Compare the VIP group in October and September" |

For reports, give the agent a "Read only" key: it sees everything and changes nothing. To move customers between groups, the key needs write access to the "Customers" section.

> Store with an AI assistant Your VIP list in one sentence Claude Code, ChatGPT/Codex, Gemini CLI or Cursor connect to your store with a PAT token from the admin. Instead of filters and tables, you ask who crossed the threshold and move them into the group after a review. How to connect the AI assistant →

## 7 mistakes that make a loyalty program expensive

- A discount for everyone. If "VIP" means anyone with one order, the reward becomes a store-wide promotion. The threshold has to separate the true regulars.

- A reward bigger than the margin. 15% for VIPs on a 25% margin means your best customers bring the least profit.

- A discount in the first reminder. A code in the very first email teaches customers to wait for the code. Give it in the second or third.

- A one-off segment for a live flow. A template is a snapshot; for a flow that starts every day, the segment has to be automated.

- Ads to people who just bought. Remarketing without excluding recent buyers pays for customers you already have.

- Guest-only checkout. Guests are left out of the repeat customer report and cannot join a group. Give people a reason to create an account.

- No measurement. A program with no before-and-after comparison in Analytics is spending out of habit. Check the returning customer rate every month.

## Frequently asked questions

**What is a customer loyalty program?**

A customer loyalty program is a set of rules for rewarding customers who buy again: a discount for a VIP group, free shipping, cashback or early access. The goal is a second and third order without the store paying for an ad to bring the customer back.

**How do I create a loyalty program for an online store?**

Choose the reward (a discount, free shipping or early access) and the threshold (for example 3 orders or €300 in total). In CloudCart, create a "VIP" customer group, give it a discount in Marketing → Discounts and launch an automated campaign to the "Loyal customers" segment. After 30 days, compare the returning customer rate in Analytics.

**What is remarketing?**

Remarketing is advertising shown only to people who have already been to your store: they viewed a product, left a cart or bought. It runs on a Meta, Google or TikTok pixel that you turn on from the apps in CloudCart. Show buyers their next purchase and exclude them from ads for the product they just ordered.

**How do I win back lapsed customers?**

With an automated "We miss you" flow: an email with your bestsellers on the day the customer becomes inactive, a Viber message or SMS with a personal code on day three, and an exit on day seven once they order. Set the inactivity threshold (45, 90 or 180 days) from the average gap between orders in your store.

**How many customers buy again?**

It depends on the category: consumables and cosmetics have a higher share, furniture and electronics a lower one. In CloudCart the exact number for your store is in Analytics, in the Total Customers box ("New" and "Returning"), and on plans that include it, next to the average for your industry.

**Points or discounts: which is better for an online store?**

For a small or mid-sized online store a group discount is more practical: one rule and no stockpile of points to track and account for. Points make sense for large chains with an app and a card. In CloudCart the reward for regulars is a customer group, a rule such as "10% for customers with 3 or more orders", or euro cashback in the Virtual Wallet.

**How much does a loyalty program cost for an online store?**

In CloudCart you need no separate software: customer groups start from Starter Pack (€390 a year billed annually, excl. VAT, with one group of your own besides the system groups), and segments and campaigns are in Marketing Suite. New stores pay €1/month for the first 3 months on any plan. The real cost of the program is the reward: a 10% discount on a 40% margin takes a quarter of the order's profit.

**Can an AI agent run the loyalty program?**

Yes. With a PAT token from the admin, the agent reads each customer's orders, finds who crossed the threshold and moves them into the group after you confirm. It also calculates the time between orders and flags regulars who stop buying. Segments and sending the campaigns stay in the admin.
