SKU profitability and cost setup (COGS, shipping, fees)

Set COGS %, shipping and payment fees in Profitability Settings, add per-campaign overrides or CSV imports, and read profit per product in the SKU tab.

Written By Salvatore Sinigaglia

Last updated About 12 hours ago

Set COGS %, shipping and payment fees in Profitability Settings, add per-campaign overrides or CSV imports, and read profit per product in the SKU tab.

SKU profitability and cost setup (COGS, shipping, fees)

The Settings tab of the Profitability suite is where you tell Wevion your costs — default COGS %, fixed shipping per order, payment fee %, base currency — plus optional per-campaign COGS overrides and a CSV import. Getting these right is what makes profit correct. The SKU tab then shows profit per product: units, revenue, COGS, margin and margin % for each SKU. Both are at /analytics/profitability.

Who is this for

Anyone who needs their profit numbers to be true. If the Overview or P&L looks off, this is the article to fix it — cost setup is the number-one reason profit is wrong.

Before you start

  • Editing costs needs a team-write role; reading profit needs a dashboard role.
  • Know your COGS % (product cost as a share of the sale price), your shipping cost per order, and your payment/processing fee %.
  • For SKU-level profit, you need a connected commerce source (Shopify or WooCommerce) so orders carry product/SKU data.

Setting your default costs

Open Profitability → Settings. The Defaults card (apps/frontend/src/pages/profitability/settings-page.tsx:135) has:

FieldWhat it does
Default COGS %Product cost as a % of revenue, used when no better cost exists for a campaign
Shipping (fixed)A flat shipping cost applied per order (shipping × orders)
Processing fee %Payment/processing fee, taken as a % of gross revenue
CurrencyYour team base currency — everything is converted into it
Attribution window (days)How far back a conversion is credited (1–90)
Keitaro SKU fieldWhich Keitaro postback field carries the SKU, for tracker-based setups

Type your values, then click Save. A dirty-state indicator tells you there are unsaved changes; saving rematerializes the last 7 days of P&L so your new costs apply immediately.

Why this matters: if you set nothing, COGS falls back to a 50% estimate and the fee to 2.5% (apps/backend/src/repositories/profitability.repository.ts:578, :771). Rows computed that way are marked estimated in the P&L. Entering your real numbers is what turns "estimated" profit into trustworthy profit.

Per-campaign COGS overrides

Some campaigns sell higher- or lower-margin products than your default. In the Overrides section you can pin an exact COGS to a single campaign (settings-page.tsx:382):

  1. Pick the platform and paste the campaign ID.
  2. Choose mode: a percentage of revenue, or a fixed amount in your base currency.
  3. Enter the value and click Add.

An override takes priority over the default COGS %, and rows using it are marked partial quality (better than "estimated"). Existing overrides appear in a searchable, sortable table where you can delete them.

Bulk import via CSV

To set many campaigns at once, use the CSV import (settings-page.tsx:471). Download the template, fill it and upload. The header is:

platform,external_campaign_id,cogs_pct

You can use a cogs_fixed column instead of cogs_pct for fixed amounts. After upload, Wevion reports how many rows were imported / errored / total, with an expandable list of per-row errors.

The cost priority (which cost wins)

For each campaign, Wevion resolves COGS in this order (profitability.repository.ts:447):

  1. Shopify actual line-item cost → quality full
  2. WooCommerce actual cost → quality full
  3. Your per-campaign override → quality partial
  4. The default COGS % → quality estimated

So the fastest path to accurate profit is a connected commerce store; the next best is overrides for your key campaigns; the fallback is a realistic default %.

The SKU tab

The SKU tab (apps/frontend/src/pages/profitability/sku-page.tsx) breaks profit down per product. Each row shows the SKU, its campaign, platform, units, revenue, COGS, margin and margin %, with a totals footer. You can:

  • Filter by platform and by a specific campaign (the P&L tab's package icon deep-links here for one campaign).
  • Search, sort any column, and export to CSV.

SKU rows need order-level product data, so this tab is most useful with Shopify or WooCommerce connected (or a Keitaro tracker whose SKU field you set in Settings).

Margin alerts

The Settings tab also has a margin alert card (settings-page.tsx:188). Turn it on and set a threshold % and a lookback window (days); campaigns whose average contribution margin over the window drops below the threshold get flagged. In the P&L tab, those rows show a margin alert badge so erosion is visible at a glance.

Common issues

  • All my rows say "estimated": you haven't set costs. Enter a real default COGS %, add overrides, or connect Shopify/WooCommerce.
  • SKU tab is empty: SKU-level profit needs order/product data from a connected commerce source (or a Keitaro SKU field). Ad-platform data alone has no SKU breakdown.
  • My CSV import errored: check the header is exactly platform,external_campaign_id,cogs_pct (or cogs_fixed), that campaign IDs are correct, and expand the per-row error list to see which lines failed.
  • A saved cost didn't change my profit: saving rematerializes the last 7 days; older dates update on the next daily snapshot.

Best practices

Connect your store first

Shopify/WooCommerce give exact per-order COGS and refunds (quality "full") with zero manual entry — the most accurate setup by far.

Override your top spenders

If you can't connect a store, add per-campaign overrides for your highest-spend campaigns first; that's where estimate errors cost you the most.

Turn on margin alerts

Set a margin threshold so eroding campaigns flag themselves in the P&L instead of you finding out at month-end.

FAQ

How do I set my COGS in Wevion?

Go to Profitability → Settings → Defaults and enter your Default COGS %, shipping and processing fee %, then Save. For campaigns that differ from the default, add a per-campaign override (percentage or fixed) or upload a CSV. Connecting Shopify or WooCommerce sets COGS automatically from real order costs.

What happens if I don't set any costs?

Wevion falls back to a 50% COGS estimate and a 2.5% fee, and marks those P&L rows as "estimated". Your profit will be a rough guess until you enter real costs or connect a commerce store.

What's the difference between a percentage and a fixed COGS override?

A percentage override applies that % of each order's revenue as cost — good when margin scales with price. A fixed override applies a flat amount in your base currency per the campaign — good when you know an exact unit cost. Both override the default and are marked "partial" quality.

Why is the SKU tab empty when the P&L has data?

The P&L can run on ad-platform revenue alone, but SKU-level profit needs product data from an order source. Connect Shopify or WooCommerce (or set the Keitaro SKU field in Settings) so orders carry the SKU that the tab groups by.

Steps

  1. Pick the platform and paste the campaign ID.
  2. Choose mode: a percentage of revenue, or a fixed amount in your base currency.
  3. Enter the value and click Add.

Last updated: 2026-07-02