Skip to main content

ProfitPeak Metrics & Formulas

This article explains how ProfitPeak calculates its core sales, profit, and attribution metrics. It also covers why some numbers, especially refunds and returns, won't always match Shopify.

Why does it matter how metrics are calculated?

When two reports show different numbers, the first instinct is to assume one is wrong. Usually both are right and they're answering different questions. Knowing exactly how each ProfitPeak metric is built helps you pick the right number for the decision in front of you. It also lets you explain the difference confidently when someone on your team holds up a Shopify report next to a ProfitPeak one.

How is each metric calculated?

Metric

How it's calculated

What it tells you

Gross Sales ex Shipping

Product price × quantity

Product revenue before shipping, discounts or refunds. Used to work out Variable Cost.

Gross Sales

Product price × quantity + shipping paid by customer (excl. tax)

Everything customers were charged for products and shipping, before discounts and refunds

Net Sales (also called Total Revenue)

Gross Sales − discounts − refunds (excl. tax)

The sales revenue you actually keep

Total Sales

Gross Sales − discounts − refunds + taxes + duties

What customers paid at checkout, including tax and duties

Gross Profit

Net Sales − product cost

What's left after paying for the products you sold

Gross Margin

Gross Profit ÷ Net Sales × 100

Gross Profit as a percentage of Net Sales

Track Cost

Ad spend attributed to tracked orders (pixel-based attribution)

The ad spend linked to specific orders

Blended Ad Spend

Total ad spend across all platforms (Google, Meta, TikTok and others), as it occurred

Everything you spent on ads, whether or not it's linked to an order

Variable Cost

Costs that change with order volume, like shipping, packaging and fees

Costs that grow as you sell more

Fixed Cost

Costs that stay the same regardless of sales, like rent, salaries and software

Your running costs

Contribution Profit (Allocated)

Gross Profit − Variable Cost − Track Cost

Which campaigns and channels are profitable

Contribution Profit (Accrual)

Gross Profit − Variable Cost − Blended Ad Spend

True business profit with all ad spend counted. Best for financial reporting and Peak dashboards.

Net Profit (Allocated)

Contribution Profit (Allocated) − Fixed Cost

Bottom-line profit using attributed ad spend only

Net Profit (Accrual)

Contribution Profit (Accrual) − Fixed Cost

Bottom-line profit with all ad spend counted

Net Margin

Net Profit (Accrual or Allocated) ÷ Net Sales × 100

Net Profit as a percentage of Net Sales

For how to set up your costs, see Understanding Costs in ProfitPeak 2.0.

What's the difference between Allocated and Accrual profit?

ProfitPeak calculates contribution profit (profit after variable costs and ad spend) in two ways. The only difference is which ad spend gets subtracted.

Contribution Profit (Allocated)

Contribution Profit (Accrual)

Ad spend used

Only ad spend attributed to tracked orders (Track Cost)

All ad spend as it was incurred (Blended Ad Spend)

Formula

Gross Profit − Variable Cost − Track Cost

Gross Profit − Variable Cost − Blended Ad Spend

Best for

Judging campaign and channel performance

Financial reporting and Peak dashboards

Answers

"Which campaigns are profitable?"

"What did the business actually make?"

Net profit works the same way. Subtract fixed costs from whichever version of contribution profit you're using:

  • Net Profit (Allocated) = Contribution Profit (Allocated) − Fixed Cost

  • Net Profit (Accrual) = Contribution Profit (Accrual) − Fixed Cost

  • Net Margin = Net Profit ÷ Net Sales × 100

Before comparing two reports, check which version each one uses. Allocated and Accrual figures will almost never match each other, and mixing them up can make correct numbers look inconsistent.

How do the attribution models assign credit?

Attribution models decide which marketing touchpoints get credit for a sale. They apply to paid sources, including Google, Meta, TikTok, Pinterest, and Bing.

Model

How credit is shared

Example

Last Click

100% to the last touchpoint before purchase

Meta, then Google, then Direct: Direct gets 100%

First Click

100% to the first touchpoint

Meta, then Google, then Direct: Meta gets 100%

Linear (80/20)

80% shared equally across paid touchpoints, 20% shared equally across non-paid ones

Google, then Direct, then Organic, then Direct: Google gets 80%, each non-paid visit gets 6.67%

Linear Paid

Shared equally across paid touchpoints only. Non-paid visits get nothing.

Meta, then Google, then TikTok, then Direct: each paid platform gets 33.3%, Direct gets 0%

Last Paid Click (per platform)

Each platform's last paid click gets an equal share, within a 14-day click window. Klaviyo isn't included.

Two Meta ads, then two Google ads, then purchase: the last Meta click gets 50%, the last Google click gets 50%

For Linear Paid, if a journey has no paid touchpoints at all, no ad gets credit for that order.

The model you choose changes the story. Last Click and First Click can tell completely different stories about the same sales. Choose the model that fits the question you're asking, not the one that makes a channel look best. For more on how ProfitPeak's attribution works, see Attribution Vertex.

Why don't refund and return rates match Shopify?

This is the most common reason ProfitPeak and Shopify numbers differ.

ProfitPeak records a refund or return against the date of the original order. Shopify records it on the date the refund was processed. Both approaches are valid. They just answer different questions.

What's the difference between Refund % and Return %?

ProfitPeak tracks two separate metrics because refunds and returns don't always happen together.

  • Refund %: Of the money you made in this period, how much went back to customers?

  • Return %: Of the orders placed in this period, how many had an item sent back?

Scenario

Counts toward Refund %

Counts toward Return %

Full refund, item returned

Yes

Yes

Partial refund, item returned

Yes

Yes

No refund, item returned (a goodwill return)

No

Yes

Refund with no item returned (like a shipping refund)

Yes

No

How does order-date matching work in practice?

An order placed on April 15 is returned on May 3. ProfitPeak counts that return in April, because that's when the sale happened. An order and its return always land in the same month.

The trade-off is that past months aren't frozen. As late returns come in, last month's Return % can rise over time. That's what you get with a true picture of each month's sales. Shopify's view locks the number in on the day it's reported, which suits cash flow tracking.

Why does this matter for real decisions?

Say you launch a new dress on April 1 and spend $100K on ads that month. Shopify shows April as a record month, so you order $500K more stock and double your May ad budget. Then returns roll in between May 1 and 5, because the fit runs small.

In Shopify, those returns come out of May. April still looks like a win, and you keep spending on a product that isn't working.

In ProfitPeak, those returns are matched back to April. April's profit and return on ad spend drop right away, so you can pause the ads and cancel the stock order before the damage grows.

Put simply, Shopify explains why your bank balance changed. ProfitPeak shows whether your products, marketing, and ads are actually working.

What should you keep in mind?

A mismatch isn't necessarily an error. If refund or return numbers differ from Shopify for the same period, check the order-date difference above before contacting support.

Compare like with like. ProfitPeak's Net Sales includes shipping paid by the customer, but not tax or duties. If you're comparing it to a Shopify figure that includes tax, use Total Sales instead. For a side-by-side of which ProfitPeak metric matches each Shopify figure, see Why are my Sales numbers different in Shopify vs. ProfitPeak?

Match the profit version before comparing. Make sure both reports use Allocated or both use Accrual.

Match the attribution model to the question. Last Click, First Click, and Linear will each tell you something different about the same data.

What should you ask Sherpa?

  • "Why doesn't my refund % match what I see in Shopify?"

  • "Show me Contribution Profit Accrual vs. Allocated for last month."

  • "Compare my channel performance under Last Click vs. Linear attribution."

  • "What's driving the difference between my Refund % and Return % this month?"

Did this answer your question?