> For the complete documentation index, see [llms.txt](https://docs.elevateab.com/elevate-helpcenter/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.elevateab.com/elevate-helpcenter/experiment-setup/cogs.md).

# COGS

Set up COGS in Elevate A/B Testing so your experiment reports show profit alongside revenue, including variant costs, quantity breaks, and fees.

***

COGS, or cost of goods sold, is what your products cost you. Adding it to Elevate A/B Testing unlocks profit reporting, so you can see which variation made the most money rather than which one brought in the most revenue.

### Why it matters

Revenue per visitor tells you how much money a variation brought in. It does not tell you what that money cost you.

A variation that lifts revenue ten percent while pushing buyers toward lower margin products can leave you worse off. Without cost data you cannot see that happening.

With COGS set up you get:

* **Profit per visitor**, available as an experiment goal metric
* **Profit** and **Profit/Visitor** columns in your results table
* Profit metrics throughout advanced analytics, including subscription profit where it applies

This matters most for price experiments, where the whole question is whether a price change made money, and for any store where margins vary between products.

### Enable COGS

**Prerequisites:** none beyond an installed and verified Elevate A/B Testing app.

1. Open **COGS** in the Elevate A/B Testing sidebar, under Configure.
2. Elevate A/B Testing imports your product catalogue and builds a cost table. This takes a couple of minutes.

When the import finishes, your products are listed on the COGS page.

You will also see an **Enable Product Cost** prompt in places where profit data would be useful, such as experiment results. It links here and disappears once COGS is set up.

### Set your costs

#### Product level

The simplest setup. One cost per product, applied to every variant.

1. Find the product using **Search by product name**, or narrow the list with **Filters** and the status selector.
2. Enter the cost per unit in the **Cost** field.
3. Select **Apply to all** to apply that cost to every variant of the product.

#### Variant level

Use this when variants cost different amounts, for example when a larger size costs more to produce.

1. Expand a product using the arrow beside it.
2. Enter a cost for each variant.

If every variant costs the same, set the product level cost and use **Apply to all** instead.

#### Quantity breaks

Use these when your cost per unit falls at higher quantities, such as bulk pricing from a supplier.

Open the quantity breaks option on a variant and add tiers:

| Quantity     | Cost per unit |
| ------------ | ------------- |
| 1 to 9       | 9.00          |
| 10 to 49     | 7.50          |
| 50 and above | 6.24          |

Elevate A/B Testing uses the right tier for the quantity ordered, so profit stays accurate on variable cost products.

### Transaction and fulfilment costs

Two store wide settings sit at the top of the page. Both are deducted when profit is calculated.

| Field                                           | What to enter                                                                  |
| ----------------------------------------------- | ------------------------------------------------------------------------------ |
| **Transaction fee percent**                     | The percentage your payment processor charges per transaction, for example 2.9 |
| **Average shipping/fulfillment cost per order** | What it typically costs you to pick, pack, and ship one order                  |

Select **Save** after changing either.

The shipping figure is an average across your orders, not a per product cost. An approximate number is far better than zero, because leaving it at zero overstates profit on every experiment.

### Keeping costs up to date

#### Update COGS from Shopify daily

Turn this on and Elevate A/B Testing pulls cost data from Shopify every day, so your COGS stays in step with the cost values on your products in Shopify admin.

> **Warning:** This overwrites anything you set manually in Elevate A/B Testing, including quantity breaks. Turn it on only if Shopify is where you maintain costs. Leave it off if you maintain costs here, or if you rely on quantity break tiers.

#### Re-import from Shopify

Select **Re-import from Shopify** to pull in products added to your store since you set COGS up.

Existing costs are preserved. Only new products are added.

### How profit is calculated

Profit is your revenue, less what the products cost you, less transaction fees, less fulfilment costs.

**Products with no cost entered are treated as costing zero**, which means profit equals revenue for those products and your reported profit is too high.

Before you rely on profit for a decision, check that every product in the experiment has a cost. This is the most common reason profit numbers look better than they should.

### Using profit in an experiment

Once COGS is set up, **Profit per visitor** appears as a goal metric when you create an experiment, and profit columns appear in results.

For price experiments, profit per visitor is the most honest measure available. A lower price that converts better and earns less will not look like a winner, and a higher price that sells fewer units at better margin will.

See [Reading Price Experiment Results](https://claude.ai/elevate-helpcenter/test/price-testing/reading-results).

### Does adding COGS change experiments already running?

Profit is calculated from the cost values in place when results are read, so profit columns populate for a running experiment once you enter costs. Orders placed before you set COGS up are included, because the calculation is applied to the order data rather than stored at order time.

If you change a cost mid-experiment, every order in that experiment is recalculated at the new cost, including orders placed before the change. Where a supplier price genuinely changed partway through, the resulting profit figure is a blend and should be read with that in mind.

### Troubleshooting

| Symptom                                            | Likely cause                                                                                                    | Fix                                                                                |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| No profit columns in results                       | COGS is not enabled                                                                                             | Open **COGS** in the sidebar and complete setup                                    |
| **Profit per visitor** is not selectable as a goal | COGS is not enabled                                                                                             | Complete COGS setup, then create or edit the experiment                            |
| Profit looks too high                              | Some products have no cost entered, or the shipping figure is still zero                                        | Filter for products with no cost and fill them in. Set an average fulfilment cost. |
| Costs you entered have changed by themselves       | **Update COGS from Shopify daily** is on and is overwriting manual values                                       | Turn the daily update off, then re-enter your costs                                |
| Quantity breaks disappeared                        | Same cause                                                                                                      | Turn the daily update off. Tiers are not preserved through a daily sync.           |
| New products have no costs                         | They were added after the initial import                                                                        | Select **Re-import from Shopify**                                                  |
| Profit is negative on every order                  | The transaction fee is entered as a decimal rather than a percentage, or the fulfilment average is far too high | Enter 2.9 for 2.9 percent, not 0.029                                               |

### Next steps

* [Metrics](https://claude.ai/elevate-helpcenter/analyze/reports/metrics) for how profit sits alongside the other metric definitions
* [Reading Your Results](https://claude.ai/elevate-helpcenter/analyze/reports/reading-your-results) for reading profit columns against revenue in the results table
* [Reading Price Experiment Results](https://claude.ai/elevate-helpcenter/test/price-testing/reading-results) for why profit per visitor is the deciding metric on a price experiment
* [Ending an Experiment](https://claude.ai/elevate-helpcenter/operate/experiment-setup/ending-an-experiment) for implementing a winner once profit confirms it
