Contents
- ROI vs ROAS: when to use which metric?
- How to define marketing costs correctly?
- The attribution model and the accuracy of ROI measurement
- What data is necessary to calculate ROI?
- Optimising ROI across different marketing channels
- Using analytics tools to track ROI
- Strategies to improve ROI through retention and LTV
- Experiments and tests as a method of increasing ROI
Share
ROI vs ROAS: when to use which metric?
Use ROI when you want to check whether marketing is profitable after accounting for all costs, whereas ROAS is useful when you are interested only in the relationship between revenue and ad spend. ROI (Return on Investment) answers the question “am I making money once all costs are included?”, because it compares profit with the full cost of marketing. ROAS (Return on Ad Spend) shows “how much revenue 1 złoty of ad spend generates” and can distort the picture when margin is low or non-media costs, for example fulfilment or discounts, are high. If you are making decisions about scaling budget, ROI is the safer metric because it includes the full accounting of the activity.
ROAS can be useful for quick campaign optimisation within an ad platform, but on its own it does not determine whether the activity is genuinely profitable. In e-commerce it is worth relating the result to margin, because revenue without COGS and shipping and payment costs can overstate effectiveness. In services, it makes more sense to calculate the result on the basis of gross margin on the contract or MRR, rather than relying solely on revenue. This way, ROAS and ROI do not “argue” with each other, but describe different dimensions of the same activities.
- 01When ROI?Profitability (all costs)
- 02When ROAS?Revenue–ad relationship
- 03ROI: main question"Am I really making money?"
- 04ROAS: main question"How much from 1 złoty?"
ROI is the safer metric for scaling, as it accounts for full accounting, whereas ROAS is used for quick campaign optimisation in ad platforms.
How to define marketing costs correctly?
Define marketing costs on an “all‑in” basis, that is as the sum of media budget and all expenses necessary to launch and maintain the activity. In practice, the amount spent in the ad system alone is not enough, because it does not include, for example, creative work, tools, team time or agency costs. If you do not add operational costs and campaign-related discounts, ROI will be artificially inflated. For example: Google Ads 20 000 zł + agency 4 000 zł + tools 800 zł + specialist time (40 h × 120 zł = 4 800 zł) gives a cost of 29 600 zł, not 20 000 zł.
- ad budget (media)
- creative costs
- tool costs
- agency costs
- team labour cost (internal)
- discounts and promotions linked to campaigns
When structuring costs, it is a good idea to separate fixed elements (e.g. team and tools) and the method of assigning them to channels, so that ROI can be compared “on equal terms”. The easiest way is to allocate fixed costs proportionally to media spend or the number of campaigns, while more mature organisations do so according to time records (timesheets). A discount in a campaign should be treated as a real cost, because it reduces margin: a 10% discount on a basket of 300 zł is a 30 zł cost that increases the actual acquisition cost. Understood in this way, marketing cost makes ROI reflect what is happening in the company, not only in the ad dashboard.
The attribution model and the accuracy of ROI measurement
The attribution model directly determines which revenue you “assign” to channels, and thus how you calculate ROI for campaigns and for marketing as a whole. Last-click favours channels that close the sale (e.g. brand search), which means ROI for upper-funnel activities (YouTube, paid social) can be understated. First-click better shows the acquisition stage, but it can overstate the importance of the first touch and ignore the real contribution of channels that complete the purchase. When attribution is poorly chosen, ROI can look “excellent” or “terrible” without any change in actual profitability.
In practice, it is worth taking multi-touch models into account: linear (splits value evenly), time-decay (gives greater weight closer to purchase) and position-based (e.g. 40/20/40, emphasises the start and end of the journey). GA4 offers data-driven attribution (DDA), but it requires a sufficient number of conversions and stable data; otherwise, the model result can be random. With low volume (e.g. several dozen conversions a month), it is more sensible to stick with a simpler approach. In addition, split reports into brand vs non-brand, because brand campaigns often capture users who have already made up their minds after other channels, which artificially inflates their ROI. To avoid getting stuck in contradictory conclusions, set one base model for budget decisions and show a comparison with last-click as a “detector” of underestimated channels.
Technical errors can distort attribution and, as a result, ROI too, for example when purchases are attributed to “referral” because of incorrectly configured handoffs to payment domains (Przelewy24, PayU) without proper cross-domain tracking and a referral exclusion list. Some conversions can also “leak” into Direct because of cross-device behaviour, when a user clicks on a phone but completes the purchase on a laptop. If you have logins, implement User-ID in GA4 and check how the ROI picture changes. In B2B, credibility increases when campaigns are tied to revenue over time in the CRM (MQL → SQL → Opportunity → Won), rather than just to the number of forms. When sales close offline (call centre, store), importing offline conversions (e.g. gclid/event_id) allows you to assign revenue to campaigns and calculate more complete ROI.
- 01Distorted ROILast-click / First-click. A single touchpoint, incorrect assessment of contribution.
- 02Missed channelIncorrect attribution misrepresents real profitability.
- 03Balanced approachMulti-touch models and data-driven attribution divide value more accurately.
Choosing the right attribution model is key to a true picture of marketing profitability.
What data is necessary to calculate ROI?
To calculate ROI, you need at least data on costs, the number of conversions, revenue, margin/COGS and the attribution model, because without this it is difficult to distinguish simple “revenue growth” from actual profit. In costs, it is worth including both media and other marketing expenses, and attributing revenue to channels according to the adopted attribution model. If you do not have margin at order level, you can initially rely on an average margin for the category, but make it clear in the report that this is an estimate. The biggest trap is calculating ROI solely on revenue, without margin/COGS, because then the result can easily “pretend” to be profitable.
- marketing costs (media + other costs)
- number of conversions
- revenue attributed to marketing
- margin/COGS (at least at category level, if no order-level data is available)
- attribution model used in reporting
Just as important as complete data are its consistency and quality, because even small inaccuracies can quickly shift ROI. In GA4, make sure revenue value is being sent correctly and that currency and time zone are set properly, because an error of 10–20% in revenue immediately distorts the result. If transactions are duplicated (e.g. through repeated transaction_id), revenue can be artificially inflated and ROI can rise “on paper” without any real improvement. When costs are not linked with revenue in one place (e.g. outside Google Ads), it is easy for tools to get out of sync and for manual ROI calculation to become necessary, which in turn increases the risk of mistakes.
Optimising ROI across different marketing channels
Optimising ROI across different marketing channels comes down to finding specific levers that affect margin, acquisition cost and the quality of attributed revenue in a given channel. In practice, this means working at the right level of detail: not just the “channel”, but also, for example, the search query in Search, the creative in paid social or the publisher in affiliate marketing. To improve ROI effectively, measure and compare results using the same definitions (all-in cost, margin instead of revenue) and within a consistent time horizon matched to conversion delays. This way, you optimise what truly translates into profit, rather than just the figure in the ads dashboard.
In Google Ads Search, ROI is easiest to improve by separating brand and non-brand activity and drilling down to the query level (Search Terms), where you can see phrases generating high cost with low margin. In non-brand campaigns, it is usually worthwhile cutting broad queries with weak profitability in favour of more precise intents, because this stabilises the margin result faster. In Performance Max, the challenge is often less “transparency”, so ROI is kept under control through goals (e.g. conversion value with rules), product feed quality and the exclusions available (including brand, where possible). A good practice is also comparing PMax performance against a baseline scenario (e.g. the period before launch) and monitoring the share of brand search, so you do not overpay for closing existing demand.
In Meta Ads, ROI requires separating the platform perspective from the business perspective, because the attribution window (e.g. 7d click/1d view) can show a different picture than GA4 last-click. For budget decisions, it works well to track two metrics in parallel: “platform ROI” for optimisation in Meta and “business ROI” from GA4/the backend for reallocating spend. On TikTok, ROI is particularly dependent on creatives, so it makes sense to calculate results per creative set (Spark Ads vs non-Spark) and per format (UGC, product demo, testimonial), rather than averaging the results of the whole channel. If two ads with the same targeting differ in CPA by as much as 2×, it is often work on the creatives that turns out to be the fastest way to improve ROI.
In “owned” and partner channels, ROI mainly improves through a complete accounting of costs and the correct attribution of revenue over time. In SEO, include the cost of content, link building, tools (e.g. Ahrefs/Semrush) and labour, and analyse revenue from organic conversions in a chosen window (e.g. 90 days) as well as cumulatively (monthly investment vs the growing profit from content cohorts). In email marketing, ROI should not be based solely on newsletters, but also on automations (welcome, abandoned cart, post-purchase), while controlling the impact of discounts on margin. In affiliate marketing, report ROI per publisher (not globally) and monitor cannibalisation (e.g. voucher sites closing the sale), and in influencer marketing base measurement on discount codes, UTM links and comparison with a control group, calculating the result on margin after discount.
- 01Define the impact leversFind specific elements (queries, creatives)
- 02Measure consistent resultsCompare 'all-in’ costs and margin
- 03Optimise for profitFocus on margin, not revenue from the dashboard
The key to success: working at the right level of detail, with consistent definitions and time horizon, so you can influence real profit.
Using analytics tools to track ROI
To track ROI, analytics tools must correctly connect collected conversions with costs and revenue using consistent definitions; otherwise, the result will be random. In GA4, configure ecommerce events (purchase, add_to_cart, begin_checkout) or lead events (generate_lead) and mark them as conversions so that you can compare results with costs. Also check the currency, time zone and correct sending of the value (value), because an error of 10–20% in revenue immediately distorts ROI. If you implement events via Google Tag Manager, use Preview/Debug and GA4 DebugView to confirm, among other things, the presence of transaction_id and value for purchase.
In practice, ROI is most often “broken” by inconsistent tagging and data quality issues, which is why one standard and cyclical validation are needed. Set a UTM convention (e.g. utm_source, utm_medium, utm_campaign, utm_content) and apply it consistently in links (a control sheet or UTM generator), because gaps or chaos in UTMs end up with an excess of “Direct” and inaccurate attributions. It is also worth watching out for common pitfalls: transaction duplication (e.g. repeated transaction_id), test conversions in the data, internal company traffic and incorrect UTMs, and then comparing GA4 with store/ERP data in periodic audits (e.g. once a month). If you operate in an environment with payments on separate domains, make sure the configuration eliminates incorrect “referral” entries in paths, because this directly lowers the ROI of paid channels.
ROI automation also requires closing the cost loop and better conversion coverage in more difficult tracking conditions. Google Ads costs integrate automatically, but for channels such as Meta, TikTok or LinkedIn, a cost import is usually needed (e.g. via BigQuery + schedule, Supermetrics or Funnel.io) so that ROI can be calculated without manual discrepancies between reports. When cookies limit measurement, implementations such as Meta Conversions API (CAPI) or Google Enhanced Conversions can reduce “invisible” conversions (often via GTM Server-Side or Shopify/WooCommerce integrations), stabilising the data for ROI calculations. After implementing Consent Mode v2, some users will not have full tracking, so attribution results may drop “on paper”, which is why you should compare modelled reports (GA4) with first-party data (CRM, backend). In B2B, it is crucial to connect the CRM with source/medium/campaign parameters and the click identifier (e.g. gclid, fbclid or your own click_id), so that ROI is calculated on revenue from won deals, not just on the number of leads.
Strategies to improve ROI through retention and LTV
ROI can be improved in a real way through retention and growth in LTV, because the same customer acquisition investment generates more margin over time. In practice, combine CAC with the margin achieved in 30/90/180 days to assess whether a given channel delivers valuable customers, not just those acquired “cheaply”. If you want scaling decisions without cashflow risk, analyse ROI and payback period in parallel (when margin covers CAC). This approach clarifies priorities: first profitability and payback time, and only then volume.
LTV can be calculated in a simple way when there is no access to advanced analytics: LTV = average margin per order × average number of orders in a period (e.g. 12 months). In a subscription model, a closer approximation is often used: LTV ≈ ARPA × gross margin × (1 / churn), e.g. 120 zł × 70% × (1/5%) ≈ 1680 zł. Payback period shows after how many days or weeks the generated margin will cover the acquisition cost, which is particularly important with limited capital. For example, CAC of 150 zł and monthly margin of 60 zł mean a payback of 2.5 months, which makes it easier to compare channels with similar ROI but different payback speeds.
To avoid confusing “easy” results with real growth, it is worth reporting ROI separately for new and returning customers, because remarketing often has a high ROAS but does not increase the customer base. In cohort analysis, group customers acquired in the same week or month (e.g. by source/medium) and measure retention and cumulative margin after 30/60/90 days. If ROI looks weak despite acceptable CPA, a common reason is a low AOV—then increasing basket value can improve ROI faster than small savings on CPC. Email/SMS automations (e.g. welcome, abandoned cart, post-purchase sequences) raise LTV and can “fix” the ROI of acquisition channels without increasing the budget.
Experiments and tests as a method of increasing ROI
You will most likely increase ROI through experiments, because they show the incremental effect of actions above the “baseline”, rather than only the sales attributed in tools. Attributed ROI answers the question of whom to credit for sales, whereas incremental ROI explains what actually added to sales compared with a scenario without the campaign. In practice, you may see a high attributed ROI from remarketing and an incremental ROI close to zero if customers would have bought anyway. For this reason, tests are a solid basis for budget decisions when attribution alone does not give a clear answer.
Holdout is a direct way to assess incrementality, because you compare the group that sees the campaign with the group that does not see it (e.g. 10–20% of the audience). In Meta, this can be run as Conversion Lift, and in other channels it can be implemented through segment exclusions or geo experiments. Geo tests involve switching off the campaign in selected regions and comparing the results with similar control markets, which is particularly useful for channels such as YouTube or paid social. Convert the test result into incremental margin vs campaign cost over the test period and only then calculate ROI, instead of relying solely on paths in analytics.
Landing page A/B tests can increase ROI without increasing costs, because they improve CR (conversion rate) at the same CPC. Example: increasing CR from 2.0% to 2.4% (20%) with an unchanged CPC gives around 20% more revenue with the same budget, which directly translates into better ROI. In creative tests, it is also worth watching out for “random winners” resulting from too small a sample. A good practice is to set the minimum detectable effect (MDE) in advance, e.g. an improvement in CPA of 10%, and the minimum number of conversions per variant (e.g. 100–300). If the test covers brand search, you can temporarily reduce the budget or the number of impressions on some days or in some regions and check whether total sales fall or whether they simply shift to organic. It is best to do this in a short window (e.g. 7–14 days) and with clearly defined risk criteria.
Marketing Mix Modelling (MMM) is worth considering when you need a fuller picture of channel impact despite cookie limitations and have a sufficiently long data history. MMM usually makes sense with 12–24 months of weekly data and significant spend across multiple channels, and in return it provides an estimate of incremental ROI per channel and budget saturation curves. Regardless of the method, keep an eye on seasonality and promotional changes, because a test carried out during the holidays, price changes or free delivery may produce a result that cannot be fairly compared. After the test, when planning scaling, take diminishing returns into account. It is not worth assuming a linear increase in effect with budget; instead, model the decline in marginal ROI.
FAQ
Frequently asked questions
How do you measure ROI in digital marketing so the result is reliable?
You need to account for full costs, assign revenue according to the attribution model and rely on margin, not just revenue. Only then does ROI answer the question of whether your actions actually generate profit.
Are ROI and ROAS the same in digital marketing?
No, ROI shows profitability after accounting for all costs, while ROAS shows only the relationship between revenue and ad spend. ROAS is useful for quick campaign optimisation, but it does not by itself show whether marketing is truly profitable.
Which costs should be included when calculating marketing ROI?
Costs should be calculated “all-in”, meaning you should add media, creative, tools, agency fees, team time, and discounts and promotions linked to campaigns. Leaving out these items artificially inflates ROI.
Why does the attribution model affect campaign ROI?
Because it determines which revenue you assign to individual channels. Last-click usually inflates the role of channels that close the sale and underplays the contribution of top-of-funnel activities.
What data is needed to calculate ROI in marketing?
You need data on costs, the number of conversions, revenue, margin or COGS, and a revenue attribution model. Without margin, it is easy to confuse revenue growth with actual profit.
Which tools and mistakes most often distort ROI?
ROI is mainly distorted by inconsistent tagging, incorrect UTM parameters, duplicate transactions, missing cross-domain tracking, and incorrectly set revenue values in GA4. It is also worth comparing GA4 data with the backend or CRM to spot discrepancies.





