Multi-Channel RetailRetail / DTC7 min read

Margin Health Monitoring: Spot Unprofitable Shopify Promotions Early

A monitoring routine built on per-campaign profit and Loss, Thin margin, and Healthy colors, with thresholds set from your own costs.

An analytics view coloring three illustrative promotions Healthy, Thin margin, and Loss against merchant-set cutoffsMargin health colorsDaily check: campaigns by estimated marginCampaign A+28%HealthyCampaign B+12%Thin marginCampaign C-3%LossColors only help if someone checks them. No alert is sent.

Discount Prime computes Estimated Profit per order and campaign and colors them Loss, Thin margin, or Healthy against cutoffs you set, but it sends no margin alerts. Reliable monitoring needs current Shopify costs, cutoffs that cover fees and handling the figure excludes, and an owner who checks campaigns daily while promotions run.

At a glance

Challenge
A supplier cost increase pushed a product range below acceptable margin, and finance only discovered it days later because the new cost was not in Shopify.
Approach
Estimated Profit per order and campaign, color thresholds set to cover fees and handling, same-day cost updates in Shopify, and an owned daily check.
Discount Prime campaign types used
Profit AnalyticsMargin Health Colors

Scenario-based case study: the merchant is fictional and modeled on patterns across Discount Prime stores. Prices, costs and outcome figures are illustrative assumptions for teaching, not measured results from a real store.

Short Answer

To catch a promotion that has started losing money, you need three things: current product costs, a profit figure per order and per campaign, and a routine that someone actually follows. Discount Prime covers the middle part. Its analytics compute Estimated Profit for each order and campaign and color them Loss, Thin margin, or Healthy against thresholds you set.

What it does not do is alert you. There are no margin alert emails, no below-cost notifications, and no store health score. The colors appear when someone opens the app. This guide shows how to turn them into a reliable monitoring process, and where the numbers can mislead you.

Scenario

NorthPeak Outdoor is a fictional Shopify retailer of camping and hiking gear running 15 to 20 promotions at a time: BOGO offers, free shipping thresholds, seasonal discounts, and wholesale pricing.

During a holiday weekend, a supplier raised costs on a tent range. The pricing team had not yet updated those products. Orders kept arriving, and the following Monday finance found that the range had been selling below the company's minimum margin all weekend.

Two gaps caused this, and only one is about software:

  1. The new cost was not in Shopify. Any profit report, including Discount Prime's, uses Shopify's Cost per item. Until someone updates it, every order still looks as profitable as before.
  2. Nobody was looking. Even with correct costs, a colored dashboard only helps if it is checked.

What Discount Prime Provides

CapabilityHow it worksLimit to know
Estimated Profit per orderRevenue on lines with a cost, minus cost of goods, minus shipping you subsidized. Discounts are already reflected in the revenueLines without a cost are left out entirely. Payment fees, fulfillment, ads, and returns are not deducted
Per-campaign profit and margin %Orders attributed to each campaignOnly campaigns still active when the paid order is processed are attributed
Performance colorsSettings, "Performance color thresholds": Loss below the loss cutoff (default 0%), Thin margin below the thin cutoff (default 20%), Healthy at or above it. Used on campaign cards, top performers, and recent ordersDisplay only; nothing is sent to you
Cost dataSynced from Shopify's Cost per item every night at the store's local midnight, recalculating the last 30 days of orders; "Recalculate" refreshes on demandA cost changed in your supplier's invoice but not in Shopify is invisible
Order sale email (optional setting)Notifies you when products from a live campaign sell, with a link to the orderDoes not include margin or profit
Weekly emailSent TuesdaysCounts all orders in the last 7 days, not only discounted ones; its "top campaign" is ranked by discount given, not profit

Refunds and cancellations are not subtracted, because orders enter analytics when they are paid.

Alternatives Compared

ApproachFits whenDoes not fit when
End-of-campaign finance review (spreadsheet with costs)Few campaigns; you need fully loaded profit including fees and returnsProblems must be caught during the campaign
Shopify's own reports (profit reports based on Cost per item, where your plan includes them)You want store-level and product-level gross profit without an appYou need profit per promotion
Discount Prime colors plus a daily checkMany concurrent campaigns; you want profit per campaign and per orderNobody owns the check; or most costs are missing
A push alert you build yourself (scheduled export, BI tool, or workflow automation)You need notification without opening any dashboardYou cannot maintain it; test it against real orders first

Step 1: Set Thresholds From Your Own Economics

Estimated Profit excludes payment fees, fulfillment labor, and marketing. Set the cutoffs so that the colors account for them.

Illustrative assumptions for NorthPeak (replace with your own):

Cost not in Estimated Profit% of order revenue
Payment processing3%
Pick, pack, and packaging6%
Average returns cost3%
Total12%
CutoffSettingMeaning for NorthPeak
Loss cutoff12%Below 12% Estimated Profit margin, the order likely loses money once these costs are counted
Thin cutoff25%Between 12% and 25%, it covers variable costs but not NorthPeak's overhead and profit target
Healthy25% and aboveMeets the target

