Profitability suite — true profit, P&L and cost setup
Wevion Profitability turns ad spend and revenue into true profit: a per-campaign P&L with COGS, shipping, fees, margin, true ROAS and break-even.
Written By Salvatore Sinigaglia
Last updated About 13 hours ago
Wevion Profitability turns ad spend and revenue into true profit: a per-campaign P&L with COGS, shipping, fees, margin, true ROAS and break-even.
Profitability suite — true profit, P&L and cost setup
Profitability lives at
/analytics/profitabilityand turns spend and revenue into real profit. It has five tabs — Overview, P&L, Break-even, SKU and Settings — that subtract your product costs (COGS), shipping, refunds and payment fees from revenue to show contribution profit, contribution margin and true ROAS per campaign, ad set or ad. The numbers are only as correct as the costs you configure in the Settings tab, so setting your COGS %, shipping and fee is step one.
Who is this for
Media buyers and store owners who need to know whether campaigns actually make money, not just whether ROAS looks good. Platform ROAS ignores product cost, shipping, refunds and payment fees — Profitability puts them all into one P&L.
Before you start
- Connected, synced ad accounts: spend, revenue and conversions come from your connected platforms (Meta, Google, TikTok, Taboola, Snapchat, Outbrain), so connect and sync them first (meta-101 connect Meta, gog-101 connect Google Ads).
- Costs configured: without a COGS %, the suite falls back to a default estimate. Set your real costs in Settings (an-144 SKU profitability and cost setup) so profit is accurate.
- A commerce source (optional but best): connecting Shopify or WooCommerce gives Profitability the actual per-order COGS and refunds, the highest data quality.
- Access: reading Profitability needs a dashboard role; editing costs and overrides needs a team-write role.
The five tabs
The suite is a tabbed workspace (apps/frontend/src/pages/profitability/layout.tsx:6):
- Overview — KPI cards (spend, revenue, profit, true ROAS, margin) plus a profit-over-time chart. See an-143 break-even and profit timeline.
- P&L — the full cost-to-profit table per campaign / ad set / ad, or grouped per account.
- Break-even — a calculator for the ROAS you need to stop losing money. See an-143.
- SKU — profit per product SKU (needs a commerce source). See an-144.
- Settings — where you enter COGS %, shipping, fee, currency and per-campaign overrides. See an-144.
How true profit is calculated
Every row in the P&L is built as a waterfall from revenue down to profit (apps/backend/src/repositories/profitability.repository.ts:836):
From there Wevion derives:
- Contribution margin = contribution profit ÷ net revenue (
profitability.repository.ts:844). - True ROAS = net revenue ÷ (COGS + spend + shipping + fees) — a ROAS that already accounts for product cost, not just ad spend (
profitability.repository.ts:846). - Break-even ROAS = the ROAS at which profit is exactly zero (
profitability.repository.ts:848).
Where COGS comes from (priority order)
COGS is resolved in this order, and the row's data quality badge tells you which one was used (apps/backend/src/repositories/profitability.repository.ts:447):
- Shopify actual line-item cost → quality full.
- WooCommerce actual cost → quality full.
- A per-campaign override (fixed € or %) you set in Settings → quality partial.
- The default COGS % from Settings (or 50% if nothing is set) → quality estimated.
This is why the Settings tab matters: with no commerce source and no override, every profit figure uses the default estimate. Setting the real COGS % moves rows from "estimated" toward "partial" or "full".
The P&L tab
The P&L tab is a sortable, exportable table. You can:
- Group by campaign (with an entity-level filter for campaign / ad set / ad) or by account (one row per ad account).
- Filter by platform and by specific ad accounts, and search by name.
- Read every waterfall column — spend, revenue gross, refunds, revenue net, COGS, shipping, fees, profit, margin, true ROAS, break-even ROAS — plus data source and data quality.
- See a margin alert badge on any row whose margin falls below your alert threshold.
- Drill into SKUs for a campaign with the package icon, and export the table to CSV.
Currency and freshness
All figures are converted into your team's base currency (set in Settings) at each day's exchange rate. Rows whose FX rate isn't available yet are skipped rather than shown at a wrong rate, and reappear once the rate exists. P&L rows are precomputed daily into a snapshot; changing your cost settings rematerializes the last 7 days so the new costs show up immediately (apps/backend/src/routes/api/profitability/config.route.ts schedules the rematerialize).
Common issues
- Profit looks wrong / too low or too high: you probably haven't set your COGS. Rows marked estimated use the 50% (or your default) fallback. Set the real COGS % or a per-campaign override in Settings.
- No revenue on campaigns: revenue needs either a connected commerce store (Shopify/WooCommerce) or purchase conversions reported by the ad platform. Check your sync and conversion tracking.
- A row shows a wrong currency total: figures are converted to your base currency; if a day's FX rate is missing the row is temporarily withheld and returns after the next sync.
- The page 404s: Profitability is a gated feature; if it isn't enabled for your workspace, contact support.
Best practices
Set your COGS before trusting profit
The single biggest driver of accuracy is COGS. Connect Shopify/WooCommerce for exact costs, or at minimum set a realistic default COGS % and per-campaign overrides in Settings.
Read true ROAS, not platform ROAS
Platform ROAS ignores product cost. A 3× platform ROAS can still lose money once COGS, shipping and fees are in. Optimize toward true ROAS and contribution margin.
Watch the data-quality column
"Full" rows use real order costs, "estimated" rows use your default %. Prioritize decisions on high-quality rows and improve the rest by adding costs.
FAQ
What is the difference between ROAS and true ROAS in Wevion?
Platform ROAS is revenue divided by ad spend only. True ROAS divides net revenue (after refunds) by all variable costs — COGS, ad spend, shipping and payment fees. That's why a campaign can show a healthy platform ROAS but a true ROAS below 1, meaning it loses money on every order.
Why is my profit negative when my ROAS is good?
Because ROAS ignores product cost. If your COGS is 60% and you add shipping and payment fees, a 2× ROAS is below break-even. Open the Break-even tab to see the ROAS you actually need, and make sure your COGS is set correctly in Settings — otherwise profit uses the default 50% estimate.
Do I need Shopify or WooCommerce to use Profitability?
No, but connecting one gives the best data: Wevion reads the real per-order cost and refunds (data quality "full"). Without a commerce source you can still get accurate profit by setting a default COGS % and per-campaign overrides in Settings — those rows are marked "partial" or "estimated".
How often does Profitability update?
Profit rows are precomputed once per day into a snapshot from your latest platform sync. When you change your cost settings, Wevion rematerializes the last 7 days immediately so your new COGS, shipping or fee is reflected right away.
Steps
- Shopify actual line-item cost → quality full.
- WooCommerce actual cost → quality full.
- A per-campaign override (fixed € or %) you set in Settings → quality partial.
- The default COGS % from Settings (or 50% if nothing is set) → quality estimated.
Last updated: 2026-07-02