{"id":580,"date":"2025-02-01T15:29:41","date_gmt":"2025-02-01T20:29:41","guid":{"rendered":"https:\/\/allinonemerchandise.com\/blog\/?page_id=580"},"modified":"2026-06-18T11:27:49","modified_gmt":"2026-06-18T15:27:49","slug":"promo-products-roi-calculator","status":"publish","type":"page","link":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/","title":{"rendered":"Promo products ROI calculator"},"content":{"rendered":"<div id=\"tdi_1\" class=\"tdc-zone\"><div class=\"tdc_zone tdi_2  wpb_row td-pb-row\"  >\n<style scoped>\n\/* custom css - generated by TagDiv Composer *\/\n\n\/* custom css - generated by TagDiv Composer *\/\n.tdi_2{\r\n                    min-height: 0;\r\n                }\n<\/style><div id=\"tdi_3\" class=\"tdc-row\"><div class=\"vc_row tdi_4  wpb_row td-pb-row\" >\n<style scoped>\n\/* custom css - generated by TagDiv Composer *\/\n\n\/* custom css - generated by TagDiv Composer *\/\n.tdi_4,\r\n                .tdi_4 .tdc-columns{\r\n                    min-height: 0;\r\n                }.tdi_4,\r\n\t\t\t\t.tdi_4 .tdc-columns{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_4 .tdc-columns{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}.tdi_4:before,\r\n\t\t\t\t.tdi_4:after{\r\n\t\t\t\t    display: table;\r\n\t\t\t\t}\n<\/style><div class=\"vc_column tdi_6  wpb_column vc_column_container tdc-column td-pb-span12\">\n<style scoped>\n\/* custom css - generated by TagDiv Composer *\/\n\n\/* custom css - generated by TagDiv Composer *\/\n.tdi_6{\r\n                    vertical-align: baseline;\r\n                }.tdi_6 > .wpb_wrapper,\r\n\t\t\t\t.tdi_6 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper > .vc_row_inner{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t    height: auto;\r\n\t\t\t\t}\n<\/style><div class=\"wpb_wrapper\" ><div class=\"wpb_wrapper td_block_wrap vc_raw_html tdi_8 \"><div class=\"td-fix-index\"><div id=\"custom-calculator\">\n\n  <h2 class=\"roi-title\">See the Real-Life Return Behind Promotional Products<\/h2>\n  <p class=\"roi-intro\">\n    See what a branded product really costs per impression. Pick a category, enter your\n    cost per item, and we&rsquo;ll calculate lifetime impressions, cost per impression and\n    ROI using the Advertising Specialty Institute&rsquo;s 2026 Global Ad Impressions Study.\n  <\/p>\n\n  <p class=\"roi-step-label\"><span class=\"roi-step-num\">1<\/span> Choose your product category<\/p>\n\n<div class=\"squares-container\">\n\n<!-- Categories ordered by 2026 ROI index ranking -->\n<!-- data-val1 = lifetime impressions (ASI 2026, U.S.) -->\n<!-- data-val2 = retention factor % (ASI 2026, see data-retnote) -->\n<!-- data-val3 = more likely to do business % (ASI 2026) -->\n<!-- data-cta-url \/ data-cta-label = optional \"shop this category\" button shown with results -->\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"1900\" data-val2=\"65\" data-val3=\"77\" data-retnote=\"65% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/writing\" data-cta-label=\"Shop Writing Instruments\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-pens.svg?text=Writing+Instruments\" alt=\"Custom branded pens and writing instruments\">\n    <span class=\"label\">Writing Instruments<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"4900\" data-val2=\"84\" data-val3=\"77\" data-retnote=\"84% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/bags\" data-cta-label=\"Shop Bags\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Bags.svg?text=Bags\" alt=\"Custom printed promotional bags\">\n    <span class=\"label\">Bags<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"750\" data-val2=\"67\" data-val3=\"63\" data-retnote=\"67% keep it for at least one year\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2026\/06\/Custom-Fridge-Magnet-Icon.svg\" alt=\"Custom promotional fridge magnets\">\n    <span class=\"label\">Magnets<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"9000\" data-val2=\"87\" data-val3=\"83\" data-retnote=\"87% keep it for more than one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/jackets\" data-cta-label=\"Shop Fleece &amp; Jackets\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Outerwear-Icon.svg?text=Fleece+and+Jackets\" alt=\"Branded fleece tops and custom jackets\">\n    <span class=\"label\">Fleece &amp; Jackets<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"3500\" data-val2=\"80\" data-val3=\"69\" data-retnote=\"80% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/custom-t-shirts\" data-cta-label=\"Shop T-shirts\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-T-shirt-Icon.svg?text=T-shirt\" alt=\"Custom printed promotional t-shirts\">\n    <span class=\"label\">T-shirt<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"600\" data-val2=\"62\" data-val3=\"67\" data-retnote=\"62% keep it for at least one year\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2026\/06\/Custom-Lanyards-Icon.svg\" alt=\"Custom buttons, lanyards and stickers\">\n    <span class=\"label\">Buttons \/ Lanyards \/ Stickers<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"4000\" data-val2=\"64\" data-val3=\"72\" data-retnote=\"64% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/headwear\" data-cta-label=\"Shop Headwear\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Headwear-Icon.svg?text=Headwear\" alt=\"Custom embroidered caps and headwear\">\n    <span class=\"label\">Headwear<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"1800\" data-val2=\"85\" data-val3=\"81\" data-retnote=\"85% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/power-banks\" data-cta-label=\"Shop Power Banks\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Power-Banks-Icon.svg?text=Power+Banks\" alt=\"Branded promotional power banks\">\n    <span class=\"label\">Power Banks<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"1200\" data-val2=\"50\" data-val3=\"79\" data-retnote=\"ASI reports nearly half keep it for more than five years (50% used)\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2026\/06\/Custom-Housewares-Icon.svg\" alt=\"Custom branded housewares and tools\">\n    <span class=\"label\">Housewares \/ Tools<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"2900\" data-val2=\"73\" data-val3=\"72\" data-retnote=\"73% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/polo-shirts\" data-cta-label=\"Shop Polo Shirts\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Polos-Shirt-Icon.svg?text=Polo+Shirt\" alt=\"Custom embroidered polo shirts\">\n    <span class=\"label\">Polo Shirt<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"1300\" data-val2=\"80\" data-val3=\"74\" data-retnote=\"80% keep it for more than one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/drinkware\" data-cta-label=\"Shop Drinkware\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Drinkware-Icon.svg?text=Drinkware\" alt=\"Branded mugs, bottles and drinkware\">\n    <span class=\"label\">Drinkware<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"1200\" data-val2=\"77\" data-val3=\"83\" data-retnote=\"77% keep it for at least one year\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Desk-Accessories-Icon.svg?text=Desk+Accessories\" alt=\"Custom branded desk accessories\">\n    <span class=\"label\">Desk Accessories<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"2300\" data-val2=\"50\" data-val3=\"76\" data-retnote=\"ASI reports more than half keep it for at least five years (50% used)\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/umbrellas\" data-cta-label=\"Shop Umbrellas\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Umbrella-Icon.svg?text=Umbrellas\" alt=\"Custom printed promotional umbrellas\">\n    <span class=\"label\">Umbrellas<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"400\" data-val2=\"64\" data-val3=\"82\" data-retnote=\"64% keep it for at least one year\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/health-wellness\" data-cta-label=\"Shop Health &amp; Safety\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Health-and-Wellbeing-Icon.svg?text=Health-and-Safety\" alt=\"Branded health, safety and wellness products\">\n    <span class=\"label\">Health &amp; Safety<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"500\" data-val2=\"61\" data-val3=\"75\" data-retnote=\"61% keep it for at least one year\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2026\/06\/Custom-Notebook-Icon.svg\" alt=\"Custom branded notebooks and notepads\">\n    <span class=\"label\">Notebooks \/ Notepads<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"550\" data-val2=\"76\" data-val3=\"64\" data-retnote=\"ASI reports 76% refer to it at least once per week (used as the retention factor)\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/calendars\" data-cta-label=\"Shop Calendars\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/Custom-Calendars.svg?text=Calendars\" alt=\"Custom printed promotional calendars\">\n    <span class=\"label\">Calendars<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"400\" data-val2=\"50\" data-val3=\"71\" data-retnote=\"ASI reports nearly half keep it for at least five years (50% used)\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/usb-flash-drives\" data-cta-label=\"Shop USB Drives\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2025\/01\/USB-Flash-Drive-Icon.svg?text=USB+Drives\" alt=\"Branded USB flash drives\">\n    <span class=\"label\">USB Drives<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"square\" role=\"button\" tabindex=\"0\" data-val1=\"1200\" data-val2=\"50\" data-val3=\"87\" data-retnote=\"ASI reports half keep it for more than five years (50% used)\" data-cta-url=\"https:\/\/allinonemerchandise.com\/catalog\/blankets\" data-cta-label=\"Shop Blankets\">\n  <div class=\"content\">\n    <img decoding=\"async\" src=\"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2026\/06\/Custom-Promotional-Blankets-Icon.svg\" alt=\"Custom branded promotional blankets\">\n    <span class=\"label\">Blankets<\/span>\n  <\/div>\n<\/div>\n\n<\/div>\n\n  <p class=\"roi-step-label\"><span class=\"roi-step-num\">2<\/span> Enter your cost per item<\/p>\n\n  <div class=\"roi-input-row\">\n    <div class=\"roi-input-wrap\">\n      <span class=\"roi-currency\">$<\/span>\n      <input id=\"costInput\" type=\"text\" inputmode=\"decimal\" placeholder=\"e.g. 2.50\" aria-label=\"Cost per item in dollars\">\n    <\/div>\n    <button id=\"calculateBtn\" type=\"button\">Calculate ROI<\/button>\n  <\/div>\n  <p id=\"inputError\" class=\"roi-error\" role=\"alert\"><\/p>\n\n  <div id=\"resultContainer\" aria-live=\"polite\">\n\n    <p class=\"roi-hero-eyebrow\" id=\"heroEyebrow\"><\/p>\n    <p class=\"roi-hero-number\"><span id=\"heroCpi\"><\/span><span class=\"roi-hero-unit\"> per impression<\/span><\/p>\n    <p class=\"roi-hero-sub\" id=\"heroSub\"><\/p>\n\n    <div class=\"roi-stats-grid\">\n      <div class=\"roi-stat\">\n        <span class=\"roi-stat-value\" id=\"lifetimeImpression\"><\/span>\n        <span class=\"roi-stat-label\">Lifetime impressions<\/span>\n      <\/div>\n      <div class=\"roi-stat\">\n        <span class=\"roi-stat-value\" id=\"moreLikeAdv\"><\/span>\n        <span class=\"roi-stat-label\">More likely to do business with you<\/span>\n      <\/div>\n      <div class=\"roi-stat\">\n        <span class=\"roi-stat-value\" id=\"retentionMetric\"><\/span>\n        <span class=\"roi-stat-label\">Retention (ASI 2026)<\/span>\n      <\/div>\n      <div class=\"roi-stat\">\n        <span class=\"roi-stat-value\" id=\"effectiveImpression\"><\/span>\n        <span class=\"roi-stat-label\">Effective impressions<\/span>\n      <\/div>\n      <div class=\"roi-stat\">\n        <span class=\"roi-stat-value\" id=\"costPerEffectiveImpression\"><\/span>\n        <span class=\"roi-stat-label\">Cost per effective impression<\/span>\n      <\/div>\n      <div class=\"roi-stat\">\n        <span class=\"roi-stat-value\" id=\"roiIndex\"><\/span>\n        <span class=\"roi-stat-label\">ROI index<\/span>\n      <\/div>\n    <\/div>\n\n    <p id=\"retNoteLine\" class=\"roi-retnote\"><\/p>\n\n    <div id=\"ctaContainer\" class=\"cta-container\">\n      <p class=\"cta-lead\" id=\"ctaLead\">Put these numbers to work for your brand<\/p>\n      <a id=\"ctaButton\" class=\"cta-button\" href=\"#\">Shop now<\/a>\n    <\/div>\n\n    <!-- ===== DYNAMIC CPM COMPARISON (added) ===== -->\n    <div id=\"roi-cpm-compare\" class=\"roi-cpm-compare\">\n      <p class=\"roi-cpm-compare-eyebrow\">How that compares<\/p>\n      <p class=\"roi-cpm-compare-lead\" id=\"roiCpmLead\"><\/p>\n      <div class=\"roi-cpm-bars\" id=\"roiCpmBars\"><\/div>\n      <p class=\"roi-cpm-compare-foot\">\n        CPM is the cost to reach 1,000 people. Your promo CPM is paid <strong>once<\/strong> and earns\n        impressions for years; channel CPMs recur with every campaign. Channel figures are 2025&ndash;2026\n        U.S. industry ranges from the\n        <a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener\">Adsposure 2026 Media CPM Benchmark<\/a>\n        and <a href=\"https:\/\/evokad.com\/social-media-advertising-guide-2026\/\" target=\"_blank\" rel=\"noopener\">Evok 2026 Social Advertising Guide<\/a>.\n      <\/p>\n    <\/div>\n    <!-- ===== END DYNAMIC CPM COMPARISON ===== -->\n\n  <\/div>\n\n  <p class=\"roi-source\">\n    Data: 2026\/2027 Global Advertising Impressions Study, Advertising Specialty Institute (U.S. findings).\n    Research provided by the Advertising Specialty Institute, &copy;2026, All Rights Reserved.\n  <\/p>\n\n  <nav class=\"roi-cat-links\" aria-label=\"Browse promotional product categories\">\n    <span class=\"roi-cat-links-title\">Browse popular categories:<\/span>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/writing\">Writing Instruments<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/bags\">Bags<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/jackets\">Fleece &amp; Jackets<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/custom-t-shirts\">T-shirts<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/headwear\">Headwear<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/power-banks\">Power Banks<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/polo-shirts\">Polo Shirts<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/drinkware\">Drinkware<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/umbrellas\">Umbrellas<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/health-wellness\">Health &amp; Wellness<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/calendars\">Calendars<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/usb-flash-drives\">USB Drives<\/a>\n    <a href=\"https:\/\/allinonemerchandise.com\/catalog\/blankets\">Blankets<\/a>\n  <\/nav>\n\n<\/div>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"WebApplication\",\n  \"name\": \"Promotional Products ROI Calculator\",\n  \"applicationCategory\": \"BusinessApplication\",\n  \"operatingSystem\": \"Web\",\n  \"description\": \"Free calculator that estimates cost per impression, lifetime impressions and ROI for promotional products, based on the Advertising Specialty Institute's 2026 Global Ad Impressions Study.\",\n  \"offers\": { \"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"USD\" }\n}\n<\/script>\n\n<style>\n  #custom-calculator {\n    width: 100%;\n    max-width: 1280px;\n    margin: 0 auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    background-color: #F7F9FC;\n    border: 1px solid #E4EAF2;\n    border-radius: 10px;\n    padding: 28px 24px;\n    box-sizing: border-box;\n    color: #333;\n  }\n\n  #custom-calculator .roi-title {\n    text-align: left;\n    color: #0A3161;\n    margin: 0 0 8px 0;\n    font-size: 26px;\n    line-height: 1.25;\n  }\n\n  #custom-calculator .roi-intro {\n    text-align: left;\n    max-width: 720px;\n    margin: 0 auto 26px 0;\n    font-size: 15px;\n    color: #555;\n    line-height: 1.55;\n  }\n\n  #custom-calculator .roi-step-label {\n    font-size: 16px;\n    font-weight: bold;\n    color: #0A3161;\n    margin: 26px 0 12px 0;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    line-height: 26px;\n  }\n\n  #custom-calculator .roi-step-label:first-of-type { margin-top: 0; }\n\n  #custom-calculator .roi-step-num {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 26px;\n    height: 26px;\n    border-radius: 50%;\n    background-color: #0A3161;\n    color: #fff;\n    font-size: 14px;\n    flex: 0 0 26px;\n    line-height: 1;\n  }\n\n  #custom-calculator .squares-container {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-bottom: 26px;\n  }\n\n  #custom-calculator .square {\n    width: 150px;\n    height: 150px;\n    border: 2px solid #D8DFE9;\n    border-radius: 8px;\n    background-color: #fff;\n    cursor: pointer;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    box-sizing: border-box;\n    transition: border-color 0.15s, box-shadow 0.15s, transform 0.1s;\n    flex-direction: column;\n    padding: 10px 6px 6px 6px;\n  }\n\n  #custom-calculator .content {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    min-width: 55%;\n    max-width: 70%;\n  }\n\n  #custom-calculator .square img {\n    max-width: 64px;\n    max-height: 64px;\n    margin-bottom: 8px;\n    display: block;\n  }\n\n  #custom-calculator .label {\n    font-size: 13px;\n    color: #333;\n    text-align: center;\n    font-weight: bold;\n    line-height: 1.25;\n  }\n\n  #custom-calculator .square:hover,\n  #custom-calculator .square:focus-visible {\n    border-color: #F06531;\n    box-shadow: 0 2px 8px rgba(240, 101, 49, 0.25);\n    outline: none;\n    transform: translateY(-1px);\n  }\n\n  #custom-calculator .square.selected {\n    border-color: #F06531;\n    background-color: #FFF4EF;\n    box-shadow: 0 0 0 1px #F06531, 0 2px 8px rgba(240, 101, 49, 0.3);\n  }\n\n  #custom-calculator .roi-input-row {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0;\n    align-items: stretch;\n    margin-bottom: 6px;\n    max-width: 460px;\n  }\n\n  #custom-calculator .roi-input-wrap {\n    position: relative;\n    flex: 1 1 220px;\n    display: flex;\n    align-items: center;\n  }\n\n  #custom-calculator .roi-currency {\n    position: absolute;\n    left: 14px;\n    top: 0;\n    height: 48px;\n    display: flex;\n    align-items: center;\n    color: #555;\n    font-size: 16px;\n    font-weight: bold;\n    line-height: 1;\n    pointer-events: none;\n  }\n\n  #custom-calculator #costInput {\n    width: 100%;\n    height: 48px;\n    padding: 0 12px 0 30px;\n    border: 1px solid #C7D0DD;\n    border-right: none;\n    border-radius: 6px 0 0 6px;\n    font-size: 16px;\n    box-sizing: border-box;\n    background: #fff;\n  }\n\n  #custom-calculator #costInput::placeholder { color: #A9B4C4; }\n\n  #custom-calculator #costInput:focus {\n    border-color: #0A3161;\n    outline: none;\n    box-shadow: inset 0 0 0 1px #0A3161;\n  }\n\n  #custom-calculator #costInput.roi-input-bad {\n    border-color: #D0342C;\n    box-shadow: inset 0 0 0 1px #D0342C;\n  }\n\n  #custom-calculator #calculateBtn {\n    background-color: #0A3161;\n    color: #fff;\n    height: 48px;\n    padding: 0 28px;\n    border: none;\n    border-radius: 0 6px 6px 0;\n    cursor: pointer;\n    font-size: 16px;\n    font-weight: bold;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    white-space: nowrap;\n    transition: background-color 0.15s;\n  }\n\n  #custom-calculator #calculateBtn:hover { background-color: #0d3f7d; }\n  #custom-calculator #calculateBtn:focus-visible {\n    outline: 2px solid #F06531;\n    outline-offset: 2px;\n  }\n\n  #custom-calculator .roi-error {\n    color: #D0342C;\n    font-size: 14px;\n    min-height: 18px;\n    margin: 4px 0 0 2px;\n  }\n\n  #custom-calculator #resultContainer {\n    display: none;\n    margin-top: 22px;\n    padding: 26px 22px;\n    border: 1px solid #E4EAF2;\n    background-color: #fff;\n    border-radius: 10px;\n    box-shadow: 0 3px 14px rgba(10, 49, 97, 0.07);\n  }\n\n  #custom-calculator #resultContainer.roi-show {\n    display: block;\n    animation: roiFadeUp 0.35s ease-out;\n  }\n\n  @keyframes roiFadeUp {\n    from { opacity: 0; transform: translateY(8px); }\n    to   { opacity: 1; transform: translateY(0); }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #custom-calculator #resultContainer.roi-show { animation: none; }\n    #custom-calculator .square,\n    #custom-calculator .cta-button { transition: none; }\n  }\n\n  #custom-calculator .roi-hero-eyebrow {\n    text-align: center;\n    margin: 0 0 4px 0;\n    font-size: 13px;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    color: #777;\n    font-weight: bold;\n  }\n\n  #custom-calculator .roi-hero-number {\n    text-align: center;\n    margin: 0;\n    color: #F06531;\n    font-size: 48px;\n    font-weight: 800;\n    line-height: 1.1;\n    font-variant-numeric: tabular-nums;\n  }\n\n  #custom-calculator .roi-hero-unit {\n    font-size: 20px;\n    font-weight: bold;\n    color: #555;\n  }\n\n  #custom-calculator .roi-hero-sub {\n    text-align: center;\n    margin: 8px auto 0 auto;\n    max-width: 560px;\n    font-size: 15px;\n    color: #555;\n    line-height: 1.5;\n  }\n\n  #custom-calculator .roi-stats-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n    gap: 10px;\n    margin-top: 22px;\n  }\n\n  #custom-calculator .roi-stat {\n    background: #F7F9FC;\n    border: 1px solid #E4EAF2;\n    border-radius: 8px;\n    padding: 12px 10px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    min-height: 86px;\n    box-sizing: border-box;\n  }\n\n  #custom-calculator .roi-stat-value {\n    display: block;\n    font-size: 20px;\n    font-weight: 800;\n    color: #0A3161;\n    margin-bottom: 3px;\n    font-variant-numeric: tabular-nums;\n  }\n\n  #custom-calculator .roi-stat-label {\n    display: block;\n    font-size: 12px;\n    color: #666;\n    line-height: 1.3;\n  }\n\n  #custom-calculator .roi-retnote {\n    margin: 14px 0 0 0;\n    font-size: 12px;\n    color: #888;\n    font-style: italic;\n    text-align: center;\n  }\n\n  #custom-calculator .cta-container {\n    display: none;\n    margin-top: 22px;\n    padding-top: 20px;\n    border-top: 1px solid #ECEFF4;\n    text-align: center;\n  }\n\n  #custom-calculator .cta-lead {\n    margin: 0 0 12px 0;\n    font-size: 16px;\n    color: #0A3161;\n    font-weight: bold;\n  }\n\n  #custom-calculator .cta-button {\n    display: inline-block;\n    background-color: #F06531;\n    color: #fff !important;\n    padding: 14px 40px;\n    border-radius: 6px;\n    font-size: 17px;\n    font-weight: bold;\n    text-decoration: none !important;\n    transition: background-color 0.15s, transform 0.1s, box-shadow 0.15s;\n    box-shadow: 0 3px 10px rgba(240, 101, 49, 0.35);\n  }\n\n  #custom-calculator .cta-button:hover {\n    background-color: #d9531f;\n    box-shadow: 0 5px 14px rgba(240, 101, 49, 0.45);\n    transform: translateY(-1px);\n    color: #fff !important;\n  }\n\n  #custom-calculator .cta-button:active { transform: translateY(0); }\n\n  \/* ===== DYNAMIC CPM COMPARISON styles (added) ===== *\/\n  #custom-calculator .roi-cpm-compare { display: none; margin-top: 22px; padding-top: 22px; border-top: 1px solid #ECEFF4; }\n  #custom-calculator .roi-cpm-compare.roi-show-flex { display: block; }\n  #custom-calculator .roi-cpm-compare-eyebrow { text-align: center; margin: 0 0 4px 0; font-size: 13px; letter-spacing: 0.06em; text-transform: uppercase; color: #777; font-weight: bold; }\n  #custom-calculator .roi-cpm-compare-lead { text-align: center; margin: 0 auto 18px auto; max-width: 640px; font-size: 15.5px; line-height: 1.55; color: #0A3161; }\n  #custom-calculator .roi-cpm-compare-lead strong { color: #F06531; }\n  #custom-calculator .roi-cpm-bars { display: flex; flex-direction: column; gap: 6px; }\n  #custom-calculator .roi-cpm-row { display: grid; grid-template-columns: 210px 1fr 84px; align-items: center; gap: 10px; }\n  #custom-calculator .roi-cpm-row-label { font-size: 13px; color: #444; text-align: right; line-height: 1.25; }\n  #custom-calculator .roi-cpm-row.is-you .roi-cpm-row-label { font-weight: 800; color: #0A3161; }\n  #custom-calculator .roi-cpm-track { background: #F0F3F8; border-radius: 5px; height: 24px; position: relative; overflow: hidden; }\n  #custom-calculator .roi-cpm-fill { height: 100%; border-radius: 5px; transition: width 0.5s ease; }\n  #custom-calculator .roi-cpm-row.is-you .roi-cpm-fill { box-shadow: inset 0 0 0 2px rgba(10,49,97,0.35); }\n  #custom-calculator .roi-cpm-val { font-size: 13px; font-weight: 800; color: #0A3161; text-align: left; white-space: nowrap; font-variant-numeric: tabular-nums; }\n  #custom-calculator .roi-cpm-row.is-you .roi-cpm-val { color: #F06531; }\n  #custom-calculator .roi-cpm-youtag { display: inline-block; margin-left: 6px; background: #F06531; color: #fff; font-size: 10px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.04em; padding: 1px 6px; border-radius: 10px; vertical-align: middle; }\n  #custom-calculator .roi-cpm-compare-foot { margin: 16px 0 0 0; font-size: 12px; color: #888; line-height: 1.55; text-align: center; }\n  #custom-calculator .roi-cpm-compare-foot strong { color: #0A3161; }\n  #custom-calculator .roi-cpm-compare-foot a { color: #4179B8; text-decoration: none; border-bottom: 1px dotted #9bb8d8; }\n  #custom-calculator .roi-cpm-compare-foot a:hover { color: #F06531; border-bottom-color: #F06531; }\n\n  #custom-calculator .roi-source {\n    margin: 18px 0 0 0;\n    font-size: 12px;\n    color: #888;\n    text-align: center;\n  }\n\n  #custom-calculator .roi-cat-links {\n    margin-top: 14px;\n    padding-top: 14px;\n    border-top: 1px solid #E4EAF2;\n    font-size: 13px;\n    color: #777;\n    text-align: center;\n    line-height: 2;\n  }\n\n  #custom-calculator .roi-cat-links-title { font-weight: bold; color: #555; margin-right: 4px; }\n\n  #custom-calculator .roi-cat-links a {\n    color: #0A3161;\n    text-decoration: none;\n    margin: 0 7px;\n    white-space: nowrap;\n  }\n\n  #custom-calculator .roi-cat-links a:hover { color: #F06531; text-decoration: underline; }\n\n  @media (max-width: 767px) {\n    #custom-calculator { padding: 20px 14px; }\n    #custom-calculator .roi-title { font-size: 22px; }\n    #custom-calculator .square { width: calc((100% - 20px) \/ 3); height: 132px; }\n    #custom-calculator .label { font-size: 12px; }\n    #custom-calculator .roi-hero-number { font-size: 38px; }\n    #custom-calculator .roi-cpm-row { grid-template-columns: 110px 1fr 64px; gap: 7px; }\n    #custom-calculator .roi-cpm-row-label { font-size: 11px; }\n    #custom-calculator .roi-cpm-val { font-size: 11.5px; }\n  }\n\n  @media (max-width: 480px) {\n    #custom-calculator .square { width: calc((100% - 10px) \/ 2); height: 128px; }\n    #custom-calculator .label { font-size: 12px; }\n    #custom-calculator .roi-input-row { max-width: none; }\n    #custom-calculator .roi-input-wrap { flex: 1 1 100%; }\n    #custom-calculator #costInput {\n      border-right: 1px solid #C7D0DD;\n      border-radius: 6px;\n    }\n    #custom-calculator #calculateBtn {\n      width: 100%;\n      margin-top: 10px;\n      border-radius: 6px;\n    }\n    #custom-calculator .cta-button { display: block; padding: 15px 12px; }\n    #custom-calculator .roi-hero-number { font-size: 34px; }\n  }\n<\/style>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  const root = document.getElementById('custom-calculator');\n  const squares = root.querySelectorAll('.square');\n  const costInput = document.getElementById('costInput');\n  const calculateBtn = document.getElementById('calculateBtn');\n  const resultContainer = document.getElementById('resultContainer');\n  const inputError = document.getElementById('inputError');\n  const ctaContainer = document.getElementById('ctaContainer');\n  const ctaButton = document.getElementById('ctaButton');\n  const ctaLead = document.getElementById('ctaLead');\n\n  let selectedSquare = null;\n\n  \/\/ ===== DYNAMIC CPM COMPARISON data + helpers (added) =====\n  \/\/ Channel CPM benchmarks (USD per 1,000 impressions), 2025-2026 U.S. industry ranges.\n  \/\/ Sources: Adsposure 2026 U.S. Media CPM Benchmark Report; Evok 2026 Social Advertising Guide.\n  \/\/ Comparison uses each channel's LOW end, so it never overstates the promo advantage.\n  const ROI_CPM_CHANNELS = [\n    { name: \"Online display ads\",                 lo: 1,  hi: 8   },\n    { name: \"Out-of-home \/ billboards\",           lo: 3,  hi: 10  },\n    { name: \"Transit (bus & shelter)\",            lo: 3,  hi: 7   },\n    { name: \"Short-form video (TikTok, YouTube)\", lo: 4,  hi: 9   },\n    { name: \"Radio (AM\/FM)\",                      lo: 4,  hi: 12  },\n    { name: \"Social media (Meta, X)\",             lo: 5,  hi: 9   },\n    { name: \"Streaming audio (Spotify, Pandora)\", lo: 10, hi: 35  },\n    { name: \"Connected TV \/ streaming\",           lo: 15, hi: 40  },\n    { name: \"Podcasts\",                           lo: 18, hi: 50  },\n    { name: \"Retail media (Amazon, Walmart)\",     lo: 20, hi: 60  },\n    { name: \"TV (broadcast & cable)\",             lo: 20, hi: 45  },\n    { name: \"Magazine\",                           lo: 25, hi: 55  },\n    { name: \"LinkedIn (B2B)\",                     lo: 33, hi: 65  },\n    { name: \"Newspaper\",                          lo: 45, hi: 180 }\n  ];\n\n  const ROI_PLURAL_CATS = [\"Bags\",\"T-shirt\",\"Polo Shirt\",\"Power Banks\",\"Umbrellas\",\"Magnets\",\n    \"Drinkware\",\"Desk Accessories\",\"Calendars\",\"USB Drives\",\"Blankets\",\"Notebooks \/ Notepads\",\n    \"Buttons \/ Lanyards \/ Stickers\",\"Fleece & Jackets\",\"Housewares \/ Tools\",\"Writing Instruments\"];\n\n  function roiCpmColor(t) {\n    let r, g, b;\n    if (t < 0.5) { const f = t \/ 0.5; r = 46 + (250 - 46) * f; g = 204; b = 64 + (40 - 64) * f; }\n    else { const f = (t - 0.5) \/ 0.5; r = 250 + (208 - 250) * f; g = 204 + (52 - 204) * f; b = 40 + (44 - 40) * f; }\n    return 'rgb(' + Math.round(r) + ',' + Math.round(g) + ',' + Math.round(b) + ')';\n  }\n\n  function renderCpmCompare(catName, cpmValue) {\n    const box = document.getElementById('roi-cpm-compare');\n    const bars = document.getElementById('roiCpmBars');\n    const lead = document.getElementById('roiCpmLead');\n    if (!box || !bars) return;\n\n    const items = ROI_CPM_CHANNELS.map(function(c) { return { name: c.name, cpm: c.lo, hi: c.hi, you: false }; });\n    items.push({ name: catName, cpm: cpmValue, hi: cpmValue, you: true });\n    items.sort(function(a, b) { return a.cpm - b.cpm; });\n\n    const maxCpm = Math.max.apply(null, items.map(function(i){ return i.cpm; }));\n    const minCpm = Math.min.apply(null, items.map(function(i){ return i.cpm; }));\n    const logMin = Math.log(Math.max(minCpm, 0.05));\n    const logMax = Math.log(maxCpm);\n\n    const beats = ROI_CPM_CHANNELS.filter(function(c){ return c.lo > cpmValue; }).length;\n    const total = ROI_CPM_CHANNELS.length;\n    const fmt = function(v) { return '$' + (v >= 10 ? v.toFixed(0) : v.toFixed(2)); };\n    const lc = catName.toLowerCase();\n    const verb = ROI_PLURAL_CATS.indexOf(catName) !== -1 ? 'are' : 'is';\n\n    if (beats >= total) {\n      lead.innerHTML = 'At <strong>' + fmt(cpmValue) + ' CPM<\/strong>, your ' + lc + ' ' + verb + ' cheaper per impression than every major ad channel below.';\n    } else if (beats === 0) {\n      lead.innerHTML = 'At <strong>' + fmt(cpmValue) + ' CPM<\/strong>, your ' + lc + ' ' + verb + ' among the pricier options here, though remember you pay it once, not every campaign.';\n    } else {\n      lead.innerHTML = 'At <strong>' + fmt(cpmValue) + ' CPM<\/strong>, your ' + lc + ' beats roughly ' + beats + ' of the ' + total + ' ad channels below on cost per impression.';\n    }\n\n    bars.innerHTML = items.map(function(it) {\n      const t = (Math.log(Math.max(it.cpm, 0.05)) - logMin) \/ ((logMax - logMin) || 1);\n      const widthPct = 6 + t * 94;\n      const fill = roiCpmColor(t);\n      const valDisp = it.you ? fmt(it.cpm) : (it.cpm === it.hi ? fmt(it.cpm) : fmt(it.cpm) + '\\u2013' + fmt(it.hi));\n      const youTag = it.you ? '<span class=\"roi-cpm-youtag\">You<\/span>' : '';\n      return '<div class=\"roi-cpm-row ' + (it.you ? 'is-you' : '') + '\">' +\n        '<div class=\"roi-cpm-row-label\">' + it.name + youTag + '<\/div>' +\n        '<div class=\"roi-cpm-track\"><div class=\"roi-cpm-fill\" style=\"width:' + widthPct.toFixed(1) + '%;background:' + fill + ';\"><\/div><\/div>' +\n        '<div class=\"roi-cpm-val\">' + valDisp + '<\/div>' +\n        '<\/div>';\n    }).join('');\n\n    box.classList.add('roi-show-flex');\n  }\n  \/\/ ===== END DYNAMIC CPM COMPARISON helpers =====\n\n  function selectSquare(sq) {\n    squares.forEach(s => s.classList.remove('selected'));\n    sq.classList.add('selected');\n    selectedSquare = sq;\n    inputError.textContent = '';\n    costInput.focus({ preventScroll: false });\n  }\n\n  squares.forEach(function(square) {\n    square.addEventListener('click', function() { selectSquare(this); });\n    square.addEventListener('keydown', function(e) {\n      if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); selectSquare(this); }\n    });\n  });\n\n  costInput.addEventListener('keydown', function(e) {\n    if (e.key === 'Enter') { e.preventDefault(); calculateResult(); }\n  });\n  costInput.addEventListener('input', function() {\n    costInput.classList.remove('roi-input-bad');\n    inputError.textContent = '';\n  });\n\n  function fmtInt(n) { return Math.round(n).toLocaleString('en-US'); }\n\n  function fmtMoney(v, maxDp) {\n    if (v >= 0.01) return '$' + v.toFixed(2);\n    return '$' + v.toFixed(maxDp);\n  }\n\n  function calculateResult() {\n    if (!selectedSquare) {\n      inputError.textContent = 'Pick a product category above first.';\n      return;\n    }\n\n    let costValue = parseFloat(costInput.value.replace(',', '.'));\n    if (isNaN(costValue) || costValue <= 0) {\n      costInput.classList.add('roi-input-bad');\n      inputError.textContent = 'Enter your cost per item \\u2014 for example 2.50';\n      costInput.focus();\n      return;\n    }\n\n    const impressions = parseFloat(selectedSquare.getAttribute('data-val1'));\n    const retention = parseFloat(selectedSquare.getAttribute('data-val2'));\n    const bizImpact = parseFloat(selectedSquare.getAttribute('data-val3'));\n    const retNote = selectedSquare.getAttribute('data-retnote') || '';\n    const catName = selectedSquare.querySelector('.label').textContent.trim();\n\n    const costPerImpression = costValue \/ impressions;\n    const effectiveImpressions = impressions * bizImpact \/ 100;\n    const costPerEffectiveImpression = costValue \/ effectiveImpressions;\n    const roiIndex = (retention \/ 100 * effectiveImpressions) \/ costValue;\n\n    document.getElementById('heroEyebrow').textContent = catName + ' \\u2014 your result';\n    document.getElementById('heroCpi').textContent = fmtMoney(costPerImpression, 4);\n    document.getElementById('heroSub').textContent =\n      'A ' + fmtMoney(costValue, 2).replace('$','$') + ' item delivers ' + fmtInt(impressions) +\n      ' impressions over its lifetime \\u2014 and ' + bizImpact.toFixed(0) +\n      '% of people who receive it are more likely to do business with you.';\n\n    document.getElementById('lifetimeImpression').textContent = fmtInt(impressions);\n    document.getElementById('moreLikeAdv').textContent = bizImpact.toFixed(0) + '%';\n    document.getElementById('retentionMetric').textContent = retention.toFixed(0) + '%';\n    document.getElementById('effectiveImpression').textContent = fmtInt(effectiveImpressions);\n    document.getElementById('costPerEffectiveImpression').textContent = fmtMoney(costPerEffectiveImpression, 5);\n    document.getElementById('roiIndex').textContent = roiIndex.toFixed(0);\n    document.getElementById('retNoteLine').textContent = retNote ? 'Retention note: ' + retNote : '';\n\n    const ctaUrl = selectedSquare.getAttribute('data-cta-url');\n    const ctaLabel = selectedSquare.getAttribute('data-cta-label');\n    if (ctaUrl) {\n      ctaButton.href = ctaUrl;\n      ctaButton.textContent = (ctaLabel || 'Shop now') + ' \\u2192';\n      ctaLead.textContent = 'Put ' + catName.toLowerCase() + ' to work for your brand';\n      ctaContainer.style.display = 'block';\n    } else {\n      ctaContainer.style.display = 'none';\n    }\n\n    \/\/ ===== DYNAMIC CPM COMPARISON call (added) =====\n    const cpmValue = (costValue \/ impressions) * 1000;   \/\/ CPM = price \/ impressions x 1000\n    renderCpmCompare(catName, cpmValue);\n\n    resultContainer.classList.add('roi-show');\n    resultContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n\n  calculateBtn.addEventListener('click', calculateResult);\n});\n<\/script><\/div><\/div><div class=\"wpb_wrapper td_block_wrap vc_raw_html tdi_10 \"><div class=\"td-fix-index\"><div id=\"roi-cpm-table\">\n\n  <div class=\"roi-ct-intro\">\n    <h2>Promotional products vs. other advertising, by cost per impression<\/h2>\n    <p>Cost per impression is where promotional products quietly outperform almost everything else in marketing. The table below puts every promo category from the calculator side by side with the major advertising channels, all in the industry-standard unit: <strong>CPM<\/strong>, the cost to reach one thousand people. Green is cheaper, red is pricier, and the ranking is honest. Some promo items beat every channel on the board; a few pricier ones land right in the mix with social media and print. That is the truth the data tells, and it is more useful than a sales pitch.<\/p>\n    <p class=\"roi-ct-method\"><strong>Methodology.<\/strong> Channel CPMs are 2025&ndash;2026 U.S. industry benchmarks, sourced per row and listed in full below. Promotional product CPMs are calculated as price per item divided by lifetime impressions, multiplied by 1,000, using typical U.S. bulk prices and the lifetime impression figures from the 2026 ASI Global Advertising Impressions Study. Last updated June 2026.<\/p>\n  <\/div>\n\n  <div class=\"roi-ct-wrap\">\n    <table class=\"roi-ct-table\">\n      <caption class=\"roi-ct-caption\">Cost per impression (CPM) of promotional products versus major U.S. advertising channels, 2026<\/caption>\n      <thead>\n        <tr>\n          <th scope=\"col\">Product or channel<\/th>\n          <th scope=\"col\">CPM <span class=\"roi-ct-th-sub\">(per 1,000 impressions)<\/span><\/th>\n          <th scope=\"col\">Basis<\/th>\n          <th scope=\"col\">Source<\/th>\n        <\/tr>\n      <\/thead>\n      <tbody>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Writing instruments &#9733;<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#2ecc40;color:#ffffff;\">$0.45<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$0.85 item \/ 1,900 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Bags &#9733;<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#52cc3b;color:#1a1a1a;\">$0.71<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$3.5 item \/ 4,900 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Magnets &#9733;<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#61cc39;color:#1a1a1a;\">$0.87<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$0.65 item \/ 750 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Buttons, lanyards &amp; stickers<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#a5cc31;color:#1a1a1a;\">$2.08<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$1.25 item \/ 600 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">T-shirts<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#a7cc31;color:#1a1a1a;\">$2.14<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$7.5 item \/ 3,500 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Headwear<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#b3cc30;color:#1a1a1a;\">$2.50<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$10 item \/ 4,000 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Fleece &amp; jackets<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#bbcc2f;color:#1a1a1a;\">$2.78<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$25 item \/ 9,000 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Online display ads<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#c1cc2e;color:#1a1a1a;\">$1&ndash;$8<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Housewares &amp; tools<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#cecc2d;color:#1a1a1a;\">$3.54<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$4.25 item \/ 1,200 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Transit (bus &amp; shelter)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#d8cc2b;color:#1a1a1a;\">$3&ndash;$7<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Umbrellas<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#decc2b;color:#1a1a1a;\">$4.35<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$10 item \/ 2,300 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Out-of-home \/ billboards<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#e9cc29;color:#1a1a1a;\">$3&ndash;$10<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Polo shirts<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#eccc29;color:#1a1a1a;\">$5.17<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$15 item \/ 2,900 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Power banks<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f1cc28;color:#1a1a1a;\">$5.56<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$10 item \/ 1,800 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Health &amp; safety<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f9cb28;color:#1a1a1a;\">$6.25<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$2.5 item \/ 400 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Drinkware<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f9c828;color:#1a1a1a;\">$6.54<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$8.5 item \/ 1,300 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Notebooks &amp; notepads<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f7c428;color:#1a1a1a;\">$7.00<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$3.5 item \/ 500 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Short-form video (TikTok, YouTube, Reels)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f7c428;color:#1a1a1a;\">$4&ndash;$9<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/evokad.com\/social-media-advertising-guide-2026\/\" target=\"_blank\" rel=\"noopener nofollow\">Evokad 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Radio (AM\/FM)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f7c428;color:#1a1a1a;\">$4&ndash;$12<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Social media (Meta, X)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f7c428;color:#1a1a1a;\">$5&ndash;$9<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/evokad.com\/social-media-advertising-guide-2026\/\" target=\"_blank\" rel=\"noopener nofollow\">Evokad 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Desk accessories<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f7c328;color:#1a1a1a;\">$7.08<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$8.5 item \/ 1,200 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Calendars<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f6be28;color:#1a1a1a;\">$7.73<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$4.25 item \/ 550 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">USB drives<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#f1ac28;color:#1a1a1a;\">$10.62<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$4.25 item \/ 400 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Blankets<span class=\"roi-ct-badge-promo\">Promo product<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#ec9b29;color:#1a1a1a;\">$14.17<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">$17 item \/ 1,200 lifetime impressions<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\" target=\"_blank\" rel=\"noopener nofollow\">AIO &middot; ASI 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Streaming audio (Spotify, Pandora)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#e78729;color:#1a1a1a;\">$10&ndash;$35<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Connected TV \/ streaming<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#e37a2a;color:#ffffff;\">$15&ndash;$40<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Podcasts<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#e1742a;color:#ffffff;\">$18&ndash;$50<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Retail media (Amazon, Walmart)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#de672a;color:#ffffff;\">$20&ndash;$60<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">TV (broadcast &amp; cable)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#de672a;color:#ffffff;\">$20&ndash;$45<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Magazine<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#dc5f2a;color:#ffffff;\">$25&ndash;$55<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">LinkedIn (B2B)<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#d8532b;color:#ffffff;\">$33&ndash;$65<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/evokad.com\/social-media-advertising-guide-2026\/\" target=\"_blank\" rel=\"noopener nofollow\">Evokad 2026<\/a><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"roi-ct-name\" data-label=\"Product \/ channel\">Newspaper<span class=\"roi-ct-badge-chan\">Ad channel<\/span><\/td>\n        <td class=\"roi-ct-cpm\" data-label=\"CPM (per 1,000)\" style=\"background:#d0342c;color:#ffffff;\">$45&ndash;$180<\/td>\n        <td class=\"roi-ct-detail\" data-label=\"Basis\">Industry range, 2025&ndash;2026<\/td>\n        <td class=\"roi-ct-src\" data-label=\"Source\"><a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener nofollow\">Adsposure 2026<\/a><\/td>\n      <\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <div class=\"roi-ct-note\">\n    <p><strong>How to read this, honestly.<\/strong> Two things matter and a single table cannot show both at once. First, a promotional product's CPM is a <em>one-time<\/em> cost spread across the item's whole lifetime, often several years. A channel CPM is <em>recurring<\/em>: you pay it again for every new thousand impressions, every campaign. That asymmetry is the real headline, pay once for a pen and get seen for years. Second, an impression is not always equal. A targeted, sound-on social video and a glance at a logo on a mug both count as impressions, but they carry different attention and intent. Promotional products win decisively on cost and longevity. They do not win on instant reach or precise targeting, so they work best as the durable, always-on layer of a media mix rather than a one-to-one replacement for digital.<\/p>\n    <p class=\"roi-ct-fineprint\">&#9733; marks the three lowest-cost promo categories. Promo CPMs shift with what you actually pay per item, so use the calculator above for your exact numbers. Channel ranges are directional industry averages, not fixed rates, and real costs vary by market, season, targeting, and competition. LinkedIn is shown separately from other social platforms because its B2B CPMs run several times higher.<\/p>\n  <\/div>\n\n  <div class=\"roi-ct-sources\">\n    <h3>Sources &amp; citations<\/h3>\n    <ul>\n      <li id=\"roi-ref-adsposure\"><strong>Adsposure.<\/strong> <a href=\"https:\/\/www.adsposure.com\/cpm\/\" target=\"_blank\" rel=\"noopener\">2026 U.S. Media CPM Benchmark Report<\/a> (Version 1.0, April 2026). Cross-channel CPM benchmarks built on Solomon Partners methodology across 23 U.S. media categories. Used for display, out-of-home, transit, radio, streaming audio, connected TV, podcasts, retail media, TV, magazine, and newspaper figures.<\/li>\n      <li id=\"roi-ref-evokad\"><strong>Evok Advertising.<\/strong> <a href=\"https:\/\/evokad.com\/social-media-advertising-guide-2026\/\" target=\"_blank\" rel=\"noopener\">The Social Media Advertising Platform Guide 2026<\/a> (March 2026), drawing on the Gupta Media Social CPM Tracker. Used for social media (Meta, X), short-form video (TikTok, YouTube, Reels), and LinkedIn B2B figures.<\/li>\n      <li id=\"roi-ref-asi\"><strong>Advertising Specialty Institute.<\/strong> 2026 Global Advertising Impressions Study (U.S. findings), as analyzed in our own <a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\">guide to promotional products with the best ROI<\/a>. Used for all promotional product lifetime impression figures.<\/li>\n    <\/ul>\n  <\/div>\n\n<\/div>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Dataset\",\n  \"name\": \"Promotional Products vs. Advertising Channels: 2026 Cost Per Impression (CPM) Comparison\",\n  \"description\": \"A cost-per-impression (CPM) comparison of 18 promotional product categories against 14 major U.S. advertising channels, using 2025-2026 industry benchmarks and the 2026 ASI Global Advertising Impressions Study.\",\n  \"creator\": { \"@type\": \"Organization\", \"name\": \"All In One Merchandise\", \"url\": \"https:\/\/allinonemerchandise.com\/\" },\n  \"dateModified\": \"2026-06-17\",\n  \"keywords\": [\"CPM\", \"cost per impression\", \"promotional products\", \"advertising benchmarks\", \"media comparison\"],\n  \"citation\": [\n    \"Adsposure 2026 U.S. Media CPM Benchmark Report, https:\/\/www.adsposure.com\/cpm\/\",\n    \"Evok Advertising, The Social Media Advertising Platform Guide 2026, https:\/\/evokad.com\/social-media-advertising-guide-2026\/\",\n    \"Advertising Specialty Institute, 2026 Global Advertising Impressions Study\"\n  ]\n}\n<\/script>\n\n<style>\n  #roi-cpm-table {\n    width: 100%; max-width: 1280px; margin: 30px auto 0 auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    color: #333; box-sizing: border-box;\n  }\n  #roi-cpm-table .roi-ct-intro {\n    background-color: #F7F9FC; border: 1px solid #E4EAF2; border-left: 4px solid #F06531;\n    border-radius: 10px; padding: 22px 24px; margin-bottom: 22px;\n  }\n  #roi-cpm-table .roi-ct-intro h2 { margin: 0 0 10px 0; color: #0A3161; font-size: 23px; line-height: 1.25; }\n  #roi-cpm-table .roi-ct-intro p { margin: 0 0 12px 0; font-size: 15px; line-height: 1.65; color: #444; }\n  #roi-cpm-table .roi-ct-method { font-size: 13px !important; color: #667 !important; margin-bottom: 0 !important; }\n  #roi-cpm-table .roi-ct-method strong { color: #0A3161; }\n\n  #roi-cpm-table .roi-ct-wrap {\n    overflow-x: auto; border: 1px solid #E4EAF2; border-radius: 10px;\n    box-shadow: 0 3px 14px rgba(10, 49, 97, 0.06);\n  }\n  #roi-cpm-table .roi-ct-caption { caption-side: top; text-align: left; font-size: 12px; color: #888; padding: 0 0 8px 2px; }\n  #roi-cpm-table .roi-ct-table { width: 100%; border-collapse: collapse; min-width: 640px; background: #fff; }\n  #roi-cpm-table .roi-ct-table thead th {\n    background: #0A3161; color: #fff; text-align: left; padding: 14px 16px;\n    font-size: 14px; font-weight: bold; white-space: nowrap;\n  }\n  #roi-cpm-table .roi-ct-th-sub { font-weight: 400; color: #B9CFE9; font-size: 12px; }\n  #roi-cpm-table .roi-ct-table td { padding: 11px 16px; border-top: 1px solid #EEF2F7; font-size: 14px; vertical-align: middle; }\n  #roi-cpm-table .roi-ct-name { font-weight: 600; color: #0A3161; }\n  #roi-cpm-table .roi-ct-cpm { font-weight: 800; text-align: center; white-space: nowrap; font-variant-numeric: tabular-nums; letter-spacing: 0.3px; }\n  #roi-cpm-table .roi-ct-detail { font-size: 12.5px; color: #777; white-space: nowrap; }\n  #roi-cpm-table .roi-ct-src { font-size: 12.5px; white-space: nowrap; }\n  #roi-cpm-table .roi-ct-src a { color: #4179B8; text-decoration: none; border-bottom: 1px dotted #9bb8d8; }\n  #roi-cpm-table .roi-ct-src a:hover { color: #F06531; border-bottom-color: #F06531; }\n  #roi-cpm-table .roi-ct-badge-promo, #roi-cpm-table .roi-ct-badge-chan {\n    display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 20px;\n    font-size: 10.5px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.04em; vertical-align: middle;\n  }\n  #roi-cpm-table .roi-ct-badge-promo { background: #FFF0E9; color: #F06531; }\n  #roi-cpm-table .roi-ct-badge-chan { background: #EAF1FB; color: #4179B8; }\n\n  #roi-cpm-table .roi-ct-note { margin-top: 18px; }\n  #roi-cpm-table .roi-ct-note p { font-size: 14px; line-height: 1.6; color: #555; margin: 0 0 12px 0; }\n  #roi-cpm-table .roi-ct-note .roi-ct-fineprint { font-size: 12px; color: #888; }\n  #roi-cpm-table .roi-ct-note strong { color: #0A3161; }\n\n  #roi-cpm-table .roi-ct-sources { margin-top: 22px; padding: 20px 22px; background: #F7F9FC; border: 1px solid #E4EAF2; border-radius: 10px; }\n  #roi-cpm-table .roi-ct-sources h3 { margin: 0 0 12px 0; font-size: 15px; color: #0A3161; }\n  #roi-cpm-table .roi-ct-sources ul { margin: 0; padding-left: 18px; }\n  #roi-cpm-table .roi-ct-sources li { font-size: 12.5px; line-height: 1.6; color: #666; margin-bottom: 10px; }\n  #roi-cpm-table .roi-ct-sources a { color: #0A3161; font-weight: 600; text-decoration: none; border-bottom: 1px solid rgba(240,101,49,0.4); }\n  #roi-cpm-table .roi-ct-sources a:hover { color: #F06531; border-bottom-color: #F06531; }\n  #roi-cpm-table .roi-ct-sources strong { color: #0A3161; }\n\n  @media (max-width: 767px) {\n    #roi-cpm-table .roi-ct-intro { padding: 18px 16px; }\n    #roi-cpm-table .roi-ct-intro h2 { font-size: 20px; }\n\n    \/* Stacked-card layout: no horizontal scrolling on mobile *\/\n    #roi-cpm-table .roi-ct-wrap { overflow-x: visible; border: none; box-shadow: none; border-radius: 0; }\n    #roi-cpm-table .roi-ct-table { min-width: 0; width: 100%; }\n    #roi-cpm-table .roi-ct-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\n    #roi-cpm-table .roi-ct-caption { padding-left: 0; }\n    #roi-cpm-table .roi-ct-table tr {\n      display: block;\n      background: #fff;\n      border: 1px solid #E4EAF2;\n      border-radius: 10px;\n      box-shadow: 0 2px 10px rgba(10,49,97,0.06);\n      padding: 6px 14px 10px 14px;\n      margin-bottom: 10px;\n    }\n    #roi-cpm-table .roi-ct-table td {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 14px;\n      padding: 6px 0;\n      border-top: none;\n      border-bottom: none;\n      text-align: right;\n    }\n    #roi-cpm-table .roi-ct-table td::before {\n      content: attr(data-label);\n      font-size: 11px;\n      font-weight: bold;\n      text-transform: uppercase;\n      letter-spacing: 0.03em;\n      color: #889;\n      text-align: left;\n      flex: 0 0 auto;\n      margin-right: auto;\n    }\n    \/* The product name leads each card as a bold header row *\/\n    #roi-cpm-table .roi-ct-table td.roi-ct-name {\n      display: block;\n      text-align: left;\n      font-size: 15.5px;\n      padding: 6px 0 10px 0;\n      border-bottom: 1px solid #ECEFF4;\n      margin-bottom: 4px;\n    }\n    #roi-cpm-table .roi-ct-table td.roi-ct-name::before { display: none; }\n    #roi-cpm-table .roi-ct-name .roi-ct-badge-promo,\n    #roi-cpm-table .roi-ct-name .roi-ct-badge-chan { margin-left: 8px; }\n    \/* CPM pill keeps its heat color but sits compact on the right *\/\n    #roi-cpm-table .roi-ct-table td.roi-ct-cpm {\n      border-radius: 6px;\n      padding: 9px 12px;\n      margin: 8px 0 10px 0;\n      font-size: 15px;\n      justify-content: space-between;\n    }\n    #roi-cpm-table .roi-ct-table td.roi-ct-cpm::before { color: rgba(0,0,0,0.55); }\n    #roi-cpm-table .roi-ct-detail, #roi-cpm-table .roi-ct-src { font-size: 12.5px; }\n  }\n<\/style>\n\n\n<div id=\"roi-explainer\">\n\n  <div class=\"roi-x-intro\">\n    <h2>What this calculator is really telling you<\/h2>\n    <p>A branded pen costs less than a dollar. A branded jacket can cost thirty. So which one is the smarter buy? The honest answer is that price alone can't tell you, and that's the whole reason this tool exists. It takes the one figure you already know, what you pay per item, and turns it into the numbers that actually decide value: how cheaply you're buying each impression, how many of those impressions come from people inclined to buy from you, and an overall ROI score you can compare across categories. Everything is powered by the Advertising Specialty Institute's 2026\/2027 Global Advertising Impressions Study, U.S. findings.<\/p>\n  <\/div>\n\n  <h3 class=\"roi-x-h\">The math, in plain English<\/h3>\n  <p class=\"roi-x-lead\">Four small calculations sit behind every result. None of them are complicated, and once you've seen them the numbers stop feeling like a black box.<\/p>\n\n  <div class=\"roi-x-formula-grid\">\n    <div class=\"roi-x-formula\">\n      <span class=\"roi-x-formula-tag\">Cost per impression<\/span>\n      <span class=\"roi-x-formula-eq\">cost per item &divide; lifetime impressions<\/span>\n      <p>The headline figure, what it costs you every single time someone lays eyes on your brand.<\/p>\n    <\/div>\n    <div class=\"roi-x-formula\">\n      <span class=\"roi-x-formula-tag\">Effective impressions<\/span>\n      <span class=\"roi-x-formula-eq\">lifetime impressions &times; % likely to buy<\/span>\n      <p>Raw reach is nice, but reach weighted by genuine buying intent is what you're actually paying for.<\/p>\n    <\/div>\n    <div class=\"roi-x-formula\">\n      <span class=\"roi-x-formula-tag\">Cost per effective impression<\/span>\n      <span class=\"roi-x-formula-eq\">cost per item &divide; effective impressions<\/span>\n      <p>The same idea as cost per impression, but counting only the views that carry commercial weight.<\/p>\n    <\/div>\n    <div class=\"roi-x-formula\">\n      <span class=\"roi-x-formula-tag\">ROI index<\/span>\n      <span class=\"roi-x-formula-eq\">(retention &times; effective impressions) &divide; cost<\/span>\n      <p>One score that rewards what's cheap, kept for a long time, and good at winning business. Higher wins.<\/p>\n    <\/div>\n  <\/div>\n\n  <h3 class=\"roi-x-h\">What you're looking at<\/h3>\n  <p class=\"roi-x-lead\">Each result on the card above answers a slightly different question.<\/p>\n  <dl class=\"roi-x-deflist\">\n    <div class=\"roi-x-def\">\n      <dt>Lifetime impressions<\/dt>\n      <dd>How many times a single item gets seen across its whole useful life, measured by ASI rather than guessed at.<\/dd>\n    <\/div>\n    <div class=\"roi-x-def\">\n      <dt>More likely to do business with you<\/dt>\n      <dd>The slice of people who say that receiving the product genuinely nudges them toward buying from the advertiser.<\/dd>\n    <\/div>\n    <div class=\"roi-x-def\">\n      <dt>Retention (ASI 2026)<\/dt>\n      <dd>How long the thing survives in someone's life. Usually that's the share who keep it a year or more. A handful of long-lived categories (blankets, umbrellas, housewares, USB drives) are measured over five years, and calendars are measured by weekly use, so the tool spells out which metric it used right under your result.<\/dd>\n    <\/div>\n    <div class=\"roi-x-def\">\n      <dt>ROI index<\/dt>\n      <dd>Your shortcut for comparing categories side by side. Pens, bags, and magnets usually top the chart because they're cheap and they stick around.<\/dd>\n    <\/div>\n  <\/dl>\n\n  <div class=\"roi-x-example\">\n    <span class=\"roi-x-example-eyebrow\">Worked example<\/span>\n    <p>Picture branded pens at <strong>$0.85<\/strong> apiece. Over their life they rack up roughly <strong>1,900 impressions<\/strong>, which lands cost per impression at about <strong>$0.0004<\/strong>. That's not a typo, it's four hundredths of a cent. Now layer in the fact that 77% of people warm to a brand that hands them a pen, and those 1,900 views become around <strong>1,463 effective impressions<\/strong> and an <strong>ROI index near 1,100<\/strong>, the best mark in the entire study. It's a useful reminder that the flashiest giveaway and the smartest one are rarely the same item.<\/p>\n  <\/div>\n\n  <h2 class=\"roi-x-faq-title\">Questions people actually ask<\/h2>\n\n  <div class=\"roi-x-faq\">\n    <details open>\n      <summary>Which promotional products have the best ROI?<\/summary>\n      <div class=\"roi-x-faq-body\">\n        <p>Writing instruments, bags, and magnets come out on top in the 2026 ASI data. The pattern is simple once you spot it: each one is cheap to buy, gets kept for ages, and quietly works every day. Premium pieces like fleece jackets and food gifts don't win on raw cost efficiency, but they crush it on favorability and the likelihood of doing business, which is why the smartest campaigns tend to run a cheap high-reach item alongside one premium gift. The <a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\">full ranking lives here<\/a>.<\/p>\n      <\/div>\n    <\/details>\n    <details>\n      <summary>How do you calculate the ROI of a promotional product?<\/summary>\n      <div class=\"roi-x-faq-body\">\n        <p>Begin with cost per impression: the item's price divided by the impressions it earns over its lifetime. To bring real business value into it, multiply those lifetime impressions by the share of people more likely to buy from you afterward, which gives effective impressions, then weight the result by how long people hang onto the product. This calculator handles all of that the moment you type in your cost per item, using ASI's 2026 impression data.<\/p>\n      <\/div>\n    <\/details>\n    <details>\n      <summary>What counts as a good cost per impression?<\/summary>\n      <div class=\"roi-x-faq-body\">\n        <p>Promotional products are one of the cheapest ad formats going. The typical item costs a fraction of a cent per impression, and the front-runners (pens, bags, magnets) hover near a tenth of a cent. Stack that against most digital or print channels, which run many times higher per view, and it's clear why branded merchandise keeps winning the cost-per-impression argument over the long haul.<\/p>\n      <\/div>\n    <\/details>\n    <details>\n      <summary>How many impressions does a promotional product generate?<\/summary>\n      <div class=\"roi-x-faq-body\">\n        <p>That swings widely by category. ASI's 2026 numbers put fleece and jackets out front at roughly 9,000 lifetime impressions, with bags at 4,900 and headwear at 4,000, while smaller items like USB drives and health and safety products land in the low hundreds. Across everything, the average promotional product earns about 3,300 impressions over its lifetime.<\/p>\n      <\/div>\n    <\/details>\n    <details>\n      <summary>Where does the data come from?<\/summary>\n      <div class=\"roi-x-faq-body\">\n        <p>Every figure traces back to the 2026\/2027 Global Advertising Impressions Study by the Advertising Specialty Institute, the longest-running research of its kind, first run in 2006. It draws on thousands of online surveys from consumers across the United States, Canada, Mexico, and much of Europe. Since this tool is built for a U.S. audience, it uses the U.S. findings only. You can read the <a href=\"https:\/\/media.asicentral.com\/resources\/AdImpressionStudy\/Ad-Impressions-2026.pdf\">source study<\/a> or our <a href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-with-the-best-roi\/\">full breakdown of the best-ROI products<\/a>.<\/p>\n      <\/div>\n    <\/details>\n    <details>\n      <summary>Is the calculator free?<\/summary>\n      <div class=\"roi-x-faq-body\">\n        <p>Completely free, no sign-up, no catch. And if you'd rather not sort through the categories alone, the team at <a href=\"https:\/\/allinonemerchandise.com\/\">All In One Merchandise<\/a> stores and prints everything in the USA and is happy to build a recommendation around your goals and budget.<\/p>\n      <\/div>\n    <\/details>\n  <\/div>\n\n  <p class=\"roi-x-source\"><em>Research provided by the Advertising Specialty Institute, &copy;2026, All Rights Reserved.<\/em><\/p>\n\n<\/div>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Which promotional products have the best ROI?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Writing instruments, bags, and magnets deliver the best ROI in the 2026 ASI data, because each is cheap to buy, kept for a long time, and used regularly. Premium items like fleece jackets and food gifts score lower on cost efficiency but higher on favorability and business impact, so many campaigns pair a low-cost high-reach item with one premium gift.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do you calculate the ROI of a promotional product?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Start with cost per impression: the item's price divided by the impressions it generates over its lifetime. Multiply lifetime impressions by the percentage of people more likely to buy from you afterward to get effective impressions, then weight by how long people keep the product. This calculator runs those steps automatically using ASI's 2026 impression data once you enter your cost per item.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What counts as a good cost per impression for promotional products?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Promotional products are among the cheapest ad formats available. The typical item costs a fraction of a cent per impression, and the strongest categories such as pens, bags, and magnets sit near one tenth of a cent, far below most digital and print channels on a per-view basis.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How many impressions does a promotional product generate?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"It varies by category. ASI's 2026 study puts fleece and jackets highest at about 9,000 lifetime impressions, with bags at 4,900 and headwear at 4,000, while smaller items like USB drives and health and safety products generate a few hundred. The average promotional product produces roughly 3,300 impressions over its lifetime.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Where does the data come from?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"All figures come from the 2026\/2027 Global Advertising Impressions Study by the Advertising Specialty Institute, first launched in 2006. It is based on thousands of online surveys taken by consumers across the United States, Canada, Mexico, and much of Europe. This calculator uses the U.S. findings only.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is the promotional products ROI calculator free?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, the calculator is completely free to use with no sign-up required.\"\n      }\n    }\n  ]\n}\n<\/script>\n\n<style>\n  \/* ---- ROI explainer: matched to #custom-calculator design tokens ---- *\/\n  #roi-explainer {\n    width: 100%;\n    max-width: 1280px;\n    margin: 22px auto 0 auto;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n    color: #333;\n    box-sizing: border-box;\n  }\n\n  #roi-explainer h2,\n  #roi-explainer h3 { color: #0A3161; }\n\n  \/* Intro card: mirrors the calculator's soft panel *\/\n  #roi-explainer .roi-x-intro {\n    background-color: #F7F9FC;\n    border: 1px solid #E4EAF2;\n    border-left: 4px solid #F06531;\n    border-radius: 10px;\n    padding: 22px 24px;\n    margin-bottom: 30px;\n  }\n  #roi-explainer .roi-x-intro h2 { margin: 0 0 10px 0; font-size: 24px; line-height: 1.25; }\n  #roi-explainer .roi-x-intro p { margin: 0; font-size: 15px; line-height: 1.65; color: #444; }\n\n  #roi-explainer .roi-x-h {\n    font-size: 20px;\n    margin: 34px 0 6px 0;\n    line-height: 1.3;\n  }\n  #roi-explainer .roi-x-lead {\n    font-size: 15px;\n    color: #555;\n    line-height: 1.6;\n    margin: 0 0 18px 0;\n    max-width: 760px;\n  }\n\n  \/* Formula cards: echo the .roi-stat grid from the calculator *\/\n  #roi-explainer .roi-x-formula-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n    gap: 12px;\n    margin-bottom: 8px;\n  }\n  #roi-explainer .roi-x-formula {\n    background: #fff;\n    border: 1px solid #E4EAF2;\n    border-radius: 8px;\n    padding: 16px 16px 14px 16px;\n    box-shadow: 0 3px 14px rgba(10, 49, 97, 0.06);\n  }\n  #roi-explainer .roi-x-formula-tag {\n    display: inline-block;\n    font-size: 11px;\n    font-weight: bold;\n    letter-spacing: 0.05em;\n    text-transform: uppercase;\n    color: #F06531;\n    margin-bottom: 8px;\n  }\n  #roi-explainer .roi-x-formula-eq {\n    display: block;\n    font-size: 14px;\n    font-weight: bold;\n    color: #0A3161;\n    background: #F7F9FC;\n    border-radius: 6px;\n    padding: 8px 10px;\n    margin-bottom: 10px;\n    font-variant-numeric: tabular-nums;\n  }\n  #roi-explainer .roi-x-formula p { margin: 0; font-size: 13.5px; color: #555; line-height: 1.5; }\n\n  \/* Definition list *\/\n  #roi-explainer .roi-x-deflist { margin: 0; }\n  #roi-explainer .roi-x-def {\n    padding: 14px 0;\n    border-bottom: 1px solid #ECEFF4;\n  }\n  #roi-explainer .roi-x-def:last-child { border-bottom: none; }\n  #roi-explainer .roi-x-def dt {\n    font-size: 15px;\n    font-weight: bold;\n    color: #0A3161;\n    margin-bottom: 4px;\n  }\n  #roi-explainer .roi-x-def dd {\n    margin: 0;\n    font-size: 14.5px;\n    color: #555;\n    line-height: 1.6;\n  }\n\n  \/* Worked example: navy feature block, the visual \"payoff\" beat *\/\n  #roi-explainer .roi-x-example {\n    background: linear-gradient(135deg, #0A3161 0%, #0d3f7d 100%);\n    border-radius: 10px;\n    padding: 22px 24px;\n    margin: 30px 0;\n    box-shadow: 0 6px 22px rgba(10, 49, 97, 0.18);\n  }\n  #roi-explainer .roi-x-example-eyebrow {\n    display: block;\n    font-size: 12px;\n    font-weight: bold;\n    letter-spacing: 0.07em;\n    text-transform: uppercase;\n    color: #9DC0EC;\n    margin-bottom: 8px;\n  }\n  #roi-explainer .roi-x-example p { margin: 0; font-size: 15.5px; line-height: 1.7; color: #EAF1FB; }\n  #roi-explainer .roi-x-example strong { color: #fff; }\n\n  \/* FAQ *\/\n  #roi-explainer .roi-x-faq-title {\n    font-size: 22px;\n    margin: 4px 0 16px 0;\n  }\n  #roi-explainer .roi-x-faq { display: flex; flex-direction: column; gap: 10px; }\n  #roi-explainer .roi-x-faq details {\n    background: #fff;\n    border: 1px solid #E4EAF2;\n    border-radius: 8px;\n    overflow: hidden;\n    transition: border-color 0.15s, box-shadow 0.15s;\n  }\n  #roi-explainer .roi-x-faq details[open] {\n    border-color: #C7D6EA;\n    box-shadow: 0 3px 14px rgba(10, 49, 97, 0.07);\n  }\n  #roi-explainer .roi-x-faq summary {\n    cursor: pointer;\n    list-style: none;\n    padding: 16px 46px 16px 18px;\n    font-size: 16px;\n    font-weight: bold;\n    color: #0A3161;\n    position: relative;\n    line-height: 1.4;\n  }\n  #roi-explainer .roi-x-faq summary::-webkit-details-marker { display: none; }\n  #roi-explainer .roi-x-faq summary::after {\n    content: \"+\";\n    position: absolute;\n    right: 18px;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 24px;\n    height: 24px;\n    line-height: 22px;\n    text-align: center;\n    border-radius: 50%;\n    background: #F7F9FC;\n    color: #F06531;\n    font-size: 20px;\n    font-weight: bold;\n    transition: transform 0.2s ease, background 0.15s;\n  }\n  #roi-explainer .roi-x-faq details[open] summary::after {\n    content: \"\\2212\";\n    background: #F06531;\n    color: #fff;\n  }\n  #roi-explainer .roi-x-faq summary:hover { color: #F06531; }\n  #roi-explainer .roi-x-faq-body {\n    padding: 0 18px 18px 18px;\n  }\n  #roi-explainer .roi-x-faq-body p {\n    margin: 0;\n    font-size: 14.5px;\n    color: #555;\n    line-height: 1.65;\n  }\n  #roi-explainer .roi-x-faq a,\n  #roi-explainer .roi-x-intro a,\n  #roi-explainer .roi-x-def a {\n    color: #0A3161;\n    font-weight: 600;\n    text-decoration: none;\n    border-bottom: 1px solid rgba(240, 101, 49, 0.4);\n  }\n  #roi-explainer .roi-x-faq a:hover,\n  #roi-explainer .roi-x-intro a:hover { color: #F06531; border-bottom-color: #F06531; }\n\n  #roi-explainer .roi-x-source {\n    margin: 22px 0 0 0;\n    font-size: 12px;\n    color: #888;\n    text-align: center;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #roi-explainer .roi-x-faq details,\n    #roi-explainer .roi-x-faq summary::after { transition: none; }\n  }\n\n  @media (max-width: 767px) {\n    #roi-explainer .roi-x-intro { padding: 18px 16px; }\n    #roi-explainer .roi-x-intro h2 { font-size: 21px; }\n    #roi-explainer .roi-x-example { padding: 18px 16px; }\n    #roi-explainer .roi-x-faq summary { font-size: 15px; }\n  }\n<\/style>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-pagebuilder-title.php","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-580","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Promotional Products 2026 ROI Calculator | Cost Per Impression<\/title>\n<meta name=\"description\" content=\"Free ROI calculator for promotional products. Enter your cost per item to see cost per impression, lifetime impressions, and ROI from ASI 2026 data.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Promotional Products 2026 ROI Calculator | Cost Per Impression\" \/>\n<meta property=\"og:description\" content=\"Free ROI calculator for promotional products. Enter your cost per item to see cost per impression, lifetime impressions, and ROI from ASI 2026 data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"All In One Merchandise Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/allinonemerchandiseusa\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-18T15:27:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/promo-products-roi-calculator\\\/\",\"url\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/promo-products-roi-calculator\\\/\",\"name\":\"Promotional Products 2026 ROI Calculator | Cost Per Impression\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/#website\"},\"datePublished\":\"2025-02-01T20:29:41+00:00\",\"dateModified\":\"2026-06-18T15:27:49+00:00\",\"description\":\"Free ROI calculator for promotional products. Enter your cost per item to see cost per impression, lifetime impressions, and ROI from ASI 2026 data.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/promo-products-roi-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/promo-products-roi-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/promo-products-roi-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Promo products ROI calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/\",\"name\":\"All In One Merchandise Blog\",\"description\":\"Blog on promotional products\",\"publisher\":{\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/#organization\",\"name\":\"All In One Merchandise LLC\",\"url\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/All-In-One-Merchandise-LLC-USA-Blog-Retina-Logo.png\",\"contentUrl\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/All-In-One-Merchandise-LLC-USA-Blog-Retina-Logo.png\",\"width\":544,\"height\":180,\"caption\":\"All In One Merchandise LLC\"},\"image\":{\"@id\":\"https:\\\/\\\/allinonemerchandise.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/allinonemerchandiseusa\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/all-in-one-merchandise\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Promotional Products 2026 ROI Calculator | Cost Per Impression","description":"Free ROI calculator for promotional products. Enter your cost per item to see cost per impression, lifetime impressions, and ROI from ASI 2026 data.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Promotional Products 2026 ROI Calculator | Cost Per Impression","og_description":"Free ROI calculator for promotional products. Enter your cost per item to see cost per impression, lifetime impressions, and ROI from ASI 2026 data.","og_url":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/","og_site_name":"All In One Merchandise Blog","article_publisher":"https:\/\/www.facebook.com\/allinonemerchandiseusa","article_modified_time":"2026-06-18T15:27:49+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/","url":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/","name":"Promotional Products 2026 ROI Calculator | Cost Per Impression","isPartOf":{"@id":"https:\/\/allinonemerchandise.com\/blog\/#website"},"datePublished":"2025-02-01T20:29:41+00:00","dateModified":"2026-06-18T15:27:49+00:00","description":"Free ROI calculator for promotional products. Enter your cost per item to see cost per impression, lifetime impressions, and ROI from ASI 2026 data.","breadcrumb":{"@id":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/allinonemerchandise.com\/blog\/promo-products-roi-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/allinonemerchandise.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Promo products ROI calculator"}]},{"@type":"WebSite","@id":"https:\/\/allinonemerchandise.com\/blog\/#website","url":"https:\/\/allinonemerchandise.com\/blog\/","name":"All In One Merchandise Blog","description":"Blog on promotional products","publisher":{"@id":"https:\/\/allinonemerchandise.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/allinonemerchandise.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/allinonemerchandise.com\/blog\/#organization","name":"All In One Merchandise LLC","url":"https:\/\/allinonemerchandise.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/allinonemerchandise.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2024\/01\/All-In-One-Merchandise-LLC-USA-Blog-Retina-Logo.png","contentUrl":"https:\/\/allinonemerchandise.com\/blog\/wp-content\/uploads\/2024\/01\/All-In-One-Merchandise-LLC-USA-Blog-Retina-Logo.png","width":544,"height":180,"caption":"All In One Merchandise LLC"},"image":{"@id":"https:\/\/allinonemerchandise.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/allinonemerchandiseusa","https:\/\/www.linkedin.com\/company\/all-in-one-merchandise"]}]}},"_links":{"self":[{"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/pages\/580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/comments?post=580"}],"version-history":[{"count":38,"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/pages\/580\/revisions"}],"predecessor-version":[{"id":977,"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/pages\/580\/revisions\/977"}],"wp:attachment":[{"href":"https:\/\/allinonemerchandise.com\/blog\/wp-json\/wp\/v2\/media?parent=580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}