The default 0% loss cutoff only flags orders that lose money on goods and shipping alone, which is too late for most stores. The app limits the loss cutoff to 50% and requires it to be below the thin cutoff.

Step 2: Make Cost Updates Part of Purchasing

The tent incident would not show up in any color until the new cost reached Shopify. Make it a purchasing rule: when a supplier confirms a new price, update Cost per item the same day (bulk editor or CSV), then press Recalculate in Discount Prime rather than waiting for the nightly sync.

Track cost coverage: the share of revenue from lines that have a cost. Lines without cost are silently excluded, so a campaign can look Healthy because its weakest products are not counted.

Step 3: A Daily Check During Promotions

WhenWhoWhat to openWhat to look at
Each morning while promotions runPromotions ownerDiscount Prime analytics, campaign cardsAny campaign colored Loss or Thin margin; campaigns whose margin dropped since yesterday
Same checkSameRecent ordersRed orders: which products and which campaign; whether shipping subsidy caused it
After any supplier cost changePurchasingCost per item in Shopify, then RecalculateAffected campaigns' colors after the refresh
WeeklyFinanceCampaign profit for the weekCompare with the fully loaded figure from your own books

Responding to each color

ColorFirst questionTypical actions
LossIs it one product, one campaign, or shipping?Pause or narrow the campaign, raise the threshold, or update prices
Thin marginDid cost, discount depth, or shipping change?Review this week; adjust the deepest tiers or exclude low-margin products
HealthyIs cost coverage high enough to trust it?No action if coverage is good

Illustrative example

CampaignEstimated marginColor with NorthPeak's cutoffs (12% / 25%)Color with defaults (0% / 20%)
A28%HealthyHealthy
B12%Thin marginThin margin
C-3%LossLoss
D9%LossThin margin

Campaign D shows why thresholds matter: with defaults it looks merely thin, but after fees and handling it is losing money.

Limits and Edge Cases

  • No alerts. If the check is skipped, nothing reaches you. Assign an owner and a backup.
  • Paid orders only, no refunds. A campaign with heavy returns looks better in the app than in your books.
  • Free shipping is counted, but other costs are not. Subsidized shipping reduces Estimated Profit; fees and fulfillment do not.
  • Attribution needs a live campaign. Orders processed after a campaign ends are not attributed to it.
  • Bulk Price Update orders show a price change, not a discount, so judge them by margin rather than discount given.

Measuring the Monitoring Process

  • Detection time: hours from the first Loss-colored order of a campaign to the first action taken.
  • Cost lag: days from a supplier price change to the updated Cost per item in Shopify.
  • Cost coverage: share of campaign revenue with a cost. If it is low, fix data before trusting colors.
  • Reconciliation gap: difference between campaign Estimated Profit and finance's fully loaded profit. If it grows, revisit your cutoffs.

Judge the process by these, not by sales. A higher count of paused or repriced campaigns can be a good sign: it means problems were found while they were still small.

Frequently asked questions

Does Discount Prime send alerts when a promotion loses money?

No. There are no margin alert emails, below-cost notifications, or store health score. Analytics color campaigns and orders Loss, Thin margin, or Healthy, and you see those colors when you open the app. The optional order email reports that a campaign product sold, without margin. If you need push notifications, build them with another tool and test them on real orders.

What does Estimated Profit include?

Revenue on order lines that have a Shopify Cost per item, minus their cost of goods, minus shipping you subsidized. Discounts are already reflected in revenue. Lines without a cost are left out entirely. Payment fees, fulfillment, ads, and returns are not deducted, and refunds or cancellations are not subtracted because orders are recorded when paid.

How should I set the Loss and Thin margin cutoffs?

Start from the costs Estimated Profit leaves out. If payment fees, handling, and returns average about 12% of revenue, a Loss cutoff of 12% flags orders that probably lose money once those are counted. Set the Thin cutoff where a campaign meets your profit target. The defaults, 0% and 20%, only flag orders that lose money on goods and shipping alone.

Why does a campaign still look Healthy after my supplier raised costs?

Because profit uses Shopify's Cost per item. Until the new cost is entered in Shopify, every order is valued at the old cost. Costs sync nightly and you can press Recalculate after updating them. Also check cost coverage: lines without any cost are excluded, so a campaign can look healthy because its weakest products are not counted.

Is native Shopify reporting enough to monitor promotion margins?

For store-level and product-level gross profit, Shopify's reports based on Cost per item can be enough where your plan includes them. They do not break profit down by promotion. If you run many overlapping campaigns, per-campaign profit helps you find which offer is responsible, but either way someone has to review the numbers regularly.

Go deeper

Run this architecture in your store

Every campaign type in this case study is included in Discount Prime, with profit analytics to verify the margin impact.

More case studies