{"id":5334,"date":"2026-06-07T01:52:42","date_gmt":"2026-06-06T23:52:42","guid":{"rendered":"https:\/\/strat.es\/poas-vs-roas\/"},"modified":"2026-07-27T00:50:27","modified_gmt":"2026-07-26T22:50:27","slug":"poas-vs-roas","status":"publish","type":"post","link":"https:\/\/strat.es\/en\/poas-vs-roas\/","title":{"rendered":"POAS vs ROAS: What They Measure and Which One You Should Use"},"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 7 June 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\">&#8220;So ROAS is no use anymore?&#8221; We get asked this almost every week, usually right after explaining POAS to a client. The short answer is that yes, ROAS is still useful. The problem is not ROAS. The problem is using it to decide things it cannot answer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The difference is simple: ROAS measures how much revenue each euro spent on advertising generates. POAS measures how much profit it generates. ROAS ignores your margin. POAS factors it in. That is why looking at ROAS alone is the reason so many brands invoice more each month and earn less.<\/p>\n\n\n\n<div class=\"wp-block-uagb-advanced-heading uagb-block-721322bd\"><h2 class=\"uagb-heading-text\"><strong>The difference in one table<\/strong><\/h2><\/div>\n\n\n\n<!-- ===== STRAT comparison table \u00b7 ROAS vs POAS ===== -->\n<!-- Paste this block into a \"Custom HTML\" block wherever you want the table. -->\n<div class=\"strat-table\">\n  <style>\n    .strat-table{\n      --st-pink:#ec186c; --st-ink:#1a1a1a; --st-muted:#6b6b6b;\n      --st-line:#ececec; --st-zebra:#fafafa;\n      margin:28px 0;\n      font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;\n      overflow-x:auto; -webkit-overflow-scrolling:touch;\n    }\n    .strat-table table{\n      width:100%; border-collapse:collapse; min-width:480px;\n      border:1px solid var(--st-line); border-radius:14px; overflow:hidden;\n      box-shadow:0 6px 22px rgba(0,0,0,.05);\n    }\n    .strat-table th,.strat-table td{\n      padding:13px 16px; text-align:left; font-size:14px; line-height:1.45;\n      border-bottom:1px solid var(--st-line); vertical-align:top;\n    }\n    .strat-table thead th{\n      background:var(--st-pink); color:#fff; font-weight:600; font-size:14.5px; border-bottom:none;\n    }\n    .strat-table thead th:first-child{ width:34%; }\n    .strat-table tbody th{\n      font-weight:600; color:var(--st-ink); background:#fff;\n    }\n    .strat-table td{ color:var(--st-ink); }\n    .strat-table tbody tr:nth-child(even) th,\n    .strat-table tbody tr:nth-child(even) td{ background:var(--st-zebra); }\n    .strat-table tbody tr:last-child th,\n    .strat-table tbody tr:last-child td{ border-bottom:none; }\n  <\/style>\n  <table>\n    <thead>\n      <tr>\n        <th scope=\"col\"><\/th>\n        <th scope=\"col\">ROAS<\/th>\n        <th scope=\"col\">POAS<\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr>\n        <th scope=\"row\">What it measures<\/th>\n        <td>Revenue per euro invested<\/td>\n        <td>Gross profit per euro invested<\/td>\n      <\/tr>\n      <tr>\n        <th scope=\"row\">Formula<\/th>\n        <td>Revenue \/ ad spend<\/td>\n        <td>Gross profit \/ ad spend<\/td>\n      <\/tr>\n      <tr>\n        <th scope=\"row\">Takes margin into account<\/th>\n        <td>No<\/td>\n        <td>Yes<\/td>\n      <\/tr>\n      <tr>\n        <th scope=\"row\">What it&#8217;s for<\/th>\n        <td>Optimising campaigns day to day<\/td>\n        <td>Deciding whether to scale and whether you make money<\/td>\n      <\/tr>\n      <tr>\n        <th scope=\"row\">Where you see it<\/th>\n        <td>In the platform, instantly<\/td>\n        <td>Needs your real margin data<\/td>\n      <\/tr>\n      <tr>\n        <th scope=\"row\">Risk if you use it alone<\/th>\n        <td>Scaling campaigns that leave no profit<\/td>\n        <td>None: it&#8217;s the real picture<\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n<!-- ===== End comparison table ===== -->\n\n\n\n<p class=\"wp-block-paragraph\">If you want the step-by-step POAS calculation with examples, it is in <a href=\"https:\/\/strat.es\/en\/what-is-poas\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">what POAS is and how to calculate it<\/a>. Here we go to the point that matters: when to use each, and why confusing them gets expensive.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why ROAS on its own can mislead you<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ROAS treats every euro of revenue as if it were worth the same. And they are not worth the same, because each euro carries a different margin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The clearest example shows up in every promotion. Say you sell a product at \u20ac100, with a product cost of \u20ac40. Without a discount, it leaves you \u20ac60 of margin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Along comes a campaign with 25% off. Now that product sells at \u20ac75. But the cost is still \u20ac40. Your margin drops to \u20ac35.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What happens to your metrics? The promotion converts better, so your <strong>ROAS goes up<\/strong>: you make more revenue per euro spent. The report looks great. But your <strong>POAS goes down<\/strong>, because each sale leaves almost half the margin. ROAS applauds you while you give away profitability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The same happens between products. A campaign selling high-margin items and one selling low-margin items can share the same ROAS and produce opposite results. ROAS does not tell them apart. POAS does.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So which one should I look at?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Both. But for different things.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>ROAS<\/strong> for the day-to-day inside the platform: comparing ads, audiences and creative, seeing what works and what does not within hours. It is a quick, operational signal, and for that it is perfect.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>POAS<\/strong> for the decisions that touch your P&amp;L: how much budget you put in, which campaigns you scale, which you pause, which products you push. Anything that affects whether you make money is decided on POAS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In one line: ROAS is for flying the plane day to day; POAS is for deciding where you fly it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How we use both at STRAT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Day to day we watch ROAS, because optimising needs an immediate signal and the platform does not give you margin in real time. But no budget decision is made on ROAS alone. Before scaling a campaign, we run it through POAS with the client&#8217;s real margin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And when we report, we report on POAS connected to the P&amp;L, not on the isolated metrics of each platform. A pretty ROAS in the Meta dashboard does not pay wages. Profit does.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Is POAS going to replace ROAS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No. And anyone telling you otherwise is probably simplifying to sell you something. They are metrics answering different questions, and they complement each other. ROAS does not disappear; what changes is the weight you give it in the important decisions. To optimise, ROAS. To decide, POAS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The mistake almost everyone makes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Making scaling decisions on ROAS alone. It is what leads people to raise the budget on a campaign that invoices a lot and leaves little, and to pause a campaign with a more modest ROAS that was actually the most profitable. Once you put margin into the equation, the ranking of your &#8220;best&#8221; campaigns sometimes flips completely.<\/p>\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 the difference between ROAS and POAS?<\/strong> ROAS measures the revenue each euro spent on advertising generates. POAS measures the gross profit each euro generates. The difference is that POAS accounts for your margin and ROAS does not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Which is better, ROAS or POAS?<\/strong> It depends what for. ROAS is better for optimising campaigns day to day. POAS is better for deciding whether an investment is profitable and whether you can scale. For profitability decisions, POAS wins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Can I use both at once?<\/strong> Yes, and it is the recommended approach. ROAS as the quick operational signal inside the platform, and POAS as the decision metric for budget and profitability.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Why is my ROAS going up but I am earning less?<\/strong> It usually happens with promotions and discounts. The discount lifts conversions (ROAS goes up) but reduces the margin on each sale (POAS goes down). You invoice more and earn less.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Does POAS replace ROAS?<\/strong> No. They answer different questions and coexist. ROAS is still useful for optimising; POAS is the one you use to decide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A high ROAS does not confirm that a campaign leaves a profit. At STRAT we work out your real POAS from each product&#8217;s margin, and we build that calculation into our <a href=\"https:\/\/strat.es\/en\/ecommerce-paid-media-agency\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#ec186c; text-decoration:underline; text-decoration-color:#ec186c\">paid media campaign management<\/a>, to scale only what adds profitability and cut what destroys it.<\/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 7 June 2026 In this article &#8220;So ROAS is no use anymore?&#8221; We get asked this almost every week, usually right after explaining POAS to a client. The short answer is that yes, ROAS is still useful. The problem is not ROAS. The problem is using it to decide things it cannot answer. [&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-5334","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 7 June 2026 In this article &#8220;So ROAS is no use anymore?&#8221; We get asked this almost every week, usually right after explaining POAS to a client. The short answer is that yes, ROAS is still useful. The problem is not ROAS. The problem is using it to decide things it cannot answer.&hellip;","_links":{"self":[{"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts\/5334","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=5334"}],"version-history":[{"count":4,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts\/5334\/revisions"}],"predecessor-version":[{"id":5344,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/posts\/5334\/revisions\/5344"}],"wp:attachment":[{"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/media?parent=5334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/categories?post=5334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/strat.es\/en\/wp-json\/wp\/v2\/tags?post=5334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}