{"id":331,"date":"2026-09-28T15:32:47","date_gmt":"2026-09-28T15:32:47","guid":{"rendered":"https:\/\/protos.vn\/?page_id=331"},"modified":"2026-09-28T15:32:47","modified_gmt":"2026-09-28T15:32:47","slug":"roas-calculator","status":"publish","type":"page","link":"https:\/\/protos.vn\/en\/tools\/roas-calculator\/","title":{"rendered":"ROAS Calculator"},"content":{"rendered":"    <div id=\"protos-app\" class=\"protos-site protos-v2 ps-live\" data-protos-region=\"content\" data-template=\"calculator\" data-module=\"tools\" data-route=\"\/tools\/roas-calculator\">\r\n    <div id=\"protos-main\" tabindex=\"-1\">\r\n<style id=\"protos-roascalc-promax-css\">\r\nhtml { overflow-x: hidden !important; overflow-y: scroll !important; scrollbar-gutter: stable; }\r\nbody.protos-content-page, body.protos-content-page #wrapper, body.protos-content-page #main,\r\n.protos-full-page, #protos-app.protos-site, #protos-main {\r\n    background-color: #ffffff !important; color: #0f172a !important;\r\n    font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif !important;\r\n    overflow-x: visible !important; overflow-y: visible !important; max-height: none !important; height: auto !important;\r\n    width: 100%; margin: 0; padding: 0; box-sizing: border-box;\r\n}\r\nbody.protos-content-page #header:not(.v-header):not(.p-header),\r\nbody.protos-content-page header#header:not(.v-header):not(.p-header),\r\nbody.protos-content-page .header-wrapper:not(:has(.v-header)),\r\nbody.protos-content-page #masthead, body.protos-content-page .absolute-footer {\r\n    display: none !important; height: 0 !important; visibility: hidden !important;\r\n}\r\n.px-section { position: relative; width: 100%; padding: clamp(56px, 6vw, 96px) 0; overflow-x: clip; border-top: 1px solid rgba(255, 255, 255, 0.06); box-sizing: border-box; }\r\n.px-container { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: clamp(16px, 4vw, 32px); position: relative; z-index: 2; box-sizing: border-box; }\r\n.px-eyebrow { display: inline-flex; align-items: center; gap: 8px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.1); padding: 6px 14px; border-radius: 999px; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: #94a3b8; margin-bottom: 20px; }\r\n.px-hero { padding-top: clamp(40px, 5vw, 80px); padding-bottom: clamp(56px, 7vw, 100px); background: radial-gradient(circle at 50% -10%, rgba(6, 182, 212, 0.16) 0%, rgba(255, 255, 255, 0) 70%); }\r\n.px-interactive-card { background: rgba(15, 23, 42, 0.75); border: 1px solid rgba(6, 182, 212, 0.25); border-radius: 20px; padding: clamp(24px, 3.5vw, 36px); backdrop-filter: blur(20px); box-shadow: 0 20px 50px -15px rgba(0, 0, 0, 0.6); margin-top: 36px; }\r\n.px-field { width: 100%; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 10px; padding: 12px 14px; font-size: 15px; font-weight: 600; color: #ffffff; box-sizing: border-box; }\r\n.px-field:focus { outline: none; border-color: #06b6d4; background: rgba(6, 182, 212, 0.05); }\r\n.px-btn { display: inline-flex; align-items: center; gap: 8px; background: #06b6d4; color: #07090e !important; font-size: 13px; font-weight: 800; padding: 12px 24px; border-radius: 10px; text-decoration: none !important; cursor: pointer; border: none; }\r\n.px-btn:hover { background: #0891b2; transform: translateY(-2px); }\r\n.px-btn-ghost { display: inline-flex; align-items: center; gap: 8px; background: rgba(255, 255, 255, 0.04); color: #e2e8f0 !important; border: 1px solid rgba(255, 255, 255, 0.12); font-size: 13px; font-weight: 700; padding: 12px 20px; border-radius: 10px; text-decoration: none !important; }\r\n.px-cta-banner { background: radial-gradient(circle at 50% 50%, rgba(6, 182, 212, 0.15) 0%, rgba(255, 255, 255, 0) 80%), rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 24px; padding: clamp(40px, 5vw, 64px) clamp(20px, 4vw, 48px); text-align: center; }\r\n<\/style>\r\n\r\n<!-- SECTION 01: HERO -->\r\n<section class=\"px-section px-hero\">\r\n    <div class=\"px-container\">\r\n\r\n        <div style=\"max-width: 800px;\">\r\n            <div class=\"px-eyebrow\">\r\n                <span style=\"width:7px;height:7px;border-radius:50%;background:#06b6d4;box-shadow:0 0 10px #06b6d4;\"><\/span>\r\n                <span>PROTOS ROAS SIMULATION STUDIO<\/span>\r\n            <\/div>\r\n            <h1 style=\"font-size:clamp(32px, 4vw, 50px); font-weight:800; color:#fff; line-height:1.15; margin:0 0 16px 0; letter-spacing:-0.03em;\">\r\n                Comprehensive ROAS &amp;<br>\r\n                <span style=\"background:linear-gradient(135deg, #fff 30%, #22d3ee 100%); -webkit-background-clip:text; -webkit-text-fill-color:transparent;\">Break-Even Net Margin Calculator<\/span>\r\n            <\/h1>\r\n            <p style=\"font-size:16px; color:#94a3b8; line-height:1.6; margin:0 0 24px 0;\">\r\n                Pinpoint the exact break-even point of your marketing campaigns. Factor in cost of goods, shipping, and platform transaction fees to protect real net profitability.            <\/p>\r\n        <\/div>\r\n\r\n        <!-- Full Interactive Calculator -->\r\n        <div class=\"px-interactive-card\">\r\n            <div style=\"display:grid; grid-template-columns: 1.15fr 0.85fr; gap:36px; align-items:flex-start;\">\r\n                <div>\r\n                    <h3 style=\"font-size:18px; font-weight:800; color:#fff; margin:0 0 20px 0;\">D\u1eef Li\u1ec7u Chi\u1ebfn D\u1ecbch C\u1ee7a B\u1ea1n<\/h3>\r\n                    \r\n                    <div style=\"display:grid; grid-template-columns: 1fr 1fr; gap:16px; margin-bottom:16px;\">\r\n                        <div>\r\n                            <label style=\"display:block; font-size:11px; font-weight:700; text-transform:uppercase; color:#94a3b8; margin-bottom:6px;\">Chi Ph\u00ed Qu\u1ea3ng C\u00e1o (VN\u0110)<\/label>\r\n                            <input type=\"number\" id=\"rc-spend\" class=\"px-field\" value=\"20000000\" step=\"500000\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label style=\"display:block; font-size:11px; font-weight:700; text-transform:uppercase; color:#94a3b8; margin-bottom:6px;\">Doanh Thu \u0110\u1ea1t \u0110\u01b0\u1ee3c (VN\u0110)<\/label>\r\n                            <input type=\"number\" id=\"rc-rev\" class=\"px-field\" value=\"100000000\" step=\"1000000\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div style=\"display:grid; grid-template-columns: 1fr 1fr; gap:16px; margin-bottom:16px;\">\r\n                        <div>\r\n                            <label style=\"display:block; font-size:11px; font-weight:700; text-transform:uppercase; color:#94a3b8; margin-bottom:6px;\">T\u1ef7 L\u1ec7 Gi\u00e1 V\u1ed1n COGS (%)<\/label>\r\n                            <input type=\"number\" id=\"rc-cogs\" class=\"px-field\" value=\"35\" step=\"1\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label style=\"display:block; font-size:11px; font-weight:700; text-transform:uppercase; color:#94a3b8; margin-bottom:6px;\">Ph\u00ed S\u00e0n & Thanh To\u00e1n (%)<\/label>\r\n                            <input type=\"number\" id=\"rc-fee\" class=\"px-field\" value=\"8\" step=\"0.5\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div>\r\n                        <label style=\"display:block; font-size:11px; font-weight:700; text-transform:uppercase; color:#94a3b8; margin-bottom:6px;\">Chi Ph\u00ed V\u1eadn H\u00e0nh \/ \u0110\u00f3ng G\u00f3i \/ Kh\u00e1c (VN\u0110)<\/label>\r\n                        <input type=\"number\" id=\"rc-fixed\" class=\"px-field\" value=\"5000000\" step=\"500000\">\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div style=\"background:rgba(255,255,255,0.02); border:1px solid rgba(255,255,255,0.08); border-radius:18px; padding:28px;\">\r\n                    <div style=\"text-align:center; padding-bottom:20px; border-bottom:1px solid rgba(255,255,255,0.08); margin-bottom:20px;\">\r\n                        <div style=\"font-size:11px; font-weight:800; color:#06b6d4; text-transform:uppercase; letter-spacing:0.1em;\">ROAS HI\u1ec6N T\u1ea0I C\u1ee6A B\u1ea0N<\/div>\r\n                        <div id=\"rc-out-roas\" style=\"font-size:48px; font-weight:800; color:#22d3ee; line-height:1; margin:8px 0;\">5.00x<\/div>\r\n                        <div id=\"rc-out-roas-status\" style=\"font-size:12px; color:#10b981; font-weight:700;\">\u2713 \u0110ang v\u1eadn h\u00e0nh c\u00f3 l\u00e3i<\/div>\r\n                    <\/div>\r\n\r\n                    <div style=\"display:flex; flex-direction:column; gap:12px;\">\r\n                        <div style=\"display:flex; justify-content:space-between; font-size:13px;\">\r\n                            <span style=\"color:#94a3b8;\">ROAS H\u00f2a V\u1ed1n T\u1ed1i Thi\u1ec3u:<\/span>\r\n                            <strong id=\"rc-out-be\" style=\"color:#fff;\">1.75x<\/strong>\r\n                        <\/div>\r\n                        <div style=\"display:flex; justify-content:space-between; font-size:13px;\">\r\n                            <span style=\"color:#94a3b8;\">L\u1ee3i Nhu\u1eadn G\u1ed9p (Gross):<\/span>\r\n                            <strong id=\"rc-out-gross\" style=\"color:#fff;\">57.000.000 \u20ab<\/strong>\r\n                        <\/div>\r\n                        <div style=\"display:flex; justify-content:space-between; font-size:13px;\">\r\n                            <span style=\"color:#94a3b8;\">L\u1ee3i Nhu\u1eadn R\u00f2ng (Net Profit):<\/span>\r\n                            <strong id=\"rc-out-net\" style=\"color:#34d399; font-size:16px;\">32.000.000 \u20ab<\/strong>\r\n                        <\/div>\r\n                        <div style=\"display:flex; justify-content:space-between; font-size:13px;\">\r\n                            <span style=\"color:#94a3b8;\">T\u1ef7 Su\u1ea5t L\u1ee3i Nhu\u1eadn R\u00f2ng:<\/span>\r\n                            <strong id=\"rc-out-margin\" style=\"color:#34d399;\">32.0%<\/strong>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/section>\r\n\r\n<!-- SECTION 02: CTA -->\r\n<section class=\"px-section\" style=\"padding-top:20px;\">\r\n    <div class=\"px-container\">\r\n        <div class=\"px-cta-banner\">\r\n            <h2 style=\"font-size:clamp(26px, 3.2vw, 40px); font-weight:800; color:#fff; margin:0 0 16px 0;\">Mu\u1ed1n T\u1ed1i \u01afu ROAS & Gi\u1ea3m Chi Ph\u00ed \u0110\u01a1n H\u00e0ng?<\/h2>\r\n            <p style=\"font-size:15px; color:#94a3b8; max-width:600px; margin:0 auto 28px auto; line-height:1.6;\">Protos gi\u00fap b\u1ea1n x\u00e2y d\u1ef1ng c\u1ea5u tr\u00fac t\u00e0i kho\u1ea3n \u0111a t\u1ea7ng, t\u1ed1i \u01b0u tracking CAPI v\u00e0 ki\u1ec3m th\u1eed Creative t\u1ed1c \u0111\u1ed9 cao \u0111\u1ec3 b\u1ee9t ph\u00e1 doanh s\u1ed1.<\/p>\r\n            <div style=\"display:flex; gap:16px; justify-content:center; flex-wrap:wrap;\">\r\n                <a href=\"https:\/\/protos.vn\/en\/ve-protos\/lien-he\/\" class=\"px-btn\">Nh\u1eadn T\u01b0 V\u1ea5n T\u0103ng Tr\u01b0\u1edfng ROAS \u2197<\/a>\r\n                <a href=\"tel:0868626509\" class=\"px-btn-ghost\">Hotline: 0868 626 509<\/a>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/section>\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    const spendEl = document.getElementById('rc-spend');\r\n    const revEl = document.getElementById('rc-rev');\r\n    const cogsEl = document.getElementById('rc-cogs');\r\n    const feeEl = document.getElementById('rc-fee');\r\n    const fixedEl = document.getElementById('rc-fixed');\r\n\r\n    const outRoas = document.getElementById('rc-out-roas');\r\n    const outStatus = document.getElementById('rc-out-roas-status');\r\n    const outBe = document.getElementById('rc-out-be');\r\n    const outGross = document.getElementById('rc-out-gross');\r\n    const outNet = document.getElementById('rc-out-net');\r\n    const outMargin = document.getElementById('rc-out-margin');\r\n\r\n    function updateROAS() {\r\n        const spend = parseFloat(spendEl.value) || 0;\r\n        const rev = parseFloat(revEl.value) || 0;\r\n        const cogsPct = parseFloat(cogsEl.value) || 0;\r\n        const feePct = parseFloat(feeEl.value) || 0;\r\n        const fixed = parseFloat(fixedEl.value) || 0;\r\n\r\n        if (spend <= 0) return;\r\n        const roas = rev \/ spend;\r\n        const cogsAmount = rev * (cogsPct \/ 100);\r\n        const feeAmount = rev * (feePct \/ 100);\r\n        const grossProfit = rev - cogsAmount - feeAmount;\r\n        const netProfit = grossProfit - spend - fixed;\r\n        const netMarginPct = rev > 0 ? (netProfit \/ rev) * 100 : 0;\r\n\r\n        const contributionRatio = rev > 0 ? grossProfit \/ rev : 0;\r\n        const breakEvenRoas = contributionRatio > 0 ? (1 \/ contributionRatio) : 0;\r\n\r\n        outRoas.textContent = roas.toFixed(2) + 'x';\r\n        outBe.textContent = breakEvenRoas.toFixed(2) + 'x';\r\n        outGross.textContent = Math.round(grossProfit).toLocaleString('vi-VN') + ' \u20ab';\r\n        outNet.textContent = Math.round(netProfit).toLocaleString('vi-VN') + ' \u20ab';\r\n        outMargin.textContent = netMarginPct.toFixed(1) + '%';\r\n\r\n        if (roas < breakEvenRoas) {\r\n            outStatus.textContent = '\u26a0 \u0110ang d\u01b0\u1edbi \u0111i\u1ec3m h\u00f2a v\u1ed1n (L\u1ed7 qu\u1ea3ng c\u00e1o)';\r\n            outStatus.style.color = '#ef4444';\r\n            outNet.style.color = '#ef4444';\r\n            outMargin.style.color = '#ef4444';\r\n        } else {\r\n            outStatus.textContent = '\u2713 \u0110ang v\u1eadn h\u00e0nh c\u00f3 l\u00e3i r\u00f2ng';\r\n            outStatus.style.color = '#10b981';\r\n            outNet.style.color = '#34d399';\r\n            outMargin.style.color = '#34d399';\r\n        }\r\n    }\r\n\r\n    [spendEl, revEl, cogsEl, feeEl, fixedEl].forEach(el => el.addEventListener('input', updateROAS));\r\n    updateROAS();\r\n});\r\n<\/script>\r\n<\/div>\r\n    <\/div>\r\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":122,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"protos-full-width.php","meta":{"footnotes":""},"class_list":["post-331","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/pages\/331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/comments?post=331"}],"version-history":[{"count":1,"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/pages\/331\/revisions"}],"predecessor-version":[{"id":332,"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/pages\/331\/revisions\/332"}],"up":[{"embeddable":true,"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/pages\/122"}],"wp:attachment":[{"href":"https:\/\/protos.vn\/en\/wp-json\/wp\/v2\/media?parent=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}