Measure retention by margin, not just revenue
Generated by Klaviyo AI
Revenue-based retention reports can conceal losses when discounts erode already thin product margins, especially for multi-brand retailers. The post explains how adding product-level gross margin to Klaviyo can guide promotions, customer segmentation, and deliberate inventory clearance decisions.
- Revenue hides costs: Strong flow revenue does not establish profitability when discounts, shipping, and returns consume product margins.
- Product margin data: Store product-level gross margin as a Klaviyo custom property to inform product recommendations, promotional exclusions, and discount levels.
- Profitable loyalty segments: An ultra-VIP segment combines three or more purchases in six months with a tendency to buy high-margin products.
- Deliberate clearance discounts: Low-margin discounts can serve a purpose when they turn inventory that has sat unsold for 12–16 months into cash.
As the founder of Bravescale, a performance marketing agency connecting paid acquisition with Klaviyo retention for ecommerce brands, I run retention for ecommerce stores that aren’t typical direct-to-consumer (DTC) brands. They're multi-brand retailers selling skincare, supplements, or fashion from a dozen different suppliers, each with a different cost structure and a different margin.
When I open one of these accounts in Klaviyo for the first time, I almost always find the same problem: the revenue looks great, but nobody can tell me if the business is actually profitable.
Here's how that happens.
Why revenue-based retention reports can hide losses
Let’s say a flow drives $50,000 this month. Your team calls it a win.
But if that revenue comes from a 20% discount on a product line that only carries a 25% gross margin to start, you're giving back most of what you make before shipping and returns even enter the picture.
Run that math across a welcome flow, a win-back flow, and a few campaigns, and you can build a retention programme that drives plenty of revenue but still loses money.
Klaviyo will tell you:
- Revenue per flow (which you can build out via a custom dashboard)
- Revenue per recipient
- Revenue by segment
But it won't tell you what that revenue cost you to generate, because it has no idea what your margins are until you tell it.
Why ecommerce margins hit multi-brand retailers first
If you're a true DTC brand, you set your own prices and you usually know your margin off the top of your head. We still audit it on every discovery call because we want to see 50% gross margin or higher before building a retention programme around discounting, but we rarely get surprised.
Multi-brand stores are different. You're reselling other people's products at whatever margin your supplier agreement gives you, and that margin can swing wildly from brand to brand.
We generally look for 40% gross margin as the bottom for a store like this. Below that, discounting-focused marketing automation start working against you instead of for you.
One client we work with, a multi-brand skincare retailer, had a core product line sitting under 30% gross margin. Their welcome flow gave new customers 20% off, then kept offering 10% off on every repeat order. By the time you factor in returns and shipping, they were handing the product away for close to nothing.
Another brand on their site carried just a 15% margin. We didn't offer any discounts, set up automations, or build any retention strategy at all. It simply wasn't worth the acquisition cost to keep selling it that way.
How to add product margin to Klaviyo as a custom property
To change how you operate, build a field in Klaviyo for product-level profit margin.
For every retention account we take on, the first move is getting the gross profit margin per product into Klaviyo as a custom property.
- If the store runs on Shopify and already has cost data loaded, you can often import that data directly.
- If the margin data lives somewhere else (e.g., a spreadsheet or a custom CMS), someone has to input it into Klaviyo and keep it updated. That can require a conversation with a developer, but it's not always essential.
Once that property exists, it changes from a manual exercise into a dynamic one. Before we had it, we kept internal spreadsheets of which products and brands carried which margins, and we built filters by hand every time we wanted to exclude a low-margin line from a promotion.
Now, the property does the work for us. We use it to decide which products get pushed in up- and cross-sell flows, which brands earn a spot in acquisition offers, and what percent discount a welcome flow can actually afford to give away.
Build ecommerce customer loyalty segments around margin
The property gets even more useful once you pair it with segmentation. We've started building what we think of as an ultra-VIP segment: customers with 3 or more purchases in the last 6 months who also skew toward buying high-margin products.
These are the customers worth investing in, because they're loyal and profitable. We build our retention strategies and rewards around keeping them.
That's really the goal behind all of this: to think about acquisition and retention together. We know what it costs to acquire a customer, and this process makes sure the repeat purchases we drive afterward are actually adding to the business, not just moving product at a flat return or a loss.
When to discount on purpose
With a few fashion clients who sell multiple brands, we sometimes build a flow specifically to move products that have sat in a warehouse for 12–16 months without selling. We'll discount those deliberately, even at a low margin, because getting that inventory out the door and turning it into cash beats letting it sit as a loss on the books.
The difference between this and the problem I described earlier is that it's a decision, built off the same segment and margin data, not something that's happening by accident every time a flow fires.
Build your custom property today
If you're running retention for a multi-brand store, you don't need a dashboard overhaul to get started.
Pick one category or brand your team already suspects is underperforming on margin. Get the real number, not a guess, and get it into Klaviyo as a custom property.
Then look at your current flows and campaigns and ask a harder question than how much revenue they’re driving: what would this look like if margin, not revenue, were the headline?
Revenue tells you something moved. Contribution margin tells you whether that movement was worth it.

