Skip to content

Track profit on AI-attributed orders

Revenue tells you the AI was involved in an order. Profit tells you whether that order was worth having. Zubby reports profit on AI-attributed orders from the product costs your store already records, and shows how complete those costs are next to every figure, so a number is never more confident than its data.

What each plan shows

PlanProfit reporting
GrowthGross profit and gross margin on AI-attributed orders, profit by product, a daily profit trend, and the profit CSV export on Analytics, plus the profit panel on Overview and in the weekly review.
Pro and EnterpriseEverything above, plus contribution profit (gross profit minus the payment fee and shipping cost when they are known), profit ROI against your plan price, incremental profit measured against the attribution holdout group, and a contribution LTV condition for segments.

On a plan without profit reporting, the Profit section shows an upgrade card instead of figures.

Step 1: get product costs into Zubby

Profit needs a unit cost on each variant. Zubby reads it from the place your store already keeps it:

  • Shopify - fill in Cost per item under Pricing on each variant in Shopify admin. Zubby reads it on the next catalog sync and records it on every new order.
  • WooCommerce - turn on Cost of Goods Sold (WooCommerce → Settings → Advanced → Features) and enter a cost on each product or variation, or use a supported cost plugin. The Zubby plugin (0.8.3 or later) sends costs with the catalog sync and with every order, together with the payment fee when WooPayments, Stripe or PayPal recorded one.
  • Custom storefront - include cost on each variant when you POST /api/public/v1/catalog, and on order lines when you POST /api/public/v1/orders. See the API reference.
  • Any platform - upload a cost CSV keyed by SKU or variant ID from the Cost coverage card on Catalog. The same card exports your current costs.

Step 2: check cost coverage

The Cost coverage card on Catalog shows two numbers: the share of active variants that have a cost, and the share of the last 30 days of order revenue whose cost is known. Every profit figure in the dashboard repeats its coverage and lists what it leaves out, such as revenue from products with no cost.

Orders placed before you added costs have no cost recorded. From the same card you can fill them in from today’s catalog costs. Those lines are marked Estimated wherever they contribute to a figure, because a cost you enter today may differ from what the item cost when it sold.

Step 3: set payment fees (optional)

Shopify order webhooks do not include the payment processor fee, and not every WooCommerce gateway records one. The Payment fees card on Catalog holds a percentage plus fixed fee per gateway, with a default rate for any other gateway. Zubby uses the real fee when the platform reports it and your rate table otherwise, and marks table-based fees as estimated. Cash on delivery, bank transfer, cheque, manual payments and gift cards are treated as fee-free unless you add a rate.

Reading the numbers

  • Gross profit - revenue minus the cost of the costed lines on AI-attributed orders. Uncosted revenue is excluded and listed under the figure, never counted as pure profit.
  • Contribution profit (Pro) - gross profit minus the payment fee and shipping cost, allocated to the costed share of each order. Orders with an unknown fee or shipping cost are listed as exclusions.
  • Incremental profit (Pro) - profit from shoppers who saw the AI compared with the holdout group that did not. It stays hidden until both groups have enough sessions, the same rule the revenue lift uses. The holdout is off until you set a percentage under Settings → AI Setup; see Analytics for how it works.
  • Profit by product - which products the AI sold profitably and which it sold at a thin or negative margin.

Zero coverage is not zero profit

A store with no costs sees a setup prompt instead of a profit figure. If coverage is low, fix costs first: a profit number built on a small costed share describes those products, not the store.

Related

  • AI setup - the margin guard that uses the same costs to keep AI discounts above cost.
  • Recommendations - profit-aware ranking and stock rules.
  • Catalog - where costs, coverage, and fee rates live.

Example: an order with partial cost coverage

Illustrative order: product revenue is $100. The $60 line has a known $30 cost; the $40 line has no cost. Cost coverage is 60%, and known gross profit is $30. If the known payment fee is $3 and shipping cost is $5, allocate 60% of each to the costed lines: $1.80 plus $3.00. Contribution profit for that covered share is $25.20. The uncovered $40 is excluded, not counted as profit. This is a contribution measure, not full accounting profit.

The holdout comparison currently has Shopify linked-order and exposure limitations described in Analytics. A minimum session count is not a significance test, and the displayed difference is not a guaranteed causal profit estimate.

Missing something, or found an error on this page?

Contact support and include the URL of this page (/docs/profit).