{"id":1382,"date":"2026-10-19T08:53:08","date_gmt":"2026-10-19T12:53:08","guid":{"rendered":"https:\/\/thedoctorads.com\/blog\/target-roas-margin-break-even"},"modified":"2026-10-19T08:53:13","modified_gmt":"2026-10-19T12:53:13","slug":"target-roas-margin-break-even","status":"publish","type":"post","link":"https:\/\/thedoctorads.com\/blog\/target-roas-margin-break-even","title":{"rendered":"Where Should Your Target ROAS Come From? Margin, Break-Even or Habit"},"content":{"rendered":"<div class=\"tldr\">\n<p><strong>From your margin, through break-even.<\/strong> When conversion values are revenue, the floor for a target ROAS is <strong><span data-claim-id=\"POS-05\">1 \u00f7 your pre-ad contribution margin<\/span><\/strong>; the target is a profit decision above it. Habit, an old target never checked against current margins, is not a source.<\/p>\n<p>The template breaks on its first line if nobody can say whether conversion value means revenue or contribution. I would not approve a target until that line is written down.<\/p>\n<p>A target below your floor could go unnoticed while the campaign was beating it. Since <span data-claim-id=\"OFF-02\">17 August 2026<\/span>, Google says budget-limited campaigns perform more consistently towards the target you enter.<\/p>\n<\/div>\n<aside class=\"key-stat\">\n<p><strong>Before the August change, only <span data-claim-id=\"INS-026\">27%<\/span> of Target ROAS campaigns in our data hit or beat their own targets; the median campaign delivered <span data-claim-id=\"INS-026\">86%<\/span> of its target.<\/strong><\/p>\n<p class=\"source-line\">Source: Doctor Ads Profit Forensics, managed-portfolio campaigns, <span data-claim-id=\"INS-026\">September 2024 to February 2025<\/span>; reported conversion value, not audited profit.<\/p>\n<\/aside>\n<h2>The target ROAS floor template<\/h2>\n<p>Margin and break-even are one input: break-even is what your margin allows. History is the other honest input. Google&#8217;s page on <a href=\"https:\/\/support.google.com\/google-ads\/answer\/6268637?hl=en\" target=\"_blank\" rel=\"noopener\">Target ROAS bidding<\/a> says the target \u201cshould be set based on your business goals as well as your historical ROAS performance as a reference\u201d, and its recommended target comes from your recent actual ROAS.<\/p>\n<p>Our <a href=\"https:\/\/thedoctorads.com\/blog\/bidding-and-budget\">bidding and budget research<\/a> measures delivery; this worksheet sets the bar.<\/p>\n<table>\n<thead>\n<tr>\n<th>Line<\/th>\n<th>What goes in it<\/th>\n<th>Source<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Value unit<\/td>\n<td>Revenue or contribution<\/td>\n<td>Each conversion action&#8217;s value setting<\/td>\n<\/tr>\n<tr>\n<td>Net revenue (R)<\/td>\n<td>Sales excluding VAT or sales tax, returns and cancellations<\/td>\n<td>Finance, order system<\/td>\n<\/tr>\n<tr>\n<td>Variable costs (C)<\/td>\n<td>Costs that move with each order, ads excluded: goods, shipping, fees, returns<\/td>\n<td>Finance<\/td>\n<\/tr>\n<tr>\n<td>Pre-ad contribution margin (m)<\/td>\n<td>(R minus C) \u00f7 R, a positive fraction, not a percentage<\/td>\n<td>Calculated<\/td>\n<\/tr>\n<tr>\n<td>Floor<\/td>\n<td>Break-even ROAS: <span data-claim-id=\"POS-05\">1 \u00f7 m<\/span><\/td>\n<td>Calculated<\/td>\n<\/tr>\n<tr>\n<td>Required profit (P)<\/td>\n<td>Contribution left after ads, same basis and period as R<\/td>\n<td>Finance, in writing<\/td>\n<\/tr>\n<tr>\n<td>Required ROAS<\/td>\n<td><span data-claim-id=\"POS-06\">R \u00f7 (R minus C minus P)<\/span>, denominator above zero<\/td>\n<td>Calculated<\/td>\n<\/tr>\n<tr>\n<td>Delivered return<\/td>\n<td>Conv. value\/cost beside Avg. target ROAS, same dates<\/td>\n<td>Campaigns table<\/td>\n<\/tr>\n<tr>\n<td>Entered target<\/td>\n<td>The number, its date and its reason<\/td>\n<td>Bid strategy settings; Change history<\/td>\n<\/tr>\n<tr>\n<td>Budget status<\/td>\n<td>Limited by budget or not<\/td>\n<td>Status column<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong><span data-claim-id=\"POS-05\">Break-even ROAS on revenue values = 1 \u00f7 pre-ad contribution margin<\/span><\/strong><\/p>\n<p>At break-even, the revenue left after variable costs pays exactly for the ads, so R \u00f7 ad spend equals <span data-claim-id=\"POS-05\">1 \u00f7 m<\/span>. Google Ads takes the target as a percentage, so multiply the ratio by <span data-claim-id=\"OFF-09\">100<\/span>. A campaign exactly on the floor pays nothing towards salaries or rent, and the floor says nothing about incrementality.<\/p>\n<h3>The line that breaks the template<\/h3>\n<p>Fill in the value unit first: the formulas assume revenue; contribution values are handled below. Google accepts either kind of value: its <a href=\"https:\/\/support.google.com\/google-ads\/answer\/14791574?hl=en\" target=\"_blank\" rel=\"noopener\">conversion value best practices<\/a> name values \u201csuch as sales revenue or profit margins\u201d.<\/p>\n<p>Revenue values have a blind spot. An expensive sale can carry little profit, so bidding on price can favour weak-margin products while the reported return looks healthy. Google&#8217;s page on <a href=\"https:\/\/support.google.com\/google-ads\/answer\/1722066?hl=en\" target=\"_blank\" rel=\"noopener\">return on investment<\/a> draws the line: \u201cROI is the ratio of your net profit to your costs.\u201d Gross margin is the second trap: it usually leaves out shipping, fees and returns.<\/p>\n<p>My standard is stricter than Google&#8217;s. I would not approve a target ROAS until the team can connect order values to profit. An automatic order-system feed can send each order&#8217;s pre-ad contribution, in money, as its conversion value.<\/p>\n<h2>What changed on 17 August 2026, and what did not<\/h2>\n<p>Google&#8217;s page on <a href=\"https:\/\/support.google.com\/google-ads\/answer\/17061251?hl=en\" target=\"_blank\" rel=\"noopener\">changes to target based bid strategies<\/a> says that from <span data-claim-id=\"OFF-02\">17 August 2026<\/span>, \u201cCampaigns that are limited by budget and use a target-based bid strategy now perform more consistently toward your bid target\u201d. It singles out campaigns that used to beat their targets.<\/p>\n<p>That is where a soft target, one set below what the campaign delivered, starts to matter. If it sits below your floor, a budget-limited campaign may now deliver closer to it.<\/p>\n<p>The <a href=\"https:\/\/support.google.com\/google-ads\/answer\/17125145?hl=en\" target=\"_blank\" rel=\"noopener\">FAQ on the change<\/a> sets the limits: the rollout was completed on <span data-claim-id=\"OFF-03\">27 August 2026<\/span>, and Target ROAS campaigns not limited by budget keep their behaviour. The update covers Search, Shopping, Performance Max, Demand Gen and Travel; per the <a href=\"https:\/\/support.google.com\/google-ads\/answer\/17061251?hl=en\" target=\"_blank\" rel=\"noopener\">change page<\/a>, Display and Hotel already bid this way, and App, Video reach and Video view campaigns keep the old behaviour.<\/p>\n<p><a href=\"https:\/\/thedoctorads.com\/blog\/mastering-google-ads-portfolio-bid-strategies\">Portfolio strategies<\/a> and shared budgets are covered too, but target changes there are <a href=\"https:\/\/support.google.com\/google-ads\/answer\/17125145?hl=en\" target=\"_blank\" rel=\"noopener\">yours to make, at portfolio or shared-budget level<\/a>: \u201cGoogle doesn&#8217;t automatically adjust your bidding targets or budgets.\u201d<\/p>\n<p>Google has not said that a campaign can never beat its target, that one falling short will improve, or that every change since August came from this update.<\/p>\n<p>The <a href=\"https:\/\/thedoctorads.com\/blog\/mastering-google-ads-target-cpa-bidding-for-optimal-campaign-results\">study behind our <strong><span data-claim-id=\"N-2\">27%<\/span><\/strong> and <strong><span data-claim-id=\"N-2\">86%<\/span><\/strong><\/a> predates the change, and those numbers are not a correction factor: in our <a href=\"https:\/\/thedoctorads.com\/blog\/performance-max-target-cpa-overshoot\">study of whether Performance Max hits its target cost per conversion (CPA)<\/a>, two samples gave opposite answers (mostly <span data-claim-id=\"N-9\">September 2024 to February 2025<\/span>, then <span data-claim-id=\"N-9\">January to May 2026<\/span>). Raising a target to cover an old shortfall asks for a stricter return, and <a href=\"https:\/\/support.google.com\/google-ads\/answer\/6268637?hl=en\" target=\"_blank\" rel=\"noopener\">Google warns<\/a> that \u201csetting a target that&#8217;s too high may limit the amount of traffic your ads may get\u201d.<\/p>\n<h2>What to check in your account<\/h2>\n<ol>\n<li><strong>Write down the value unit.<\/strong> In Campaigns \u203a Settings, expand the campaign&#8217;s <a href=\"https:\/\/support.google.com\/google-ads\/answer\/10995103?hl=en\" target=\"_blank\" rel=\"noopener\">Conversion goals<\/a> and hover over each goal for its Primary actions; in a custom goal, secondary actions bid too. Read each action&#8217;s value setting in the conversions summary, then ask what the value contains: revenue with or without tax, or margin.<\/li>\n<li><strong>Put delivery beside the target.<\/strong> In Campaigns \u203a Campaigns, add Conv. value\/cost (Conversions columns) and Avg. target ROAS (Performance columns) for the same dates; multiply the first by <span data-claim-id=\"OFF-09\">100<\/span>. Leave out the latest conversion delay period, while recent clicks still convert. Per the <a href=\"https:\/\/support.google.com\/google-ads\/answer\/7074568?hl=en\" target=\"_blank\" rel=\"noopener\">bid strategy report guide<\/a>, <span data-claim-id=\"OFF-12\">\u201cAverage CPA and ROAS targets are currently not supported for Display and campaigns using Store Visits or Store Sales\u201d<\/span>. Without an average, use dated target settings and changes in the period, not today&#8217;s target.<\/li>\n<li><strong>Date the target.<\/strong> Campaigns \u203a <a href=\"https:\/\/support.google.com\/google-ads\/answer\/19888?hl=en\" target=\"_blank\" rel=\"noopener\">Change history<\/a> shows when it changed; portfolio targets sit in Tools \u203a Budgets and bidding \u203a Bid strategies. A target nobody can explain is habit.<\/li>\n<li><strong>Mark what August covers.<\/strong> Read the Status column for Limited by budget and check each campaign type against the groups above.<\/li>\n<li><strong>Compare three numbers.<\/strong> With finance, set the floor beside the entered target and delivered return. A target below the floor is a risk; delivery below it means checking values, margins and bidding, not just the target.<\/li>\n<\/ol>\n<h2>When this does not apply<\/h2>\n<p><strong>Your values are already pre-ad contribution.<\/strong> The margin is inside the value, so dividing by it again sets the floor too high. Break-even sits where value equals spend, before fixed costs.<\/p>\n<p><strong>You buy first orders below break-even on purpose.<\/strong> If repeat purchases pay back later, a first-order floor overstates the bar. Work the floor out on lifetime contribution, with your own retention assumptions.<\/p>\n<h2>When to call an independent check<\/h2>\n<p>Ask for one when the value unit cannot be written down, the target has no dated reason, or delivered return sits below the floor while reports call the account profitable. If conversion values are uncertain, test before you scale. In Profit Forensics the target is re-derived from margin before any bid advice.<\/p>\n<p><!-- cta-anchor --><\/p>\n<h2>Researcher&#8217;s take<\/h2>\n<p>I have nothing against an ambitious target ROAS. I object to one nobody can explain. It is the one number a finance director can test against the P&amp;L, so it needs a written derivation: value unit, margin, floor, profit. Since August that matters more: for a budget-limited campaign, the number you type is closer to the return you may get. Floor first, then target, then budget.<\/p>\n<p><em>Igor Ivitskiy, Doctor Ads Profit Forensics<\/em><\/p>\n<h2>FAQ<\/h2>\n<h3>Do our Target ROAS campaigns actually hit their targets?<\/h3>\n<p>Check rather than assume. <a href=\"https:\/\/support.google.com\/google-ads\/answer\/6268637?hl=en\" target=\"_blank\" rel=\"noopener\">Target ROAS<\/a> bids to maximise conversion value while \u201ctrying to achieve an average return on ad spend (ROAS) equal to your target\u201d, which is not a guarantee. From <span data-claim-id=\"INS-026\">September 2024 to February 2025<\/span>, only <span data-claim-id=\"INS-026\">27%<\/span> of Target ROAS campaigns in our data hit or beat their own targets, on reported value, not profit.<\/p>\n<h3>Since August, should we raise budgets or set targets above the real goal?<\/h3>\n<p>Decide them separately. The target is the template&#8217;s Required ROAS, which covers variable costs, ad spend and required profit. Padding it asks for a stricter return, which can cut traffic. Budget buys volume at that target.<\/p>\n<h3>Is there a good ROAS for every business?<\/h3>\n<p>No. A return that is comfortable at a wide margin loses money at a thin one, because the floor is <span data-claim-id=\"POS-05\">1 \u00f7 pre-ad contribution margin<\/span>. Judge any ROAS against your own floor.<\/p>\n<h2>How we know<\/h2>\n<p>Google Ads Help, checked 19 October 2026: <em>About Target ROAS bidding<\/em>; <em>Changes to target based bid strategies<\/em>; <em>Frequently asked questions about changes to Target-based bid strategies<\/em>; <em>About conversion goals<\/em>; <em>How to find your bid strategy reports<\/em>; <em>About change history<\/em>; <em>Conversion Values Best Practices<\/em>; <em>About return on investment (ROI)<\/em>. Quotations are exact.<\/p>\n<p>The <span data-claim-id=\"N-2\">27%<\/span> and <span data-claim-id=\"N-2\">86%<\/span> come from our <a href=\"https:\/\/thedoctorads.com\/blog\/mastering-google-ads-target-cpa-bidding-for-optimal-campaign-results\">target bidding study<\/a>: managed-portfolio campaigns, <span data-claim-id=\"INS-026\">September 2024 to February 2025<\/span>, reported conversion value rather than audited profit. The formulas are algebra under their stated assumptions. The floor-first rule is Igor Ivitskiy&#8217;s operating standard, not a Google requirement.<\/p>\n<p><em>No new portfolio data in this article: it combines Google&#8217;s documentation (checked 19 October 2026) with what our audits look for. Where a figure comes from our published studies, the study is linked.<\/em><\/p>\n<p>Method and opinion: Igor Ivitskiy, Doctor Ads Profit Forensics.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Target ROAS from margin, not habit: on revenue values, break-even is 1 \u00f7 pre-ad contribution margin. A floor template, plus the 17 August 2026 change.<\/p>\n","protected":false},"author":0,"featured_media":1383,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-1382","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bidding-and-budget","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33"],"_links":{"self":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/comments?post=1382"}],"version-history":[{"count":1,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1382\/revisions"}],"predecessor-version":[{"id":1384,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1382\/revisions\/1384"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media\/1383"}],"wp:attachment":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media?parent=1382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/categories?post=1382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/tags?post=1382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}