{"id":5423,"date":"2026-07-01T10:00:00","date_gmt":"2026-07-01T08:00:00","guid":{"rendered":"https:\/\/strat.es\/buen-roas-ecommerce\/"},"modified":"2026-07-27T18:59:59","modified_gmt":"2026-07-27T16:59:59","slug":"what-is-a-good-roas-ecommerce","status":"publish","type":"post","link":"https:\/\/strat.es\/en\/what-is-a-good-roas-ecommerce\/","title":{"rendered":"What Is a Good ROAS in Ecommerce"},"content":{"rendered":"\n<!-- ===== STRAT article header (reading time + table of contents) ===== -->\n<!-- Paste this block into a \"Custom HTML\" block right AFTER the first paragraph of the post. -->\n<!-- The reading time and the table of contents generate themselves by reading the article. Just edit the date. -->\n<div class=\"strat-ah\" id=\"stratArticleHeader\">\n  <style>\n    .strat-ah{\n      --ah-bg:#ffffff; --ah-pink:#ec186c; --ah-line:#eaeaea;\n      --ah-ink:#1a1a1a; --ah-muted:#777777; --ah-body:#3f3f3f;\n      background:var(--ah-bg); border:1px solid var(--ah-line); border-radius:16px;\n      padding:22px 26px; margin:32px 0;\n      font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;\n      color:var(--ah-body); box-shadow:0 6px 22px rgba(0,0,0,.05);\n    }\n    .strat-ah *{box-sizing:border-box}\n    .strat-ah__meta{\n      display:flex; flex-wrap:wrap; gap:18px; align-items:center;\n      font-size:13px; color:var(--ah-muted); padding-bottom:16px; border-bottom:1px solid var(--ah-line);\n    }\n    .strat-ah__meta span{display:inline-flex; align-items:center; gap:7px}\n    .strat-ah__meta svg{display:block; color:var(--ah-pink)}\n    .strat-ah__eyebrow{\n      display:block; font-size:11px; font-weight:600; letter-spacing:.14em;\n      text-transform:uppercase; color:var(--ah-pink); margin:18px 0 12px;\n    }\n    .strat-ah__toc{margin-top:4px}\n    .strat-ah__toc ol{margin:0; padding:0; list-style:none; counter-reset:toc}\n    .strat-ah__toc li{counter-increment:toc; margin:0 0 9px}\n    .strat-ah__toc li:last-child{margin-bottom:0}\n    .strat-ah__toc a{\n      display:flex; gap:10px; align-items:baseline; text-decoration:none !important;\n      color:var(--ah-ink) !important; font-size:14px; line-height:1.45; transition:color .15s ease;\n    }\n    .strat-ah__toc a::before{\n      content:counter(toc,decimal-leading-zero); color:var(--ah-pink); font-weight:600;\n      font-size:12px; flex:0 0 auto; min-width:22px;\n    }\n    .strat-ah__toc a:hover{color:var(--ah-pink) !important}\n    @media (max-width:560px){ .strat-ah{padding:20px 18px} }\n  <\/style>\n\n  <div class=\"strat-ah__meta\">\n    <span id=\"stratReadTime\">\n      <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle><path d=\"M12 7v5l3 2\"><\/path><\/svg>\n      Calculating\u2026\n    <\/span>\n    <!-- EDIT the updated date here (or delete this <span> if you don't want to show it): -->\n    <span>\n      <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"17\" rx=\"2\"><\/rect><path d=\"M3 9h18M8 2v4M16 2v4\"><\/path><\/svg>\n      Updated 1 July 2026\n    <\/span>\n  <\/div>\n\n  <!-- The table of contents fills itself from the article's H2s: -->\n  <div class=\"strat-ah__toc\" id=\"stratTocSection\">\n    <span class=\"strat-ah__eyebrow\">In this article<\/span>\n    <ol id=\"stratTocList\"><\/ol>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  function countWords(s){ s=(s||'').trim(); return s ? s.split(\/\\s+\/).length : 0; }\n  function slugify(s){\n    return (s||'').toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'')\n      .replace(\/[^a-z0-9\\s-]\/g,'').trim().replace(\/\\s+\/g,'-').slice(0,60);\n  }\n  function findRoot(box){\n    var node=box.parentElement;\n    while(node && node!==document.body){\n      var hs=node.querySelectorAll('h2');\n      for(var i=0;i<hs.length;i++){\n        if(box.compareDocumentPosition(hs[i]) &#038; Node.DOCUMENT_POSITION_FOLLOWING) return node;\n      }\n      node=node.parentElement;\n    }\n    return box.parentElement;\n  }\n  function init(){\n    var box=document.getElementById('stratArticleHeader');\n    if(!box) return;\n    var root=findRoot(box);\n\n    var heads=Array.prototype.slice.call(root.querySelectorAll('h2')).filter(function(h){\n      return box.compareDocumentPosition(h) &#038; Node.DOCUMENT_POSITION_FOLLOWING;\n    });\n    var list=document.getElementById('stratTocList');\n    var used={};\n    if(heads.length){\n      heads.forEach(function(h,i){\n        var id=h.id;\n        if(!id){ id=slugify(h.textContent)||('sec-'+i); if(used[id]) id=id+'-'+i; h.id=id; }\n        used[id]=true;\n        var li=document.createElement('li');\n        var a=document.createElement('a');\n        a.href='#'+id; a.textContent=h.textContent.trim();\n        a.addEventListener('click',function(e){\n          e.preventDefault();\n          var t=document.getElementById(id);\n          if(t){ t.scrollIntoView({behavior:'smooth',block:'start'}); history.replaceState(null,'','#'+id); }\n        });\n        li.appendChild(a); list.appendChild(li);\n      });\n    } else {\n      document.getElementById('stratTocSection').style.display='none';\n    }\n\n    var total=countWords(root.innerText||root.textContent);\n    var own=countWords(box.innerText||box.textContent);\n    var words=Math.max(total-own,total>0?total:0);\n    var mins=Math.max(1,Math.round(words\/200));\n    var rt=document.getElementById('stratReadTime');\n    if(rt) rt.innerHTML=rt.innerHTML.replace('Calculating\u2026', mins+' min read');\n  }\n  if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',init); }\n  else { init(); }\n})();\n<\/script>\n<!-- ===== End STRAT article header ===== -->\n\n\n\n<p class=\"wp-block-paragraph\">It is one of the most-searched questions by anyone investing in advertising, and also one of the worst framed. You are looking for a number, &#8220;a good ROAS is 4&#8221;, to know whether you are doing well. The problem is that number is not the same for everyone, and trusting a generic figure is the fastest way to believe your campaigns are profitable while you lose money.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The real answer is this: a good ROAS is one that stays above your break-even ROAS, which depends entirely on your margin. A ROAS of 4 can be excellent for one store and ruinous for another. In this article you will see how to work out yours, why margin changes everything, and why even a good ROAS falls short of POAS when it comes to knowing whether you are really making money.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is ROAS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ROAS (Return On Ad Spend) is the return on your advertising investment. It measures how much revenue your ads generate for every euro invested. The formula is simple:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"block\"><semantics><mrow><mtext>ROAS<\/mtext><mo>=<\/mo><mfrac><mtext>Ad&nbsp;Revenue<\/mtext><mrow><mtext>Ad&nbsp;Spend<\/mtext><\/mrow><\/mfrac><\/mrow><annotation encoding=\"application\/x-tex\">\\text{ROAS} = \\frac{\\text{Ad Revenue}}{\\text{Ad Spend}}<\/annotation><\/semantics><\/math><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A ROAS of 4 means that for every euro you put into advertising, you get 4 euros back in sales. It sounds good, and at first glance it is, but note the key word: sales. ROAS talks about revenue, not profit, and that is where the problem begins.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is a good ROAS in ecommerce?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The short answer you do not want to hear: it depends. There is no universal good ROAS, because every ecommerce has a different margin, and margin is what decides the ROAS above which you make or lose money.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You will often see the rule that a ROAS of 3 to 4 is &#8220;good&#8221;. As a quick reference it works, but it is misleading, because it ignores exactly the figure that matters. A brand with a 70% margin makes money at a ROAS of 2, while another with a 25% margin loses money at a ROAS of 3. The same number, opposite results. That is why, before chasing a reference figure, you have to work out yours.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How do you calculate your break-even ROAS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The break-even ROAS is the point at which you neither gain nor lose on the ad, the minimum ROAS you need not to lose money. It is calculated like this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"block\"><semantics><mrow><mtext>Break-even&nbsp;ROAS<\/mtext><mo>=<\/mo><mfrac><mn>1<\/mn><mrow><mtext>contribution&nbsp;margin<\/mtext><\/mrow><\/mfrac><\/mrow><annotation encoding=\"application\/x-tex\">\\text{Break-even ROAS} = \\frac{1}{\\text{contribution margin}}<\/annotation><\/semantics><\/math><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your margin is 40%, your break-even ROAS is:<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"block\"><semantics><mrow><mtext>Break-even&nbsp;ROAS<\/mtext><mo>=<\/mo><mfrac><mn>1<\/mn><mrow><mn>0.40<\/mn><\/mrow><\/mfrac><mo>=<\/mo><mn>2.5<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">\\text{Break-even ROAS} = \\frac{1}{0.40} = 2.5<\/annotation><\/semantics><\/math><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That means below 2.5 you are losing money on every euro invested, at 2.5 you break even, and above it you start to gain. A good ROAS, then, is not a magazine number, it is the one that sits comfortably above your break-even, with room to spare to cover the rest of your costs (structure, returns, logistics) and leave a profit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a quick reference by contribution margin:<\/p>\n\n\n\n<!-- STRAT \u00b7 Break-even ROAS by margin table \u00b7 custom HTML block -->\n<style>\n.strat-roas-wrap{font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#1a1a1a;margin:32px 0}\n.strat-roas-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px;box-shadow:0 6px 22px rgba(0,0,0,.05)}\n.strat-roas-table{width:100%;border-collapse:collapse;min-width:360px;background:#ffffff;border:1px solid #ececec;border-radius:14px;overflow:hidden}\n.strat-roas-table thead th{background:#ec186c;color:#ffffff;font-weight:600;text-align:left;padding:15px 18px;font-size:14px;letter-spacing:.2px}\n.strat-roas-table td{padding:14px 18px;font-size:14px;line-height:1.5;border-top:1px solid #ececec;vertical-align:middle}\n.strat-roas-table td:first-child{font-weight:600}\n.strat-roas-table tbody tr:nth-child(even) td{background:#fafafa}\n.strat-roas-val{font-weight:700;white-space:nowrap}\n.strat-roas-r{color:#d8333f}\n.strat-roas-a{color:#b58200}\n.strat-roas-g{color:#1f9d57}\n.strat-roas-note{font-size:12.5px;color:#6b6b6b;margin:12px 2px 0;line-height:1.5}\n@media(max-width:640px){.strat-roas-table td,.strat-roas-table thead th{padding:12px 14px;font-size:13px}}\n<\/style>\n\n<div class=\"strat-roas-wrap\">\n  <div class=\"strat-roas-scroll\">\n    <table class=\"strat-roas-table\">\n      <thead>\n        <tr>\n          <th>Contribution margin<\/th>\n          <th>Break-even ROAS<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody>\n        <tr><td>20%<\/td><td class=\"strat-roas-val strat-roas-r\">5.0<\/td><\/tr>\n        <tr><td>30%<\/td><td class=\"strat-roas-val strat-roas-r\">3.3<\/td><\/tr>\n        <tr><td>40%<\/td><td class=\"strat-roas-val strat-roas-a\">2.5<\/td><\/tr>\n        <tr><td>50%<\/td><td class=\"strat-roas-val strat-roas-a\">2.0<\/td><\/tr>\n        <tr><td>60%<\/td><td class=\"strat-roas-val strat-roas-g\">1.7<\/td><\/tr>\n        <tr><td>70%<\/td><td class=\"strat-roas-val strat-roas-g\">1.4<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n  <p class=\"strat-roas-note\">Break-even ROAS = 1 \/ contribution margin. This is the minimum ROAS needed to not lose money on the ad. The lower your margin, the higher your ROAS needs to be just to break even, and a good ROAS is one that sits comfortably above this.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Why does a good ROAS depend on your margin?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let us see it with two stores that have the same ROAS of 3 and opposite business results.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Store A sells beauty products with a 65% margin. Its break-even ROAS is 1.5, so at a ROAS of 3 it is very comfortable, with plenty of margin over the investment to make money. Store B sells electronics with a 25% margin. Its break-even ROAS is 4, so at that same ROAS of 3 it is losing money on every sale, however decent the number looks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Same figure, one gains and the other loses. That is why asking for &#8220;a good ROAS&#8221; without looking at the margin makes no sense. Margin is what turns a ROAS into a good or a bad one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why the ROAS you see is not the real ROAS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The ROAS the Meta or Google dashboard shows you is not your real ROAS, and it distorts it in both directions for different reasons. It is worth knowing which way each one pulls.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On one side, it is inflated by over-attribution. Each platform tends to claim sales that would have happened anyway, or that touched several channels before the purchase. If you add up the ROAS each one reports on its own, the total is usually higher than your real business, because several are crediting themselves with the same sale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the other side, and this happens a lot with Meta lately, it is deflated by what it fails to track. With the privacy restrictions and the loss of cookies, there are real sales your campaign generates but the platform cannot attribute, so they drop off the report. In that case the platform ROAS comes in below the real one, not above. The Conversions API helps recover part of that tracking, but not all of it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And there is a third factor that always pulls in the same direction: returns. ROAS counts the sale at the moment of purchase, but does not subtract what gets returned afterwards. If you have a high return rate, your ROAS is inflated on paper, because part of that revenue never stays. It is a bias that shows up especially in sectors like fashion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In short, the number you see is distorted by several forces at once, and the net effect depends on your business. That is why some stores decide to use blended ROAS (the store&#8217;s total revenue divided by total spend), which is not fooled by attribution, to always subtract returns, and above all to measure in profit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The problem with ROAS: it measures revenue, not profit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the heart of the matter. Even if you work out your break-even ROAS correctly, ROAS still measures revenue, not profit. It tells you how much you sell for every euro invested, but not how much is left after paying for the product, the discounts and the rest of the variable costs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is why we use <a href=\"https:\/\/strat.es\/en\/what-is-poas\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">POAS<\/a>, the profit on ad spend, instead of the platform&#8217;s gross ROAS. POAS does see your margin, so it tells you whether a campaign genuinely makes you money, not just revenue. It is a difference that changes everything, and you can see the main differences explained in detail in <a href=\"https:\/\/strat.es\/en\/poas-vs-roas\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">POAS vs ROAS<\/a>. Break-even ROAS is a good first filter, but POAS is the metric decisions are made with.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What factors change your target ROAS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Your target ROAS is not fixed, it moves with your business. These are the factors that change it most:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>The contribution margin.<\/strong> The main one. The higher it is, the lower your target ROAS can be, and vice versa.<\/li>\n\n\n\n<li><strong>LTV.<\/strong> If your customers repeat, you can accept a lower ROAS on the first purchase, because you recover the margin on the following ones. We explain it in <a href=\"https:\/\/strat.es\/en\/how-to-calculate-ecommerce-ltv\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">how to calculate LTV<\/a>.<\/li>\n\n\n\n<li><strong>The stage of the business.<\/strong> At launch or when entering a new market, it can pay to accept a lower ROAS to acquire, as we see in <a href=\"https:\/\/strat.es\/en\/how-much-to-spend-on-meta-ads\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">how much to spend on Meta Ads<\/a>.<\/li>\n\n\n\n<li><strong>Returns and AOV.<\/strong> A high return rate eats into your real margin, and a low average order value leaves less cushion on each sale.<\/li>\n\n\n\n<li><strong>Promotions and discounts.<\/strong> Every markdown reduces your real margin, so it raises the ROAS you need not to lose. If you sell at 20% off, your margin drops and your break-even ROAS shoots up. That is why a campaign with a good ROAS during a sale may be leaving less profit than a worse one at full price.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently asked questions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What is a good ROAS for an ecommerce?<\/strong> There is no universal number. A good ROAS is one that sits above your break-even ROAS, which depends on your margin. The &#8220;a ROAS of 3 or 4 is good&#8221; rule works as a reference, but it misleads, because it ignores margin. Work out your break-even and get above it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How is ROAS calculated?<\/strong> ROAS = revenue generated by the ads \/ ad spend. A ROAS of 4 means you get 4 euros back in sales for every euro invested in advertising. It measures revenue, not profit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What is break-even ROAS?<\/strong> It is the minimum ROAS not to lose money on the ad, and it is calculated as 1 divided by your contribution margin. With a 40% margin, your break-even ROAS is 2.5. Below it you lose, above it you gain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why can a ROAS of 3 not be profitable?<\/strong> Because it depends on your margin. If your margin is 25%, your break-even ROAS is 4, so a ROAS of 3 makes you lose money on every sale. The same ROAS is profitable for a high-margin brand and ruinous for a low-margin one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ROAS or POAS, which should I look at?<\/strong> POAS, because it measures the profit on the investment and does take your margin into account. ROAS measures revenue, so you can have a high ROAS and be losing money. Break-even ROAS is a good first filter, but the final decision is made in POAS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Is the ROAS Meta or Google shows me the real one?<\/strong> Not entirely. The platform ROAS is usually inflated, because each platform attributes to itself sales that touched several channels or would have happened anyway. It is worth also looking at blended ROAS and, above all, measuring in POAS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>During a sale, can I settle for a lower ROAS?<\/strong> It is the opposite of what it seems. Since the discount reduces your margin, and break-even ROAS is 1 \u00f7 margin, during a sale you need a higher ROAS not to lose. That is why a good ROAS in the middle of a promotion may leave less profit than a worse one at full price.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to know the ROAS your ecommerce needs to really make money, we will work it out with you. At STRAT we analyse your margins, your break-even ROAS and your real POAS to set targets that protect your profitability, and on those numbers we base <a href=\"https:\/\/strat.es\/en\/ecommerce-paid-media-agency\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">our paid media campaign management<\/a>, scaling only what leaves a profit.<\/p>\n\n\n\n<!-- ===== STRAT author signature \u00b7 Jaime Mu\u00f1oz-Seca ===== -->\n<!-- Paste this whole block into a \"Custom HTML\" block at the end of the post. -->\n<div class=\"strat-author\">\n  <style>\n    .strat-author{\n      --sa-bg:#141414; --sa-pink:#ec186c; --sa-line:#2a2a2a;\n      --sa-ink:#f5f5f5; --sa-muted:#a3a3a3; --sa-bio:#cccccc;\n      display:flex; gap:22px; align-items:center;\n      background:var(--sa-bg); border:1px solid var(--sa-line); border-radius:16px;\n      padding:24px 26px; margin:40px 0;\n      font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;\n      box-shadow:0 18px 40px rgba(0,0,0,.18);\n    }\n    .strat-author *{box-sizing:border-box}\n    .strat-author__photo{\n      width:104px; height:104px; flex:0 0 104px; border-radius:50%;\n      object-fit:cover; display:block;\n      border:2px solid var(--sa-pink); box-shadow:0 0 0 4px rgba(236,24,108,.18);\n    }\n    .strat-author__body{min-width:0}\n    .strat-author__eyebrow{\n      display:block; font-size:11px; font-weight:600; letter-spacing:.14em;\n      text-transform:uppercase; color:var(--sa-pink); margin:0 0 4px;\n    }\n    .strat-author__name{\n      font-size:20px; font-weight:700; color:var(--sa-ink);\n      margin:0 0 2px; line-height:1.2;\n    }\n    .strat-author__role{\n      display:block; font-size:13.5px; font-weight:500; color:var(--sa-muted); margin:0 0 10px;\n    }\n    .strat-author__bio{\n      font-size:14px; line-height:1.55; color:var(--sa-bio); margin:0 0 14px;\n    }\n    .strat-author__link{\n      display:inline-flex; align-items:center; gap:8px;\n      background:var(--sa-pink); color:#ffffff !important; text-decoration:none !important;\n      font-size:13.5px; font-weight:600; padding:9px 16px; border-radius:9px;\n      transition:background .15s ease, transform .15s ease;\n    }\n    .strat-author__link:hover{background:#d1145f; transform:translateY(-1px); color:#fff !important;}\n    .strat-author__link svg{display:block}\n    @media (max-width:560px){\n      .strat-author{flex-direction:column; text-align:center; gap:16px; padding:24px 20px}\n      .strat-author__link{align-self:center}\n    }\n  <\/style>\n  <img decoding=\"async\" class=\"strat-author__photo\" src=\"https:\/\/strat.es\/wp-content\/uploads\/2026\/06\/jaime-munoz-seca-strat.png\" alt=\"Jaime Mu\u00f1oz-Seca, Paid Media Manager at STRAT\">\n  <div class=\"strat-author__body\">\n    <span class=\"strat-author__eyebrow\">Written by<\/span>\n    <p class=\"strat-author__name\">Jaime Mu\u00f1oz-Seca<\/p>\n    <span class=\"strat-author__role\">Paid Media Manager at STRAT<\/span>\n    <p class=\"strat-author__bio\">Over six years scaling online stores through daily hand-to-hand combat with ad managers. He survived Apple&#8217;s iOS privacy changes and the weekly chaos out of Meta, and learned that magic formulas do not work here: only data, continuous testing and common sense.<\/p>\n    <a class=\"strat-author__link\" href=\"https:\/\/www.linkedin.com\/in\/jaime-munoz-seca-sese\/\" target=\"_blank\" rel=\"noopener noreferrer\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.73V1.73C24 .77 23.2 0 22.22 0z\"><\/path><\/svg>\n      Connect on LinkedIn\n    <\/a>\n  <\/div>\n<\/div>\n<!-- ===== End author signature ===== -->\n","protected":false},"excerpt":{"rendered":"<p>Calculating\u2026 Updated 1 July 2026 In this article It is one of the most-searched questions by anyone investing in advertising, and also one of the worst framed. You are looking for a number, &#8220;a good ROAS is 4&#8221;, to know whether you are doing well. The problem is that number is not the same for [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[29],"tags":[],"class_list":["post-5423","post","type-post","status-publish","format-standard","category-paid-media-ecommerce","entry"],"acf":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"gur_featured_image":false,"gur_blog_thumbnail":false},"uagb_author_info":{"display_name":"Jaime","author_link":"https:\/\/strat.es\/en\/author\/jaimote\/"},"uagb_comment_info":0,"uagb_excerpt":"Calculating\u2026 Updated 1 July 2026 In this article It is one of the most-searched questions by anyone investing in advertising, and also one of the worst framed. You are looking for a number, &#8220;a good ROAS is 4&#8221;, to know whether you are doing well. The problem is that number is not the same for&hellip;","_links":{"self":[{"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts\/5423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/comments?post=5423"}],"version-history":[{"count":1,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts\/5423\/revisions"}],"predecessor-version":[{"id":5425,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts\/5423\/revisions\/5425"}],"wp:attachment":[{"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/media?parent=5423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/categories?post=5423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/tags?post=5423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}