Published · Updated · 5 min read · By the FCAnalytics team
Customer lifetime value in WooCommerce: a simple formula and how to raise it
Customer lifetime value (LTV, sometimes CLV) in WooCommerce is the total a customer is worth to your store over the time they keep buying. For a small ecommerce store it is the number that answers two questions nobody else can: how much can you afford to spend to get a customer, and are the customers you got this year better or worse than last year’s.
Large companies model LTV with survival curves and discount rates. A small store does not need any of that. This article gives a formula you can calculate in a spreadsheet, shows how to read a cohort table with a made-up example, and lists the things that actually raise the number.
The simple formula
Customer lifetime value = Average order value x Average orders per customer x Gross margin
Three inputs, all available from your WooCommerce order history and your product costs.
- Average order value (AOV): net revenue divided by orders, over the period.
- Average orders per customer: total orders divided by unique customers, over the same period. A store where most people buy once will be close to 1.0.
- Gross margin: (revenue minus product cost) divided by revenue, as a decimal. Including this step turns revenue LTV into profit LTV, which is the one that should drive spending decisions.
Pick a period long enough to include repeat purchases. Twelve months works for most stores; use longer if your product is bought rarely.
A worked example
This example uses made-up round numbers for a hypothetical store and is not based on any real business.
Over the last twelve months the store had 2,000 orders from 1,250 unique customers, $100,000 in net revenue, and product costs of $45,000.
- AOV = $100,000 / 2,000 = $50
- Orders per customer = 2,000 / 1,250 = 1.6
- Gross margin = ($100,000 – $45,000) / $100,000 = 0.55
- LTV = $50 x 1.6 x 0.55 = $44
So each new customer is worth about $44 in gross profit over a year. If the store pays $30 in ad spend to acquire a customer, it is ahead. At $50 it is losing money on every new customer, even though revenue per customer is $80 and looks fine.
This is the whole point of the calculation: compare LTV with customer acquisition cost (CAC), not revenue with ad spend.
Why cohorts matter more than the average
The twelve-month average mixes customers who joined last week with customers who have had a full year to buy again. It also cannot tell you whether things are getting better. Cohorts fix both problems.
A cohort is the group of customers who made their first purchase in the same month. For each cohort you track how much they have spent after one month, three months, six months, and so on. Then you compare cohorts with each other at the same age.
Example cohort table
Made-up figures. Each cell is the average net revenue per customer in that cohort, cumulative, at the given number of months since first purchase.
| First purchase | Customers | Month 1 | Month 3 | Month 6 | Month 12 |
|---|---|---|---|---|---|
| January | 100 | $50 | $62 | $71 | $84 |
| April | 120 | $52 | $66 | $78 | |
| July | 140 | $49 | $58 | ||
| October | 110 | $55 |
Reading down a column compares cohorts at the same age. In this example the April cohort is ahead of January at every age, which suggests something improved in spring, perhaps a post-purchase email sequence. The July cohort is behind both, which is worth investigating: a discount-driven campaign that month may have attracted one-time bargain hunters. The blank cells are simply cohorts that have not reached that age yet.
Multiply any cell by gross margin to get profit LTV at that age. Cohort tables are the single most useful view for a small store that wants to know whether its retention is improving, and they are hard to build by hand, which is why the customers screen in FCAnalytics builds them automatically from imported WooCommerce orders, alongside new versus returning revenue and per-customer lifetime value.
How to raise lifetime value
The formula has three parts, so there are three levers. In practice the second one, orders per customer, has the most room in most small stores.
Raise orders per customer
- Post-purchase email that is useful, not just promotional. How to use the product, how to care for it, what people buy next. Send the first one when the order arrives, not when it ships.
- Time the next offer to the product. If a consumable lasts about six weeks, a reminder at week five works far better than a generic monthly newsletter.
- Make reordering trivial. One-click reorder from the account page or the email.
- Fix the first experience. Delivery time, packaging, and how a problem is handled decide whether there is a second order. Return rate by product is an early warning here.
- Subscriptions, where the product fits. Only for products people genuinely run out of.
Raise average order value
- Free-shipping threshold set a little above the current AOV, with a progress message in the cart.
- Bundles that make sense together, priced slightly below the sum of parts.
- A relevant add-on at checkout. One, not five.
Raise gross margin
- Negotiate supplier terms once volume justifies it.
- Stop discounting products that sell anyway.
- Drop or reprice products with high return rates.
Mistakes to avoid
- Using revenue LTV to set ad budgets. You can only spend margin, not revenue.
- Counting the first order twice. Orders per customer includes the first order. A value of 1.6 means 0.6 repeat orders on average, not 1.6.
- Ignoring refunds. Use net revenue after refunds throughout.
- Reading young cohorts as a trend. A cohort that is two months old cannot be compared with one that is twelve months old. Compare at the same age.
- Treating all customers as one. Even a simple split, such as first order with coupon versus without, often shows two very different LTVs.
A simple monthly routine
- Recalculate the three inputs and LTV for the trailing twelve months.
- Update the cohort table and compare the newest cohorts with older ones at the same age.
- Compare profit LTV with this month’s customer acquisition cost per channel.
- Pick one lever to work on for the next month.
That takes an hour with a spreadsheet and a WooCommerce export, or a few minutes if a tool keeps the tables current. If you want to see cohorts and lifetime value for your own store without building them, FCAnalytics imports your order history when you connect and keeps it synced, and a 14-day trial does not need a card. The live demo shows the customers screen with sample data if you want to look first.
Related guides
Written by the FCAnalytics team, the people who build the product. Definitions and formulas in this article are the ones FCAnalytics uses in its dashboards; see how net profit is calculated and the FAQ.