Building a Simple Weekly Shopify Ad P&L You Will Actually Maintain
A minimal, worked weekly profit-and-loss template for Shopify ad spend that's simple enough to keep updating past week three.
Written by Mantas Jurgutis — Founder, Adsify — builds the Google & Meta automation merchants use daily
Editorially reviewed by Adsify Editorial on May 4, 2026 — Reviewed against Shopify, Google Ads and Meta official documentation.
Why most ad P&L trackers get abandoned
Most Shopify merchants who try to build an ad profit-and-loss tracker start with an ambitious spreadsheet — per-product margin, per-channel breakdowns, cohort LTV, attribution modeling — and abandon it within a month because the weekly data-entry burden exceeds the time available. A P&L that gets updated for three weeks and then abandoned is worth less than a much simpler one that gets updated every week for a year, because the value of this kind of tracking comes almost entirely from the trend line, not any single week's snapshot.
The minimal version that's actually sustainable needs seven inputs per week, all pullable from Shopify order data and ad platform dashboards in under 15 minutes once the process is set: total ad spend (Google plus Meta combined), attributed revenue from ads (platform-reported, understanding it's directionally useful but not perfectly accurate), total store revenue, COGS as a percentage of revenue (updated only when it materially changes, not necessarily every week), estimated shipping cost absorbed per order, estimated return/refund rate, and any one-off costs (a one-time app fee, a freelancer invoice) relevant that week.
The core calculation, worked through one week
Assume a week with $3,200 combined ad spend, $11,000 platform-attributed revenue, 58% gross margin before shipping and returns, $5.50 average absorbed shipping cost across an estimated 130 orders that week, and a 9% return rate at $8 processing cost per return. Gross profit before ad spend: $11,000 x 0.58 = $6,380. Shipping cost: 130 orders x $5.50 = $715. Return cost: 130 orders x 0.09 x $8 = $93.60. Fully-loaded gross profit = $6,380 - $715 - $93.60 = $5,571.40. Net of ad spend: $5,571.40 - $3,200 = $2,371.40 net contribution for the week, a true blended ROAS-equivalent of ($5,571.40 / $3,200) = 1.74x on a fully-loaded profit basis, notably lower than the naive platform ROAS of $11,000 / $3,200 = 3.44x.
Why the gap between naive and fully-loaded ROAS matters weekly
Tracking both numbers side by side every week — naive platform ROAS and fully-loaded profit-based ROAS — turns an abstract margin conversation into a visible weekly gap that's easy to act on. In the worked example, the gap is roughly 49% (3.44x down to 1.74x-equivalent), and if that gap widens in a future week (say return rate spikes after a product quality issue, or shipping costs rise from a carrier rate change), it shows up immediately as a change in the gap size rather than being buried in a single blended number that could mask which underlying driver moved.
A four-row weekly table is enough
Rather than a complex spreadsheet, four rows per week is sufficient to sustain: Row 1, total ad spend; Row 2, fully-loaded gross profit (using the calculation above); Row 3, net contribution (Row 2 minus Row 1); Row 4, fully-loaded ROAS-equivalent (Row 2 divided by Row 1). Adding a column per week and glancing at the trend across 8-12 weeks reveals far more than any single week's number — a net contribution that's been flat or declining for three consecutive weeks while spend increased is a clear, simple signal to investigate, without needing a dashboard tool.
Where to source each number without manual counting
Total ad spend comes directly from Google Ads and Meta Ads Manager billing summaries for the week. Platform-attributed revenue comes from the same dashboards, cross-checked periodically (monthly is enough) against Shopify's own reported revenue to catch major attribution discrepancies. COGS percentage should come from a periodically-updated blended figure across your catalog (recalculated when product mix or supplier costs shift meaningfully, not necessarily every single week). Shipping and return figures can be estimated from a rolling monthly average rather than recalculated fresh each week — precision to the exact dollar isn't the goal, directional accuracy that catches real shifts is.
Worked example: catching a problem early with the simple table
Assume four consecutive weeks show ad spend of $3,000, $3,300, $3,600, $3,900 (a deliberate 10% weekly scale-up) while fully-loaded gross profit moves $5,200, $5,350, $5,420, $5,480 — spend growing 30% over the month while gross profit only grows about 5.4%. Net contribution across the same weeks: $2,200, $2,050, $1,820, $1,580 — a declining net contribution despite rising revenue-adjacent numbers, visible within three weeks using just the four-row table, well before it would show up as an obviously bad quarter in a less granular monthly review.
Adding a fifth row once the habit sticks
Once four weeks of consistent tracking builds the habit, a natural fifth row to add is a rolling 4-week average of fully-loaded ROAS-equivalent, which smooths out single-week noise (a slow shipping day, a temporary platform reporting glitch) while still reacting faster than a monthly review would. Resist adding more than one or two additional rows at a time — the entire point of this approach is that a tracker simple enough to survive month three is worth more than a comprehensive one abandoned in month two.
Handling multi-channel and multi-product complexity later, not first
A single blended weekly figure across all ad spend and all products is the right starting point even for stores with multiple product lines or channels, because the habit of weekly tracking has to be established before adding the complexity of per-channel or per-product breakdowns. Once 8-12 weeks of blended tracking is consistently maintained, splitting into 2-3 major product categories or Google-vs-Meta channel columns is a reasonable next step, but starting there often recreates the original problem of a tracker too complex to sustain.
What to do when the numbers look wrong
A fully-loaded ROAS-equivalent that swings wildly week to week, more than the underlying spend or revenue changes would explain, is usually a data quality issue rather than a real business swing — check first whether COGS percentage was updated correctly, whether a return spike was a one-off outlier (like a batch of defective units) rather than an ongoing rate, and whether platform-attributed revenue includes any unusual one-off order like a large wholesale or B2B order that doesn't reflect typical ad-driven purchase behavior.
Connecting the weekly table to budget decisions
The direct use of this table is deciding whether to scale, hold, or pull back budget the following week: rising net contribution alongside rising spend supports continued staged scaling (following a 20%-step discipline); flat net contribution despite rising spend suggests holding budget steady and investigating rather than scaling further; and declining net contribution over two or more consecutive weeks, as in the worked example above, is a clear trigger to pause increases and look for a specific cause (return rate, shipping cost, margin, or genuine ad efficiency decline) before spending more.
Automating the data pull where possible
The 15-minutes-a-week estimate assumes most inputs are pulled from existing dashboards rather than manually reconstructed from raw order data each time. Tools that combine Shopify product cost data with Google and Meta spend and revenue in one place — including Adsify's profit and POAS tracking, refreshed on the same optimizer cycle it uses for budget scaling — can reduce this further by surfacing the fully-loaded profit figure directly rather than requiring a manual COGS, shipping and return calculation layered on top of raw platform numbers each week.
Making the review a fixed weekly appointment
The single biggest predictor of whether this kind of tracker survives past month one isn't its design, it's whether reviewing it is attached to a fixed weekly calendar slot rather than done 'when there's time.' A 15-minute Monday-morning slot to update the four rows and glance at the trend, treated with the same non-negotiable priority as any other recurring business review, is what turns this from a one-time spreadsheet exercise into the kind of ongoing discipline that actually changes budget decisions week to week rather than only being consulted after a bad quarter.
