How can I segment based on purchase history? (e.g., frequency, value, category)

Still have a question, spotted an error, or have a better explanation or a source we should cite?

You already know who bought from you. The real power comes from knowing what they bought, how often, and how much they spent. That's the foundation of purchase-history segmentation, and it's one of the most reliable ways to send emails people actually want to open.

Here are the main dimensions to work with and how to turn each one into a real segment.

Segment by purchase frequency

Split your customers into groups based on how many times they've ordered. A one-time buyer needs very different messaging than someone on their fifth order. Common tiers are one purchase, two to four purchases, and five or more. One-time buyers are your win-back opportunity. Repeat buyers are your loyalty and upsell audience. The threshold you pick depends on your product's natural repurchase cycle.

Segment by purchase value

Total spend (or average order value) tells you a lot about who your high-value customers are. You can create tiers like under $100, $100 to $499, and $500 or more. Then reward your top tier with early access, exclusive offers, or a genuine thank-you. Don't send the same "20% off" blast to someone who just spent $800 and someone who bought a $12 item on sale. They're in completely different relationships with your brand.

Segment by product category

If someone has only ever bought from your skincare line, they probably don't need your kitchen accessories email. Category-based segments let you send relevant cross-sells instead of hoping a broadcast email lands on the right person. This also protects your sender reputation because relevant emails get opened, and opens signal to mailbox providers that your emails are worth delivering.

Segment by recency

Now when someone last bought is just as important as what they bought. Someone who purchased yesterday is in a very different mindset than someone who purchased 18 months ago. Common buckets are active (purchased in the last 30 to 90 days), lapsing (90 to 180 days), and at-risk (180 days or more). This pairs naturally with RFM scoring, which combines all three dimensions into one model.

How to actually build these segments

Where this lives depends on your stack. If you're using Klaviyo or Omnisend, purchase data syncs directly from your ecommerce platform and you can build these segments natively with their built-in filters. If you're on Mailchimp, you'll need to use their purchase activity filters or sync via a connector like Zapier. If you're on a more custom setup with Brevo, ActiveCampaign, or Customer.io, you'll map transaction data to custom contact fields or use event-based segmentation to track purchases as events.

If your ESP doesn't have native ecommerce integration, the practical approach is to export your transaction history (from Shopify, WooCommerce, or your order management system), calculate the fields you need (total orders, total spend, last purchase date, categories bought), and either import those as custom fields in your ESP or feed them in via API.

A quick note on data freshness

Segments built on stale purchase data can backfire. If your transaction sync only runs weekly, someone who bought yesterday might still get a "we miss you" win-back email. Set up daily syncs where possible, or at minimum flag your segments with a "last updated" timestamp so you know when the data is reliable.

Not sure how to get your transaction data connected to your email tool? Our SOS hotline is free and we're happy to walk through your specific setup.

Contributors

Who worked on this answer

Every name links to their profile. Every company links to their site. Real people, real accountability.

Ask an AI · tailored to your setup

Get a step-by-step segmentation plan for your setup

I'm reading about purchase-history segmentation in email marketing and want help applying it to my specific setup. Based on my details below, please give me: 1. Which purchase segments to build first (given my list size and platform) 2. Exactly how to create each segment in my ESP (step by step) 3. What data fields I need and where to get them from my ecommerce platform 4. Common mistakes to avoid with purchase data syncing My details: - ESP / email platform: e.g. Klaviyo, Mailchimp, ActiveCampaign, Brevo - Ecommerce platform: e.g. Shopify, WooCommerce, custom, none - List size: e.g. 12,000 contacts - Rough % who have made at least one purchase: e.g. 40% - Average order value range: e.g. $30-$200 - Product categories: e.g. 3 main categories, or just one - How often transaction data currently syncs to your ESP: e.g. real-time, daily, manual export, unknown - Current segmentation approach: [none / basic active-inactive / some purchase segments already]

Edit the yellow boxes, then send to the AI of your choice.