Skip to main content

Why your retention reporting should start with contribution margin, not revenue

Profile photo of author Petros Fotiadis
Petros Fotiadis
6 min read
Retention marketing
November 5, 2026
Set as Preferred Source

Measure retention profitability beyond revenue

Generated by Klaviyo AI

Revenue-based retention reports can hide losses when discounts, shipping, and returns erode product margins, especially for multi-brand retailers. The post explains how adding product margin data to Klaviyo can guide promotions, customer segmentation, and deliberate inventory clearance decisions.

  • Revenue hides costs: Strong flow revenue does not establish profitability when discounts consume already narrow product margins.
  • Product margin data: Storing product-level gross profit margins as a Klaviyo custom property helps determine promotion eligibility, product recommendations, and affordable discounts.
  • Profitable loyalty segments: The agency identifies ultra-VIP customers by combining three or more purchases in six months with a tendency to buy high-margin products.
  • Deliberate clearance discounts: Low-margin discounts can be intentional when selling inventory that has sat for 12–16 months turns stagnant stock 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 program that drives plenty of revenue but still loses money.

Klaviyo will tell you:

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 program 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.

Petros Fotiadis
Petros Fotiadis
Petros Fotiadis is the founder of Bravescale, a performance marketing agency based in Thessaloniki, Greece, working with ecommerce and DTC brands across Europe, the UK, the US and the UAE. With over 12+ years in digital marketing, he has run paid acquisition across Google and Meta and seen too many brands pay to win a first order, then do little to earn the second. He built Bravescale to close that gap, treating Klaviyo retention as the other half of acquisition strategy rather than a separate channel. Petros favors clean measurement over flattering dashboards: every program his team runs is judged on revenue that holds up in GA4 and the P+L.

Related content

Build 3 welcome flows, not one
After auditing 300+ Klaviyo accounts, Underground Ecom’s Stefan Milicevic explains why one welcome flow fails most brands, and the 3 flows to build instead.
Keep restaurant customers coming back
Restaurants already run ecommerce businesses. See how to use guest data, lifecycle flows, and paid ads to keep customers coming back and ordering more often.
Customer Agent is more than a support tool
Most brands point their AI customer service agent at the support queue. ECD's Zak Cassady-Dorion shares how to turn Klaviyo Customer Agent into a revenue channel.