Profit dashboard
A profit and loss for every product you advertise
One row per product, joining Google Ads spend to real Shopify orders, with cost of goods and refunds taken off before anything is called profit.
What you get
Each of these is behaviour the product has today.
POAS beside ROAS, always
ROAS divides revenue by spend and tells you how the advert performed. POAS divides what was left after cost of goods by the same spend and tells you whether the sale was worth making. Break-even is 1.00×, so a product below it is losing money no matter how good its ROAS looks.
Rolling 7, 14 and 30-day windows
A short window catches a product going bad; a long one stops a slow week from condemning a good one. Each window ends yesterday, so a partial day never drags an average down.
Variant, country and market breakdowns
A product can earn on one variant and lose on another, or earn in one country and lose in the next. Open a row and the same arithmetic is there one level down.
A missing number says why
When cost-per-item is absent on a sold variant, or a day with ad activity has no usable exchange rate, the figure comes back unavailable with the reason attached instead of quietly showing a zero. An average that silently includes a guess is worse than no average.
Filter and sort on what matters
Search, filter by status, country and tag, and set minimum and maximum bounds on ROAS, POAS, net profit, ad spend, gross margin, price and clicks. Save the filter set you keep coming back to.
Unattributed spend is shown, not hidden
Spend Opteno cannot tie to a product is reported as unattributed rather than spread across the catalogue to make the totals tidy. Attributed and unattributed always add up to what the ad account actually spent.
What the table looks like
Drawn rather than screenshotted, so it reflows on a phone and carries nobody’s data. The figures are examples.
- €6,590Ad spend
- €29,140Revenue
- €17,600Cost of goods
- +€4,950Net profit
- 4.42×ROAS
- 1.75×POAS
| Product | Ad spend | Revenue | ROAS | POAS | Net profit |
|---|---|---|---|---|---|
| Everyday Denim Jacket4 variants | €1,240 | €9,920 | 8.00× | 4.16× | +€3,918 |
| Coastal Cedar Board2 variants | €860 | €4,730 | 5.50× | 2.92× | +€1,647 |
| Merino Crew Knit — Navy6 variants | €2,000 | €8,000 | 4.00× | 0.88× | −€240 |
| Harbour Canvas Tote3 variants | €1,510 | €4,530 | 3.00× | 0.91× | −€130 |
| Aurora Linen Shirt5 variants | €980 | €1,960 | 2.00× | 0.75× | −€245 |
How it works
- Shopify supplies products, variants, orders, refunds and cost-per-item.
- Google Ads supplies daily spend, impressions, clicks and conversions, in the ad account’s own currency.
- The two are joined on the product offer identifier Google reports spend against.
- Cost of goods is summed from each sold variant’s cost-per-item, or from a store-wide percentage if you set one.
- Each day’s spend is converted at that day’s rate, then summed — so a closed period keeps the profit it was earned at.
What it does not do
Written down so you can decide with the limits in front of you rather than after you have connected.
- Gross margin is a catalogue figure taken from the lowest-margin variant with a cost, not a period figure.
- Halo or incremental revenue attribution is not computed; Opteno does not claim to know what an advert caused indirectly.
- Exchange rates are read from Opteno’s own rate table. There is no automatic daily feed in this build, so a date with no rate is reported rather than estimated.
The rest of the product
Google Ads exclusions
Stop paying for products that lose money: exclude their offers from Performance Max asset groups, previewed against Google before anything is applied.
Automations
Profit rules that run on a schedule and prepare the changes they imply — then stop, because anything that touches your store waits for a person to approve it.
Competitors and imports
Track competing Shopify storefronts, see what they sell and in what order, and copy the products worth carrying into your own catalogue as drafts.
Markets and prices
The same product earns in one market and loses in the next. See profit per market, publish where it belongs, and change a price with the figures it started from recorded.
See which products are losing you money
Connect Shopify and Google Ads in under five minutes. From $59 a month, cancel whenever you want, and no change to your store or your campaigns without your approval.