# Customer Segmentation for Ecommerce: RFM and 10 Segments

Customer segmentation for ecommerce: the criteria that matter, RFM analysis and Shopify's 11 RFM groups, the segment editor and 10 ready-made segments.

Source: https://getkanal.com/blog/customer-segmentation-ecommerce  
Last updated: 2026-10-24

## Key takeaways

- For an online store, the most reliable segmentation criteria come from order data: last order date, number of orders, amount spent and products purchased.
- Shopify already sorts your customers into 11 RFM groups (Champions, Loyal, At risk, Dormant and more), and any group becomes a customer segment with the rfm_group filter.
- A segment is not consent: on WhatsApp, customers imported from a Shopify segment arrive in Kanal with the Unknown status, and WhatsApp does not currently deliver marketing templates to US phone numbers.

Customer segmentation for ecommerce means splitting your customers into groups that share traits or buying behavior, so each group gets the message that fits it. For an online store, the most useful criteria come from order data: last order date (recency), number of orders (frequency), amount spent and products purchased, plus location, sales channel and marketing consent.

Shopify gives you two tools to do it without an app: the **RFM customer analysis** report, which places every customer in one of 11 groups, and the **segment editor**, which turns filters into customer lists. This guide covers the criteria, RFM analysis, building a Shopify customer segment and 10 ready-made segments, based on the Shopify Help Center (read on October 24, 2026), then how to use them on WhatsApp. The strategies that bring each group back are covered in our guide to [retention marketing](https://getkanal.com/blog/retention-marketing-ecommerce).

## What is customer segmentation?

A segment is a group of customers defined by a rule, such as "customers with at least two orders, the last one within 90 days." It is not the same as a static list, frozen at a point in time (everyone who joined the March private sale), or a persona, a profile that guides the tone of your messages.

In Shopify, segments are dynamic: according to the Help Center, new customers who meet the criteria join automatically, and customers who no longer meet them drop out. One customer can sit in several segments at once.

## Why segment customers in ecommerce?

One message sent to the whole list serves everyone poorly. Segmentation does four jobs:

- **The right message at the right time.** A first-time buyer wants help using the product, a customer gone for a year needs a reason to come back.
- **Margin protection.** A discount sent to customers who would have bought anyway gives away margin.
- **Fewer annoying mistakes.** A promotion that lands the day after someone paid full price creates frustration: an exclusion segment prevents it.
- **Results you can read.** A result per segment can be compared, a store-wide average blends opposite behaviors. Our guide to the [customer retention rate](https://getkanal.com/blog/customer-retention-rate) shows how to track repeat buying group by group.

## Which segmentation criteria matter in ecommerce?

Criteria fall into four types: geographic, demographic, behavioral and psychographic. For an online store, behavioral criteria come first: your order data already holds them, and they describe what customers do, not what they say.

Here are the useful criteria and the matching Shopify filter, from the [Shopify customer segment filters](https://help.shopify.com/en/manual/customers/customer-segmentation/reference-guide/shopify-segments) reference:

| Criterion | Shopify filter | Example use |
|---|---|---|
| Recency | Last order date (`last_order_date`) | Spot customers who are drifting away |
| Frequency | Number of orders (`number_of_orders`) | Separate one-time buyers from regulars |
| Orders in a period | Orders placed (`orders_placed`) | Customers with 3+ orders in 6 months |
| First order | First order date (`first_order_date`) | Welcome new customers |
| Monetary | Amount spent (`amount_spent`) | Isolate big spenders |
| Order value (one order, abandoned checkout) | `orders_placed` with `amount`, Abandoned checkout date (`abandoned_checkout_date`) | Follow up on a checkout, target large orders |
| Products purchased | Products purchased (`products_purchased`) | Cross-sell a complementary product |
| Sales channel (app or location) | `orders_placed` with `app_id` or `location_id` | Customers of your physical store (Shopify POS) |
| Location and language | Countries or regions (`customer_countries`), Customer language (`customer_language`) | Shipping offers by country, the right language |
| Consent | Email subscription status (`email_subscription_status`), SMS subscription status (`sms_subscription_status`) | Only message subscribers |
| Prediction | Predicted spend tier (`predicted_spend_tier`) | Find high-potential customers |

Predicted spend tier (High, Medium, Low) is only available once your store has made over 100 sales, and amounts use your store currency, with no symbol. How spend adds up to a customer's value over time is covered in our guide to [customer lifetime value](https://getkanal.com/blog/customer-lifetime-value).

## RFM analysis: how it works and Shopify's 11 groups

RFM analysis combines three criteria taken from order history:

- **R for recency**: how many days since the customer's last order.
- **F for frequency**: how many orders they have placed in total.
- **M for monetary value**: how much they have spent in total.

In the **RFM customer analysis** report, described on Shopify's [customers reports](https://help.shopify.com/en/manual/reports-and-analytics/shopify-reports/report-types/default-reports/customers-reports) page, each customer gets a 3-digit score, each digit from 1 to 5. Scores only compare your customers with each other: a 5 puts a customer in your store's top 20% on that dimension, a 1 in the bottom 20%. Individual scores are not shown; you see the group.

The group depends on the recency score (R) and the average of the frequency and monetary scores, **FM = (F + M) / 2**, rounded down. Shopify's example: a customer scored 154 (recency 1, frequency 5, monetary 4) has FM = (5 + 4) / 2 = 4.5 and lands in **Previously loyal**: they used to order often, but not lately.

![Shopify Help Center table of RFM groups, with the recency and FM thresholds and the suggested goal for each group](https://getkanal.com/images/screenshots/shopify-help-rfm-groups-segmentation.webp)

_Source: Shopify Help Center, Customers reports, RFM groups section, read on October 24, 2026. In 1, the recency (R) and frequency-monetary average (FM) thresholds; in 2, the At risk group and its description; in 3, the action Shopify suggests for that group._

Here are the 11 groups, with their filter value, thresholds and the goal Shopify gives each one (full descriptions are in the capture above and in the Help Center):

| RFM group | Filter value | Thresholds | Shopify's goal |
|---|---|---|---|
| Champions | `CHAMPIONS` | R = 5, FM > 3 | Retain as brand advocates: exclusive deals, early access, referral program |
| Loyal | `LOYAL` | R 3 to 4, FM > 3 | Move to Champions: upsell higher-value products, ask for reviews |
| Active | `ACTIVE` | R ≥ 4, FM 2 to 3 | Move to Loyal or Champions: top product recommendations, loyalty programs |
| New | `NEW` | R = 5, FM ≤ 1 | Move to Active: onboarding support, start the relationship |
| Promising | `PROMISING` | R = 4, FM ≤ 1 | Move to Active: replenishment reminders, product education |
| Needs attention | `NEEDS_ATTENTION` | R = 3, FM = 3 | Move to Loyal or Active: limited-time offers based on past purchases |
| Almost lost | `ALMOST_LOST` | R = 3, FM ≤ 2 | Move to Active or Promising: useful resources, discounts on popular products |
| At risk | `AT_RISK` | R ≤ 2, FM 3 to 4 | Move to Loyal or Needs attention: highly personal communication, an offer too good to miss |
| Previously loyal | `PREVIOUSLY_LOYAL` | R ≤ 2, FM > 4 | Move to Loyal: new products or drops, new offers |
| Dormant | `DORMANT` | R ≤ 2, FM ≤ 2 | Move to Almost lost: newsletters, a reach-out campaign |
| Prospects | `PROSPECTS` | No orders | Move to New: welcome email with a first-time offer |

To open the report: **Analytics > Reports**, **Category** filter, **Customers**, then **RFM customer analysis**. For each group, it shows the share of your customers, average days since last order, total number of orders and total amount spent. Clicking a group name offers **View report** (the group's customer list) or **Preview segment**, which opens the segment editor with the group already applied.

## How to create Shopify customer segments

A Shopify segment is a ShopifyQL query, but the editor suggests filter names, operators and values as you type. According to the Help Center page on [creating customer segments](https://help.shopify.com/en/manual/customers/customer-segmentation/create-customer-segments), the default query has fixed clauses (`FROM customers` and `SHOW ...`) and you only edit the `WHERE` clause, where your filters go.

![Shopify Help Center page on the segment query editor, with the default ShopifyQL query and the WHERE clause where filters are added](https://getkanal.com/images/screenshots/shopify-help-segment-editor-segmentation.webp)

_Source: Shopify Help Center, Creating customer segments, read on October 24, 2026. In 1, the default query every segment starts from; in 2, the WHERE clause where you add your filters._

The steps:

1. From your Shopify admin, go to **Customers**, then **Segments**.
2. Click **Create segment**, start from an existing segment, or click the **Templates** icon to insert a template's filters.
3. Add your filters to the `WHERE` clause: a filter name (`number_of_orders`), an operator (`>=`) and a value (`2`).
4. Click **Run query**: matching customers appear under the editor, with the count.
5. Review the AI-generated description, then click **Save segment** and name it.

To combine filters, use `AND` (the customer must meet every condition) and `OR` (one is enough). Add brackets when you mix them: without brackets, Shopify applies `AND` before `OR`, which changes the result. The Help Center's example, `(amount_spent > 100 OR number_of_orders >= 5) AND email_subscription_status = 'SUBSCRIBED'`, returns email subscribers who spent more than $100 or placed at least 5 orders.

Once saved, a segment is ready to use, according to the page on [managing customer segments](https://help.shopify.com/en/manual/customers/customer-segmentation/manage-customer-segments): **Use segment > Email** starts a Shopify Messaging campaign (only email subscribers receive it), **Use segment > Discount** creates a code for that segment, and **More actions > Export** produces a CSV file. Test orders and deleted orders are excluded from the calculations.

## 10 ready-made segments for an online store

These queries use filters documented by Shopify. The thresholds (30 days, 90 days, 300) are examples: set them to your buying cycle and average order value. For an email campaign, add `AND email_subscription_status = 'SUBSCRIBED'`.

| # | Segment | ShopifyQL query | What to do with it |
|---|---|---|---|
| 1 | New customers | `first_order_date >= -30d AND number_of_orders = 1` | Usage tips, brand story |
| 2 | Second order to win | `number_of_orders = 1 AND last_order_date BETWEEN -90d AND -30d` | Complementary product, replenishment reminder |
| 3 | Active regulars | `number_of_orders >= 2 AND last_order_date >= -90d` | New arrivals, bundles, restocks |
| 4 | Best customers | `rfm_group = 'CHAMPIONS' OR rfm_group = 'LOYAL'` | Early access, review requests, referrals |
| 5 | Big spenders this year | `orders_placed MATCHES (sum_amount >= 300, date >= -12m)` | VIP perks without blanket discounts |
| 6 | Priority win-back | `rfm_group = 'AT_RISK' OR rfm_group = 'PREVIOUSLY_LOYAL'` | Personal message, what is new since their last order |
| 7 | Lapsed customers | `number_of_orders >= 1 AND last_order_date < -180d` | Short [win-back series](https://getkanal.com/blog/win-back-campaigns), then stop |
| 8 | Buyers of a product line | `products_purchased MATCHES (tag = 'skincare', date >= -90d)` | Cross-sell the neighboring line |
| 9 | Customers in one country | `customer_countries CONTAINS 'CA'` | Country-specific shipping terms and calendar |
| 10 | In-store customers | `orders_placed MATCHES (app_id = 129785)` | Invite point-of-sale customers to shop online |

A few notes:

- **Segment 2 targets the moment that decides repeat buying**: one-time buyers, during the window when a second order can still happen.
- **Segments 4 and 6 follow the RFM groups** and update on their own, with no threshold to maintain.
- **Segment 8 relies on your product tags**, and segment 10 on the Shopify POS app ID (129785), given as an example in the Help Center.
- **Exclude recent buyers from promotional campaigns**, for example with `AND last_order_date < -7d`.

## Using your segments on WhatsApp with Kanal

WhatsApp carries short messages, read on the phone, that customers can reply to. Three of Meta's rules make segmentation matter even more there.

- **Consent first.** Meta requires businesses to get opt-in before messaging people on WhatsApp, with the business name stated clearly, according to its page on [getting opt-in for WhatsApp](https://developers.facebook.com/documentation/business-messaging/whatsapp/getting-opt-in).
- **Per-user limits.** WhatsApp may limit how many marketing messages a person receives when they are less likely to engage, based in part on their recent marketing read rate, according to Meta's page on [per-user marketing template message limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/per-user-limits). An engaged segment gets through better than a blast to the whole list.
- **US phone numbers.** The same page states that WhatsApp does not currently deliver marketing template messages to users with US phone numbers (a +1 dialing code and a US area code). For a US store, WhatsApp marketing campaigns only reach customers with non-US numbers, so filtering by phone number country is part of every audience.

Kanal is the [WhatsApp app built for Shopify](https://getkanal.com/whatsapp-shopify) stores. According to its help article on [choosing a campaign audience](https://help.getkanal.com/en/articles/64-choose-the-audience-of-a-whatsapp-campaign-lists-segments-csv-shopify-and-klaviyo), a [WhatsApp campaign](https://getkanal.com/whatsapp-campaigns) can target five audience sources:

| Source | What it brings | Good to know |
|---|---|---|
| Kanal segment (Scale plan) | Order and WhatsApp engagement criteria | Recalculate before sending |
| Shopify customer segment | Every Shopify filter, RFM groups included | Imported when you select it, contacts arrive as Unknown |
| Klaviyo segment (Scale plan) | Your existing Klaviyo segments | Imported once, no real-time sync |
| List | A fixed group of contacts | Filled by import, automation or segment |
| CSV or Excel import | A one-off file | Only contacts who agreed to WhatsApp marketing |

### Kanal segments

Kanal segments are built on orders and WhatsApp engagement, according to the article on [understanding and using segments on Kanal](https://help.getkanal.com/en/articles/67-understanding-and-using-segments-on-kanal):

- **Orders**: the Placed an order event, with a frequency (at least once, zero times, at least 3 times...) and a period (whole period, last X days, between two dates), which gives the number of orders and orders placed within a period.
- **WhatsApp engagement**: Read, Clicked, Received, Sent you a WhatsApp message.
- **Phone number country** and **list membership**.

![Kanal help article on segments: the available events, including Read, Clicked and Placed an order](https://getkanal.com/images/screenshots/kanal-help-segments-criteria.webp)

_Source: Kanal Help Center, Understanding and using segments on Kanal, read on October 24, 2026. In 1, the WhatsApp engagement criteria (Read, Clicked); in 2, the order criterion._

There is no amount spent or last order date criterion. For win-back, combine "Placed an order at least once" over the whole period with "zero times" over the last 90 days, and add "Phone number country: exclude US" if you have US customers. For a spend threshold or an RFM group, use the Shopify customer segment as the audience.

A Kanal segment does not update in real time: click **Recalculate**, or tick **Recalculate the segment before sending** at the Audience step. And add engagement when it matters: "at least 3 orders" plus "Read at least once in the last 90 days" gives you VIPs who still read your messages.

### Consent, segment by segment

Kanal does not import Shopify's marketing consent: customers from a Shopify segment arrive with the Unknown status. Unsubscribed contacts are excluded automatically, Unknown contacts are not: check their consent. WhatsApp opt-in comes from the website widget, a popup, a QR code, a prefilled WhatsApp link, an opt-in step in an automation, or an import with consent. A STOP reply opts the customer out.

With the [Klaviyo integration](https://getkanal.com/integrations/klaviyo), Klaviyo segments become WhatsApp audiences, and WhatsApp events (delivered, read, clicked) flow back into Klaviyo. For a wider look at tools that organize customer data around WhatsApp, see our comparison of the [best WhatsApp CRM](https://getkanal.com/blog/best-whatsapp-crm) options.

More than 500 brands use Kanal, rated 5/5 on the Shopify App Store and set up in 5 minutes. Brands on Kanal see open rates above 90% on WhatsApp, and plans start at €89 a month, with Meta's message fees billed separately.

## Segmentation mistakes to avoid

**Too many segments.** A segment without its own message is dead weight: start with the few groups that call for a different action.

**Copied thresholds.** "Lapsed after 180 days" means nothing for a coffee store selling one-month bags. Set recency and frequency to the real time between your customers' orders.

**Treating a segment as consent.** Being in a segment does not mean someone agreed to hear from you: always cross-check with the channel's subscription status.

**Stale audiences and no holdout.** A segment imported into another tool reflects the day of the import: recalculate before each send. And keep a small holdout group, or a lift may just be the season.

## Customer segmentation in short

- **Definition:** groups of customers defined by a rule, so each one gets the message that fits it.
- **Criteria:** start with orders (recency, frequency, spend, products), then location, channel and consent.
- **In Shopify:** the RFM customer analysis report sorts customers into 11 groups, the segment editor turns a rule into a dynamic list.
- **On WhatsApp:** target an engaged segment, check consent, exclude US numbers from marketing campaigns and recalculate the audience before sending.

To send your Shopify segments on WhatsApp with Kanal, [book a demo](https://getkanal.com/demo): we will show you second-order, VIP and win-back segments on your own store.

## Frequently asked questions

### What is customer segmentation in ecommerce?

Customer segmentation in ecommerce is splitting your customers into groups that share traits or buying behavior, so each group gets the message and offer that fits it. For an online store, segments are usually built from order data (recency, frequency, amount spent, products purchased), plus location and marketing consent.

### What are the 4 types of customer segmentation?

The four classic types are geographic (country, city), demographic (age, language), behavioral (orders, products bought, abandoned checkouts, engagement with your messages) and psychographic (interests, values). Online stores start with behavioral segmentation, because the data is already in their order history.

### What is RFM segmentation?

RFM segmentation scores each customer on recency (how recently they ordered), frequency (how often) and monetary value (how much they spent). In Shopify, each dimension gets a score from 1 to 5 based on your own store's data, and customers are placed in one of 11 RFM groups, from Champions to Dormant.

### How do I create customer segments in Shopify?

From your Shopify admin, go to Customers, click Segments, then Create segment. Add one or more filters (filter name, operator, value) in the editor, for example number_of_orders >= 2, click Run query to see the matching customers, then click Save segment and name it.

### How many customer segments should an online store have?

Few, to start. A handful of segments tied to a specific action (second order, replenishment, win-back, best customers) beats a long list nobody uses. Add a segment only when you have a different message for it and a way to measure the result.

### Can I use Shopify customer segments for WhatsApp marketing?

Yes, with a WhatsApp app such as Kanal: a campaign can target a Shopify customer segment, imported when you select it. WhatsApp consent does not come from Shopify, so those contacts arrive with the Unknown status and you need their consent before a marketing message. WhatsApp does not currently deliver marketing templates to US phone numbers.
