{"id":12278,"date":"2026-02-27T20:43:22","date_gmt":"2026-02-27T20:43:22","guid":{"rendered":"https:\/\/loyalty.kangaroorewards.com\/?page_id=12278"},"modified":"2026-03-12T14:38:39","modified_gmt":"2026-03-12T14:38:39","slug":"roi","status":"publish","type":"page","link":"https:\/\/loyalty.kangaroorewards.com\/fr\/roi\/","title":{"rendered":"Loyalty Program ROI Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12278\" class=\"elementor elementor-12278\">\n\t\t\t\t<div class=\"elementor-element elementor-element-978c05b e-flex e-con-boxed animejs-disable e-con e-parent\" data-id=\"978c05b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f8dba3 animejs-disable elementor-widget elementor-widget-spacer\" data-id=\"4f8dba3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-970ac37 animejs-disable elementor-widget elementor-widget-heading\" data-id=\"970ac37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How much more can you make\nwith loyalty &amp; referrals?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d67933 animejs-disable elementor-widget elementor-widget-text-editor\" data-id=\"5d67933\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<header><p class=\"subtitle\" style=\"text-align: center;\">Answer a few questions about your business and see your estimated additional revenue \u2014 instantly.<\/p><\/header>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bf51ac3 animejs-disable elementor-widget elementor-widget-spacer\" data-id=\"bf51ac3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-921bf45 animejs-disable elementor-widget elementor-widget-html\" data-id=\"921bf45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Kangaroo Rewards \u2014 ROI Calculator<\/title>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Roboto:wght@300;400;500;600;700;900&display=swap\" rel=\"stylesheet\">\n<style>\n\/* \u2500\u2500 SCOPED TO #kroi to avoid Elementor conflicts \u2500\u2500 *\/\n#kroi-wrap {\n  --page-bg:       #ffffff;\n  --card-bg:       #DCF7FF;\n  --card-inner:    #ffffff;\n  --accent:        #0099cc;\n  --accent-dark:   #007aa3;\n  --accent-xlight: #f0fbff;\n  --border:        #cceeff;\n  --border-dark:   #88d4ee;\n  --text:          #1a2e3a;\n  --muted:         #6b8fa0;\n  --label:         #2c4a5a;\n  --right-bg:      #0a1f2e;\n  --right-text:    #e8f4fa;\n  --right-muted:   #7aaabb;\n  --right-border:  #1e3a4a;\n  font-family: 'Roboto', sans-serif;\n  font-size: 15px;\n  color: var(--text);\n  box-sizing: border-box;\n}\n#kroi-wrap *, #kroi-wrap *::before, #kroi-wrap *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n\/* \u2500\u2500 LAYOUT \u2500\u2500 *\/\n#kroi-wrap .layout { display: grid; grid-template-columns: 1fr 330px; min-height: 100vh; align-items: start; }\n#kroi-wrap .left-col { background: var(--page-bg); padding: 32px 28px 60px; }\n#kroi-wrap .right-col {\n  background: var(--right-bg); position: sticky; top: 0;\n  height: 100vh; overflow-y: auto;\n  padding: 28px 22px 32px;\n  display: flex; flex-direction: column;\n}\n\n\/* \u2500\u2500 SECTION CARDS \u2500\u2500 *\/\n#kroi-wrap .section-card { background: var(--card-bg); border-radius: 14px; padding: 22px 24px; margin-bottom: 16px; }\n#kroi-wrap .sc-header { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; padding-bottom: 14px; border-bottom: 1px solid var(--border); }\n#kroi-wrap .sc-num { width: 30px; height: 30px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\n#kroi-wrap .sc-title { font-size: 15px; font-weight: 700; color: var(--accent-dark); }\n\n\/* \u2500\u2500 INDUSTRY GRID \u2500\u2500 *\/\n#kroi-wrap .industry-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }\n#kroi-wrap .ind-btn {\n  background: var(--card-inner); border: 1.5px solid var(--border); border-radius: 10px;\n  padding: 14px 8px 12px; cursor: pointer;\n  display: flex; flex-direction: column; align-items: center; gap: 6px;\n  font-family: 'Roboto', sans-serif; font-size: 13px; font-weight: 500;\n  color: var(--label); transition: all 0.15s; text-align: center; line-height: 1.3;\n  \/* CRITICAL FIX: prevents form submission in WordPress\/Elementor *\/\n  type: button;\n}\n#kroi-wrap .ind-btn:hover { border-color: var(--accent); background: var(--accent-xlight); color: var(--accent-dark); }\n#kroi-wrap .ind-btn.sel { border-color: var(--accent); background: var(--accent); color: #fff; font-weight: 600; }\n#kroi-wrap .ind-icon { font-size: 22px; }\n\n\/* \u2500\u2500 CONDITIONAL BLOCKS \u2500\u2500 *\/\n#kroi-wrap .cond-q { margin-top: 12px; background: var(--card-inner); border: 1.5px solid var(--border-dark); border-radius: 10px; padding: 14px 16px; display: none; }\n#kroi-wrap .cond-q.show { display: block; animation: kroi-fadeIn 0.2s ease; }\n@keyframes kroi-fadeIn { from{opacity:0;transform:translateY(-4px)} to{opacity:1;transform:translateY(0)} }\n#kroi-wrap .cond-title { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 10px; }\n\n#kroi-wrap .radio-list { display: flex; flex-direction: column; gap: 6px; }\n#kroi-wrap .radio-item {\n  display: flex; align-items: center; gap: 9px; padding: 9px 11px; border-radius: 7px;\n  background: var(--card-bg); border: 1.5px solid transparent; cursor: pointer;\n  font-size: 14px; color: var(--label); transition: border-color 0.12s;\n}\n#kroi-wrap .radio-item:hover { border-color: var(--border-dark); }\n#kroi-wrap .radio-item input[type=\"radio\"] { accent-color: var(--accent); width: 15px; height: 15px; flex-shrink: 0; }\n\n\/* Yes\/No *\/\n#kroi-wrap .yn-row { display: flex; gap: 8px; }\n#kroi-wrap .yn-btn {\n  flex: 1; padding: 10px; border: 1.5px solid var(--border-dark); border-radius: 7px;\n  background: var(--card-bg); cursor: pointer; font-family: 'Roboto', sans-serif;\n  font-size: 14px; font-weight: 500; color: var(--label); text-align: center; transition: all 0.15s;\n}\n#kroi-wrap .yn-btn:hover { border-color: var(--accent); color: var(--accent-dark); }\n#kroi-wrap .yn-btn.sel { border-color: var(--accent); background: var(--accent); color: #fff; font-weight: 700; }\n\n\/* \u2500\u2500 AMAZON BANNER \u2500\u2500 *\/\n#kroi-wrap .amazon-banner {\n  display: none; margin-top: 12px;\n  background: linear-gradient(135deg, #fff9e6, #fffbf0);\n  border: 2px solid #f59e0b; border-radius: 12px; padding: 16px 18px;\n  animation: kroi-fadeIn 0.3s ease;\n}\n#kroi-wrap .amazon-banner.show { display: block; }\n#kroi-wrap .amazon-banner-title { font-size: 15px; font-weight: 800; color: #92400e; margin-bottom: 8px; }\n#kroi-wrap .amazon-banner-body { font-size: 13px; color: #78350f; line-height: 1.6; }\n#kroi-wrap .amazon-banner-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }\n#kroi-wrap .amazon-pill { background: #fef3c7; border: 1px solid #fbbf24; border-radius: 20px; padding: 4px 12px; font-size: 12px; font-weight: 600; color: #92400e; }\n\n\/* \u2500\u2500 POS NOTE \u2500\u2500 *\/\n#kroi-wrap .pos-integration-note {\n  display: none; margin-top: 10px; padding: 11px 14px;\n  background: var(--accent-xlight); border: 1.5px solid var(--accent);\n  border-radius: 8px; font-size: 13.5px; color: var(--accent-dark); font-weight: 500;\n  animation: kroi-fadeIn 0.2s ease;\n}\n#kroi-wrap .pos-integration-note.show { display: flex; align-items: center; gap: 8px; }\n\n\/* \u2500\u2500 FORM FIELDS \u2500\u2500 *\/\n#kroi-wrap .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 14px; }\n#kroi-wrap .field-row.single { grid-template-columns: 1fr; }\n#kroi-wrap .field-row:last-child { margin-bottom: 0; }\n#kroi-wrap .field-group { display: flex; flex-direction: column; gap: 5px; }\n#kroi-wrap .field-label { font-size: 13.5px; font-weight: 600; color: var(--label); }\n#kroi-wrap .field-hint { font-size: 11.5px; color: var(--muted); margin-top: 3px; }\n\n#kroi-wrap .input-wrap { display: flex; align-items: center; background: var(--card-inner); border: 1.5px solid var(--border-dark); border-radius: 7px; overflow: hidden; height: 40px; transition: border-color 0.15s; }\n#kroi-wrap .input-wrap:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(0,153,204,0.1); }\n#kroi-wrap .input-prefix { padding: 0 11px; font-size: 13.5px; font-weight: 600; color: var(--muted); background: var(--card-bg); border-right: 1px solid var(--border); height: 100%; display: flex; align-items: center; user-select: none; }\n#kroi-wrap .input-suffix { padding: 0 11px; font-size: 13px; color: var(--muted); background: var(--card-bg); border-left: 1px solid var(--border); height: 100%; display: flex; align-items: center; user-select: none; }\n#kroi-wrap .input-wrap input { flex: 1; border: none; outline: none; padding: 0 11px; height: 100%; font-family: 'Roboto', sans-serif; font-size: 15px; color: var(--text); background: transparent; }\n\n#kroi-wrap select.field-sel {\n  width: 100%; height: 40px; padding: 0 32px 0 11px;\n  border: 1.5px solid var(--border-dark); border-radius: 7px;\n  font-family: 'Roboto', sans-serif; font-size: 14px; color: var(--text);\n  background: var(--card-inner); outline: none; cursor: pointer;\n  -webkit-appearance: none; appearance: none;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%230099cc' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat; background-position: right 10px center;\n  transition: border-color 0.15s;\n}\n#kroi-wrap select.field-sel:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(0,153,204,0.1); }\n\n\/* \u2500\u2500 SLIDER \u2500\u2500 *\/\n#kroi-wrap .slider-row { margin-bottom: 18px; }\n#kroi-wrap .slider-row:last-child { margin-bottom: 0; }\n#kroi-wrap .slider-top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 7px; }\n#kroi-wrap .slider-lbl { font-size: 13.5px; font-weight: 600; color: var(--label); }\n#kroi-wrap .slider-val { font-size: 18px; font-weight: 700; color: var(--accent); min-width: 56px; text-align: right; }\n#kroi-wrap input[type=\"range\"] { width: 100%; height: 4px; background: var(--border-dark); border-radius: 2px; outline: none; -webkit-appearance: none; cursor: pointer; }\n#kroi-wrap input[type=\"range\"]::-webkit-slider-thumb { -webkit-appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--accent); border: 2.5px solid #fff; box-shadow: 0 1px 4px rgba(0,153,204,0.4); cursor: pointer; }\n#kroi-wrap .slider-hints { display: flex; justify-content: space-between; margin-top: 3px; font-size: 11px; color: var(--muted); }\n\n\/* \u2500\u2500 FEATURES \u2500\u2500 *\/\n#kroi-wrap .feat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }\n#kroi-wrap .feat-item { background: var(--card-inner); border: 1.5px solid var(--border); border-radius: 10px; padding: 13px 14px; display: flex; align-items: flex-start; gap: 10px; cursor: pointer; transition: all 0.15s; user-select: none; }\n#kroi-wrap .feat-item:hover:not(.disabled) { border-color: var(--accent); }\n#kroi-wrap .feat-item.on { border-color: var(--accent); background: var(--accent-xlight); }\n#kroi-wrap .feat-item.disabled { opacity: 0.45; cursor: not-allowed; background: #f3f3f3; border-color: #ddd; }\n#kroi-wrap .feat-toggle { width: 38px; height: 22px; border-radius: 11px; background: var(--border-dark); position: relative; flex-shrink: 0; margin-top: 2px; transition: background 0.2s; }\n#kroi-wrap .feat-item.on .feat-toggle { background: var(--accent); }\n#kroi-wrap .feat-item.disabled .feat-toggle { background: #ccc; }\n#kroi-wrap .feat-toggle::after { content: ''; position: absolute; width: 16px; height: 16px; border-radius: 50%; background: #fff; top: 3px; left: 3px; transition: transform 0.2s; box-shadow: 0 1px 3px rgba(0,0,0,0.2); }\n#kroi-wrap .feat-item.on .feat-toggle::after { transform: translateX(16px); }\n#kroi-wrap .feat-toggle input { display: none; }\n#kroi-wrap .feat-text { flex: 1; }\n#kroi-wrap .feat-name { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 3px; }\n#kroi-wrap .feat-desc { font-size: 12px; color: var(--muted); line-height: 1.4; }\n#kroi-wrap .feat-warn-badge { display: inline-block; font-size: 11px; font-weight: 700; color: #92400e; background: #fef3c7; border: 1px solid #fbbf24; border-radius: 4px; padding: 2px 7px; margin-top: 5px; }\n\n\/* \u2500\u2500 CALC BREAKDOWN \u2500\u2500 *\/\n#kroi-wrap .calc-note {\n  margin-top: 14px; padding: 12px 16px;\n  background: var(--card-inner); border: 1.5px solid var(--border);\n  border-radius: 10px; font-size: 12.5px; color: var(--muted); line-height: 1.6;\n}\n#kroi-wrap .calc-note strong { color: var(--label); }\n\n\/* \u2500\u2500 SMS MODAL \u2500\u2500 *\/\n#kroi-wrap .modal-overlay { display: none; position: fixed; inset: 0; background: rgba(10,31,46,0.65); z-index: 99999; align-items: center; justify-content: center; padding: 20px; }\n#kroi-wrap .modal-overlay.open { display: flex; }\n#kroi-wrap .modal-box { background: #fff; border-radius: 16px; padding: 28px 28px 24px; max-width: 440px; width: 100%; box-shadow: 0 20px 60px rgba(0,0,0,0.3); position: relative; animation: kroi-popIn 0.25s cubic-bezier(0.34,1.56,0.64,1); }\n@keyframes kroi-popIn { from{transform:scale(0.85);opacity:0} to{transform:scale(1);opacity:1} }\n#kroi-wrap .modal-close { position: absolute; top: 14px; right: 16px; background: none; border: none; font-size: 20px; cursor: pointer; color: var(--muted); }\n#kroi-wrap .modal-icon { font-size: 34px; margin-bottom: 12px; }\n#kroi-wrap .modal-title { font-size: 16px; font-weight: 700; color: var(--text); margin-bottom: 8px; line-height: 1.4; }\n#kroi-wrap .modal-body { font-size: 14px; color: var(--muted); line-height: 1.6; margin-bottom: 20px; }\n#kroi-wrap .modal-cta { display: block; width: 100%; padding: 13px; background: var(--accent); color: #fff; text-align: center; border-radius: 9px; font-family: 'Roboto',sans-serif; font-size: 15px; font-weight: 700; text-decoration: none; }\n#kroi-wrap .modal-cta:hover { background: var(--accent-dark); }\n#kroi-wrap .modal-dismiss { display: block; text-align: center; margin-top: 10px; font-size: 13px; color: var(--muted); cursor: pointer; }\n\n\/* \u2500\u2500 SPOTLIGHT CARDS \u2500\u2500 *\/\n#kroi-wrap .spotlight-wrap { margin-top: 20px; display: flex; flex-direction: column; gap: 16px; }\n#kroi-wrap .case-study-card { display: none; background: var(--card-bg); border: 1.5px solid var(--border-dark); border-radius: 14px; overflow: hidden; animation: kroi-fadeIn 0.35s ease; }\n#kroi-wrap .case-study-card.show { display: block; }\n#kroi-wrap .cs-image { width: 100%; height: 180px; object-fit: cover; display: block; }\n#kroi-wrap .cs-body { padding: 20px 22px; }\n#kroi-wrap .cs-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--accent); margin-bottom: 6px; }\n#kroi-wrap .cs-title { font-size: 17px; font-weight: 800; color: var(--text); margin-bottom: 8px; line-height: 1.4; }\n#kroi-wrap .cs-desc { font-size: 13.5px; color: var(--muted); line-height: 1.6; margin-bottom: 16px; }\n#kroi-wrap .cs-subtitle { font-size: 13px; font-weight: 600; color: var(--accent-dark); margin-bottom: 10px; }\n#kroi-wrap .cs-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }\n#kroi-wrap .cs-pill { background: var(--card-inner); border: 1px solid var(--border-dark); border-radius: 20px; padding: 5px 12px; font-size: 12.5px; font-weight: 500; color: var(--label); }\n#kroi-wrap .cs-cta { display: inline-block; padding: 11px 24px; background: var(--accent); color: #fff; border-radius: 8px; font-family: 'Roboto',sans-serif; font-size: 14px; font-weight: 700; text-decoration: none; }\n#kroi-wrap .cs-cta:hover { background: var(--accent-dark); }\n\n#kroi-wrap .geo-spotlight { display: none; background: #0a1f2e; border: 1.5px solid #1e4a6a; border-radius: 14px; overflow: hidden; animation: kroi-fadeIn 0.35s ease; }\n#kroi-wrap .geo-spotlight.show { display: block; }\n#kroi-wrap .geo-video-wrap { position: relative; width: 100%; background: #000; cursor: pointer; }\n#kroi-wrap .geo-video-wrap video { width: 100%; display: block; max-height: 220px; object-fit: cover; }\n#kroi-wrap .geo-play-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.35); transition: opacity 0.2s; }\n#kroi-wrap .geo-play-overlay.hidden { opacity: 0; pointer-events: none; }\n#kroi-wrap .geo-play-btn { width: 54px; height: 54px; border-radius: 50%; background: rgba(0,153,204,0.9); display: flex; align-items: center; justify-content: center; font-size: 20px; color: #fff; box-shadow: 0 4px 20px rgba(0,153,204,0.5); }\n#kroi-wrap .geo-body { padding: 20px 22px; }\n#kroi-wrap .geo-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: #22d3ee; margin-bottom: 6px; }\n#kroi-wrap .geo-title { font-size: 17px; font-weight: 800; color: #e8f4fa; margin-bottom: 8px; line-height: 1.4; }\n#kroi-wrap .geo-desc { font-size: 13.5px; color: #7aaabb; line-height: 1.6; margin-bottom: 14px; }\n#kroi-wrap .geo-pills { display: flex; flex-wrap: wrap; gap: 6px; }\n#kroi-wrap .geo-pill { background: rgba(255,255,255,0.06); border: 1px solid #1e4a6a; border-radius: 20px; padding: 5px 12px; font-size: 12.5px; font-weight: 500; color: #7aaabb; }\n\n\/* \u2500\u2500 RIGHT PANEL \u2500\u2500 *\/\n#kroi-wrap .rp-logo { display: flex; align-items: center; gap: 8px; margin-bottom: 20px; }\n#kroi-wrap .rp-logo-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px rgba(0,153,204,0.7); animation: kroi-blink 2s infinite; }\n@keyframes kroi-blink { 0%,100%{opacity:1} 50%{opacity:0.4} }\n#kroi-wrap .rp-logo-text { font-size: 11px; font-weight: 600; color: var(--right-muted); letter-spacing: 0.5px; }\n#kroi-wrap .rp-hero { background: rgba(0,153,204,0.12); border: 1px solid rgba(0,153,204,0.25); border-radius: 12px; padding: 20px 18px; margin-bottom: 14px; text-align: center; }\n#kroi-wrap .rp-hero-label { font-size: 10px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--right-muted); margin-bottom: 6px; }\n#kroi-wrap .rp-big-num { font-size: 44px; font-weight: 900; color: #22d3ee; line-height: 1; margin-bottom: 4px; transition: all 0.4s; }\n#kroi-wrap .rp-uplift { font-size: 14px; font-weight: 600; color: #86efac; }\n#kroi-wrap .rp-tagline { font-size: 12px; color: var(--right-muted); line-height: 1.5; margin-top: 8px; }\n#kroi-wrap .roi-bar-wrap { margin-bottom: 14px; }\n#kroi-wrap .roi-bar-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }\n#kroi-wrap .roi-bar-lbl { font-size: 11px; font-weight: 600; color: var(--right-muted); letter-spacing: 0.5px; text-transform: uppercase; }\n#kroi-wrap .roi-bar-pct { font-size: 14px; font-weight: 700; color: #22d3ee; }\n#kroi-wrap .roi-bar-track { background: var(--right-border); height: 8px; border-radius: 4px; overflow: hidden; }\n#kroi-wrap .roi-bar-fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--accent), #22d3ee); transition: width 0.7s cubic-bezier(0.34,1.56,0.64,1); width: 0; position: relative; overflow: hidden; }\n#kroi-wrap .roi-bar-fill::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg,transparent,rgba(255,255,255,0.2),transparent); animation: kroi-shim 2s infinite; }\n@keyframes kroi-shim { 0%{transform:translateX(-100%)} 100%{transform:translateX(100%)} }\n#kroi-wrap .rp-divider { height: 1px; background: var(--right-border); margin: 12px 0; }\n#kroi-wrap .metrics-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 14px; }\n#kroi-wrap .met-box { background: rgba(255,255,255,0.04); border: 1px solid var(--right-border); border-radius: 9px; padding: 11px 12px; }\n#kroi-wrap .met-lbl { font-size: 10px; color: var(--right-muted); font-weight: 600; letter-spacing: 0.3px; margin-bottom: 4px; text-transform: uppercase; }\n#kroi-wrap .met-val { font-size: 18px; font-weight: 800; color: var(--right-text); line-height: 1; margin-bottom: 2px; }\n#kroi-wrap .met-val.green { color: #4ade80; } #kroi-wrap .met-val.cyan { color: #22d3ee; } #kroi-wrap .met-val.amber { color: #fbbf24; }\n#kroi-wrap .met-sub { font-size: 10px; color: var(--right-muted); }\n#kroi-wrap .plan-badge { background: rgba(0,153,204,0.15); border: 1px solid rgba(0,153,204,0.3); border-radius: 8px; padding: 10px 14px; margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; }\n#kroi-wrap .plan-badge-left { font-size: 11px; color: var(--right-muted); }\n#kroi-wrap .plan-badge-right { font-size: 14px; font-weight: 700; color: #22d3ee; }\n#kroi-wrap .cta-btn { display: block; width: 100%; padding: 13px; background: var(--accent); color: #fff; text-align: center; border-radius: 9px; font-family: 'Roboto', sans-serif; font-size: 14px; font-weight: 700; text-decoration: none; transition: all 0.18s; box-shadow: 0 4px 16px rgba(0,153,204,0.35); margin-bottom: 10px; }\n#kroi-wrap .cta-btn:hover { background: #00b8f0; transform: translateY(-1px); }\n#kroi-wrap .cta-sub { text-align: center; font-size: 11px; color: var(--right-muted); }\n\n\/* \u2500\u2500 MOBILE \u2500\u2500 *\/\n#kroi-wrap .mobile-results { display: none; background: var(--right-bg); border-radius: 14px; padding: 20px 18px; margin-top: 20px; }\n@media (max-width: 768px) {\n  #kroi-wrap .layout { grid-template-columns: 1fr; }\n  #kroi-wrap .right-col { display: none; }\n  #kroi-wrap .left-col { padding: 20px 16px 40px; }\n  #kroi-wrap .industry-grid { grid-template-columns: repeat(2, 1fr); }\n  #kroi-wrap .feat-grid { grid-template-columns: 1fr; }\n  #kroi-wrap .field-row { grid-template-columns: 1fr; }\n  #kroi-wrap .mobile-results { display: block; }\n}\n<\/style>\n<\/head>\n<body>\n\n<div id=\"kroi-wrap\">\n\n<!-- SMS MODAL -->\n<div class=\"modal-overlay\" id=\"kroi-smsModal\">\n  <div class=\"modal-box\">\n    <button type=\"button\" class=\"modal-close\" id=\"kroi-modalClose\">\u2715<\/button>\n    <div class=\"modal-icon\">\u26a0\ufe0f<\/div>\n    <div class=\"modal-title\">SMS Marketing is not available for Vape &amp; CBD businesses<\/div>\n    <div class=\"modal-body\">This feature is restricted by SMS carriers in most regions due to regulatory rules around vape, CBD, and tobacco products. But don't worry \u2014 we have the perfect alternative. Book a demo to see how you can reach customers directly even without SMS.<\/div>\n    <a href=\"https:\/\/loyalty.kangaroorewards.com\/roi-calculator-booking-form\/\" target=\"_blank\" class=\"modal-cta\">Book a Demo \u2014 See the Alternative \u2192<\/a>\n    <span class=\"modal-dismiss\" id=\"kroi-modalDismiss\">Dismiss<\/span>\n  <\/div>\n<\/div>\n\n<div class=\"layout\">\n<div class=\"left-col\">\n\n  <!-- \u2500\u2500 SECTION 1: INDUSTRY \u2500\u2500 -->\n  <div class=\"section-card\">\n    <div class=\"sc-header\"><div class=\"sc-num\">1<\/div><div class=\"sc-title\">What type of business are you?<\/div><\/div>\n    <div class=\"industry-grid\">\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"ecommerce\"><span class=\"ind-icon\">\ud83d\udecd\ufe0f<\/span>Ecommerce<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"retail\"><span class=\"ind-icon\">\ud83c\udfea<\/span>Retail<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"beauty\"><span class=\"ind-icon\">\ud83d\udc86<\/span>Beauty \/ Wellness \/ Spa<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"vape\"><span class=\"ind-icon\">\ud83c\udf3f<\/span>Vape \/ CBD \/ Tobacco<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"pet\"><span class=\"ind-icon\">\ud83d\udc3e<\/span>Pet Store<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"cafe\"><span class=\"ind-icon\">\u2615<\/span>Caf\u00e9 \/ Restaurant \/ Bar<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"grocery\"><span class=\"ind-icon\">\ud83d\uded2<\/span>Supermarket \/ Grocery<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"fashion\"><span class=\"ind-icon\">\ud83d\udc57<\/span>Fashion \/ Clothing<\/button>\n      <button type=\"button\" class=\"ind-btn\" data-ind=\"sports\"><span class=\"ind-icon\">\ud83c\udfcb\ufe0f<\/span>Sports \/ Fitness<\/button>\n    <\/div>\n\n    <!-- ECOMMERCE -->\n    <div class=\"cond-q\" id=\"kroi-ecomQ\">\n      <div class=\"cond-title\">Do you also sell offline, on Amazon, or both?<\/div>\n      <div class=\"radio-list\">\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-ecomX\" value=\"offline\"> Also sell offline (physical store)<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-ecomX\" value=\"amazon\"> Also sell on Amazon<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-ecomX\" value=\"both\"> Both \u2014 offline and Amazon<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-ecomX\" value=\"none\" checked> Online only<\/label>\n      <\/div>\n      <div class=\"amazon-banner\" id=\"kroi-ecomAmazonBanner\">\n        <div class=\"amazon-banner-title\">Wow, you sell on Amazon too? \ud83d\ude80 That's amazing!<\/div>\n        <div class=\"amazon-banner-body\">Guess what \u2014 Kangaroo Rewards integrates with Amazon! \ud83c\udf89 Now your customers can earn points on your website and redeem rewards directly through your Amazon listings.<br><br><strong>More reach. More redemptions. More repeat buyers.<\/strong><\/div>\n        <div class=\"amazon-banner-pills\"><span class=\"amazon-pill\">\ud83d\udecd\ufe0f Earn on website<\/span><span class=\"amazon-pill\">\ud83d\udce6 Redeem on Amazon<\/span><span class=\"amazon-pill\">\ud83d\udd04 Unified loyalty<\/span><\/div>\n      <\/div>\n      <div class=\"cond-q\" id=\"kroi-ecomLocQ\" style=\"margin-top:10px\">\n        <div class=\"cond-title\">How many physical locations?<\/div>\n        <select class=\"field-sel\" id=\"kroi-ecomLocType\">\n          <option value=\"1\">1 Location<\/option><option value=\"3\">2\u20135 Locations<\/option><option value=\"8\">6+ Locations<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n\n    <!-- RETAIL -->\n    <div class=\"cond-q\" id=\"kroi-retailQ\">\n      <div class=\"cond-title\">Do you also sell online, on Amazon, or both?<\/div>\n      <div class=\"radio-list\">\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-retailX\" value=\"online\"> Also sell online<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-retailX\" value=\"amazon\"> Also sell on Amazon<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-retailX\" value=\"both\"> Both \u2014 online and Amazon<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-retailX\" value=\"none\" checked> In-store only<\/label>\n      <\/div>\n      <div class=\"amazon-banner\" id=\"kroi-retailAmazonBanner\">\n        <div class=\"amazon-banner-title\">Wow, you sell on Amazon too? \ud83d\ude80 That's amazing!<\/div>\n        <div class=\"amazon-banner-body\">Guess what \u2014 Kangaroo Rewards integrates with Amazon! \ud83c\udf89 Now your customers can earn points in-store and redeem rewards directly through your Amazon listings.<br><br><strong>More reach. More redemptions. More repeat buyers.<\/strong><\/div>\n        <div class=\"amazon-banner-pills\"><span class=\"amazon-pill\">\ud83c\udfea Earn in-store<\/span><span class=\"amazon-pill\">\ud83d\udce6 Redeem on Amazon<\/span><span class=\"amazon-pill\">\ud83d\udd04 Unified loyalty<\/span><\/div>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">Approx. how many customer transactions per month?<\/div>\n        <div class=\"input-wrap\"><input type=\"number\" id=\"kroi-retailTxns\" value=\"800\" min=\"1\"><\/div>\n        <div class=\"field-hint\">Used to estimate loyalty membership growth and referral impact<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- BEAUTY -->\n    <div class=\"cond-q\" id=\"kroi-beautyQ\">\n      <div class=\"cond-title\">Do you also sell products? (e.g. skincare, supplements, etc.)<\/div>\n      <div class=\"yn-row\">\n        <button type=\"button\" class=\"yn-btn\" id=\"kroi-beautyProdYes\" data-beauty-prod=\"yes\">Yes<\/button>\n        <button type=\"button\" class=\"yn-btn\" id=\"kroi-beautyProdNo\"  data-beauty-prod=\"no\">No \u2014 services only<\/button>\n      <\/div>\n      <div class=\"cond-q\" id=\"kroi-beautyProdChannelQ\" style=\"margin-top:10px\">\n        <div class=\"cond-title\">Where do you sell your products?<\/div>\n        <div class=\"radio-list\">\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-beautyProdCh\" value=\"online\"> Online only<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-beautyProdCh\" value=\"offline\"> In-store \/ offline only<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-beautyProdCh\" value=\"both\" checked> Both online and in-store<\/label>\n        <\/div>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">How many client appointments per week on average?<\/div>\n        <div class=\"input-wrap\">\n          <input type=\"number\" id=\"kroi-beautyAppts\" value=\"40\" min=\"1\">\n          <div class=\"input-suffix\">appts\/wk<\/div>\n        <\/div>\n        <div class=\"field-hint\">Rebooking rate is a key driver \u2014 loyalty programs lift this by 20\u201335%<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- VAPE -->\n    <div class=\"cond-q\" id=\"kroi-vapeQ\">\n      <div class=\"cond-title\">Where do you sell?<\/div>\n      <div class=\"radio-list\">\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-vapeX\" value=\"online\"> Online only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-vapeX\" value=\"offline\"> In-store \/ offline only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-vapeX\" value=\"both\" checked> Both online and in-store<\/label>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">How often does a typical customer repurchase?<\/div>\n        <div class=\"radio-list\">\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-vapeFreq\" value=\"weekly\"> Weekly (e.g. e-liquid, pods)<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-vapeFreq\" value=\"monthly\" checked> Monthly (e.g. devices, CBD)<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-vapeFreq\" value=\"quarterly\"> Every few months<\/label>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- PET -->\n    <div class=\"cond-q\" id=\"kroi-petQ\">\n      <div class=\"cond-title\">Where do you sell?<\/div>\n      <div class=\"radio-list\">\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-petX\" value=\"online\"> Online only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-petX\" value=\"offline\"> In-store \/ offline only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-petX\" value=\"both\" checked> Both online and in-store<\/label>\n      <\/div>\n      <div class=\"cond-q show\" id=\"kroi-petLocQ\" style=\"margin-top:10px\">\n        <div class=\"cond-title\">How many physical locations?<\/div>\n        <select class=\"field-sel\" id=\"kroi-petLocType\">\n          <option value=\"1\">1 Location<\/option><option value=\"3\">2\u20135 Locations<\/option><option value=\"8\">6+ Locations<\/option>\n        <\/select>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">Do you also offer services? (e.g. grooming, boarding, vet consultations)<\/div>\n        <div class=\"yn-row\">\n          <button type=\"button\" class=\"yn-btn\" id=\"kroi-petSvcYes\" data-pet-svc=\"yes\">Yes<\/button>\n          <button type=\"button\" class=\"yn-btn\" id=\"kroi-petSvcNo\"  data-pet-svc=\"no\">No \u2014 products only<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"cond-q\" id=\"kroi-petGroomQ\" style=\"margin-top:10px\">\n        <div class=\"cond-title\">How many grooming \/ service appointments per month?<\/div>\n        <div class=\"input-wrap\">\n          <input type=\"number\" id=\"kroi-petGrooms\" value=\"60\" min=\"0\">\n          <div class=\"input-suffix\">\/ month<\/div>\n        <\/div>\n        <div class=\"field-hint\">Repeat bookings are the highest-LTV segment for pet stores<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- FASHION -->\n    <div class=\"cond-q\" id=\"kroi-fashionQ\">\n      <div class=\"cond-title\">Where do you sell?<\/div>\n      <div class=\"radio-list\">\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionX\" value=\"web\" checked> Online \u2014 website only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionX\" value=\"offline\"> In-store \/ offline only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionX\" value=\"amazon\"> Online \u2014 Amazon only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionX\" value=\"web_amazon\"> Online \u2014 website + Amazon<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionX\" value=\"all\"> All \u2014 website, store &amp; Amazon<\/label>\n      <\/div>\n      <div class=\"amazon-banner\" id=\"kroi-fashionAmazonBanner\">\n        <div class=\"amazon-banner-title\">Wow, you sell on Amazon too? \ud83d\ude80 That's amazing!<\/div>\n        <div class=\"amazon-banner-body\">Kangaroo Rewards integrates with Amazon! \ud83c\udf89 Your customers can earn points whether they shop your website, walk into your store, or find you on Amazon.<br><br><strong>One loyalty program. Every channel. More repeat buyers.<\/strong><\/div>\n        <div class=\"amazon-banner-pills\"><span class=\"amazon-pill\">\ud83d\udc57 Earn across all channels<\/span><span class=\"amazon-pill\">\ud83d\udce6 Redeem on Amazon<\/span><span class=\"amazon-pill\">\ud83d\udd04 Unified loyalty<\/span><\/div>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">How large is your product catalogue?<\/div>\n        <div class=\"radio-list\">\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionSkus\" value=\"small\" checked> Under 100 SKUs \u2014 boutique \/ curated<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionSkus\" value=\"mid\"> 100\u2013500 SKUs<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionSkus\" value=\"large\"> 500+ SKUs \u2014 large catalogue<\/label>\n        <\/div>\n        <div class=\"field-hint\">Larger catalogues benefit more from tiers and email \u2014 more reasons to return<\/div>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">How does your customer base typically buy?<\/div>\n        <div class=\"radio-list\">\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionBuy\" value=\"seasonal\" checked> Seasonal \u2014 drops, collections, promotions<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionBuy\" value=\"regular\"> Regular repeat \u2014 basics, staples, essentials<\/label>\n          <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-fashionBuy\" value=\"mixed\"> Mix of both<\/label>\n        <\/div>\n        <div class=\"field-hint\">Regular buyers have 2\u20133x higher loyalty program ROI than seasonal buyers<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- SPORTS -->\n    <div class=\"cond-q\" id=\"kroi-sportsQ\">\n      <div class=\"cond-title\">Where do you sell?<\/div>\n      <div class=\"radio-list\">\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-sportsX\" value=\"web\" checked> Online \u2014 website only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-sportsX\" value=\"offline\"> In-store \/ offline only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-sportsX\" value=\"amazon\"> Online \u2014 Amazon only<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-sportsX\" value=\"web_amazon\"> Online \u2014 website + Amazon<\/label>\n        <label class=\"radio-item\"><input type=\"radio\" name=\"kroi-sportsX\" value=\"all\"> All \u2014 website, store &amp; Amazon<\/label>\n      <\/div>\n      <div class=\"amazon-banner\" id=\"kroi-sportsAmazonBanner\">\n        <div class=\"amazon-banner-title\">Wow, you sell on Amazon too? \ud83d\ude80 That's amazing!<\/div>\n        <div class=\"amazon-banner-body\">Kangaroo Rewards integrates with Amazon! \ud83c\udf89 Sports &amp; fitness customers are high-frequency buyers \u2014 now they earn points everywhere and stay loyal to your brand specifically.<br><br><strong>More reach. More loyalty. More repeat buyers.<\/strong><\/div>\n        <div class=\"amazon-banner-pills\"><span class=\"amazon-pill\">\ud83c\udfcb\ufe0f Earn across all channels<\/span><span class=\"amazon-pill\">\ud83d\udce6 Redeem on Amazon<\/span><span class=\"amazon-pill\">\ud83d\udd04 Unified loyalty<\/span><\/div>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">Do you sell consumable products? (e.g. supplements, protein, sports nutrition)<\/div>\n        <div class=\"yn-row\">\n          <button type=\"button\" class=\"yn-btn\" id=\"kroi-sportsConsYes\" data-sports-cons=\"yes\">Yes<\/button>\n          <button type=\"button\" class=\"yn-btn\" id=\"kroi-sportsConsNo\"  data-sports-cons=\"no\">No \u2014 equipment \/ apparel only<\/button>\n        <\/div>\n        <div class=\"field-hint\" style=\"margin-top:6px\">Consumable buyers repurchase 8\u201312x\/year \u2014 one of the strongest use cases for loyalty<\/div>\n      <\/div>\n      <div style=\"margin-top:12px\">\n        <div class=\"cond-title\">Do you also run a gym, studio, or fitness classes?<\/div>\n        <div class=\"yn-row\">\n          <button type=\"button\" class=\"yn-btn\" id=\"kroi-sportsGymYes\" data-sports-gym=\"yes\">Yes<\/button>\n          <button type=\"button\" class=\"yn-btn\" id=\"kroi-sportsGymNo\"  data-sports-gym=\"no\">No \u2014 retail only<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"cond-q\" id=\"kroi-sportsGymQ\" style=\"margin-top:10px\">\n        <div class=\"cond-title\">How many active members \/ class attendees per month?<\/div>\n        <div class=\"input-wrap\">\n          <input type=\"number\" id=\"kroi-sportsMembers\" value=\"150\" min=\"1\">\n          <div class=\"input-suffix\">\/ month<\/div>\n        <\/div>\n        <div class=\"field-hint\">Members with loyalty programs show 30\u201340% better retention vs non-loyalty gyms<\/div>\n      <\/div>\n    <\/div>\n\n  <\/div><!-- \/section 1 -->\n\n  <!-- \u2500\u2500 SECTION 2: INTEGRATION \u2500\u2500 -->\n  <div class=\"section-card\">\n    <div class=\"sc-header\"><div class=\"sc-num\">2<\/div><div class=\"sc-title\">What POS or platform do you use?<\/div><\/div>\n    <div class=\"field-row single\">\n      <div class=\"field-group\">\n        <label class=\"field-label\">Select your POS \/ Integration<\/label>\n        <select class=\"field-sel\" id=\"kroi-posSelect\">\n          <option value=\"\">\u2014 Choose your platform \u2014<\/option>\n          <option value=\"Shopify\">Shopify<\/option>\n          <option value=\"WooCommerce\">WooCommerce<\/option>\n          <option value=\"BigCommerce\">BigCommerce<\/option>\n          <option value=\"Lightspeed\">Lightspeed<\/option>\n          <option value=\"Ecomz\">Ecomz<\/option>\n          <option value=\"Heartland\">Heartland<\/option>\n          <option value=\"Magento\">Magento<\/option>\n          <option value=\"Alice POS\">Alice POS<\/option>\n          <option value=\"Other\">Other<\/option>\n        <\/select>\n        <div class=\"pos-integration-note\" id=\"kroi-posNote\">\n          <span>\u2705<\/span><span id=\"kroi-posNoteText\"><\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2500\u2500 SECTION 3: BUSINESS METRICS \u2500\u2500 -->\n  <div class=\"section-card\">\n    <div class=\"sc-header\"><div class=\"sc-num\">3<\/div><div class=\"sc-title\">Tell us about your business<\/div><\/div>\n\n    <div class=\"field-row\">\n      <div class=\"field-group\">\n        <label class=\"field-label\">Monthly Revenue<\/label>\n        <div class=\"input-wrap\"><div class=\"input-prefix\">$<\/div><input type=\"number\" id=\"kroi-monthlyRev\" value=\"30000\" min=\"0\"><\/div>\n      <\/div>\n      <div class=\"field-group\">\n        <label class=\"field-label\">Average Order \/ Transaction Value<\/label>\n        <div class=\"input-wrap\"><div class=\"input-prefix\">$<\/div><input type=\"number\" id=\"kroi-avgCheck\" value=\"45\" min=\"1\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"field-row\" id=\"kroi-globalLocRow\" style=\"display:none\">\n      <div class=\"field-group\" style=\"grid-column:1\/-1\">\n        <label class=\"field-label\">Number of Locations<\/label>\n        <select class=\"field-sel\" id=\"kroi-globalLocType\">\n          <option value=\"1\">1 Location<\/option><option value=\"3\">2\u20135 Locations<\/option><option value=\"8\">6+ Locations<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n\n    <div class=\"field-row single\">\n      <div class=\"field-group\">\n        <label class=\"field-label\">Number of Active Customers (approx.)<\/label>\n        <div class=\"input-wrap\"><input type=\"number\" id=\"kroi-numCustomers\" value=\"500\" min=\"1\" style=\"padding-left:12px\"><\/div>\n        <div class=\"field-hint\">Unique customers who buy from you in a year<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"slider-row\">\n      <div class=\"slider-top\">\n        <span class=\"slider-lbl\">% of Customers Who Don't Return Each Year<\/span>\n        <span class=\"slider-val\" id=\"kroi-churnVal\">40%<\/span>\n      <\/div>\n      <input type=\"range\" id=\"kroi-churnSlider\" min=\"10\" max=\"80\" step=\"5\" value=\"40\">\n      <div class=\"slider-hints\"><span>10% low churn<\/span><span>80% high churn \u2014 more to save<\/span><\/div>\n      <div class=\"field-hint\" style=\"margin-top:4px\">Higher = more customers leaving = <strong>more upside<\/strong> from loyalty saving them<\/div>\n    <\/div>\n\n    <div class=\"field-row single\" id=\"kroi-emailListRow\" style=\"display:none\">\n      <div class=\"field-group\">\n        <label class=\"field-label\">Current Email List Size<\/label>\n        <div class=\"input-wrap\"><input type=\"number\" id=\"kroi-emailListSize\" value=\"0\" min=\"0\" style=\"padding-left:12px\"><\/div>\n        <div class=\"field-hint\">Leave 0 if you don't have a list yet \u2014 we'll estimate from your customer base<\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n  <!-- \u2500\u2500 SECTION 4: FEATURES \u2500\u2500 -->\n  <div class=\"section-card\">\n    <div class=\"sc-header\"><div class=\"sc-num\">4<\/div><div class=\"sc-title\">Which features do you want?<\/div><\/div>\n    <div class=\"feat-grid\">\n\n      <div class=\"feat-item on\" id=\"kroi-feat-loyalty\" data-feat=\"loyalty\">\n        <div class=\"feat-toggle\"><\/div>\n        <div class=\"feat-text\">\n          <div class=\"feat-name\">Loyalty Points &amp; Redemption<\/div>\n          <div class=\"feat-desc\">Earn points on every purchase, redeem for rewards.<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"feat-item on\" id=\"kroi-feat-email\" data-feat=\"email\">\n        <div class=\"feat-toggle\"><\/div>\n        <div class=\"feat-text\">\n          <div class=\"feat-name\">Email Marketing<\/div>\n          <div class=\"feat-desc\">Automated campaigns, win-backs &amp; newsletters.<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"feat-item\" id=\"kroi-feat-sms\" data-feat=\"sms\">\n        <div class=\"feat-toggle\"><\/div>\n        <div class=\"feat-text\">\n          <div class=\"feat-name\">SMS Marketing<\/div>\n          <div class=\"feat-desc\">High-open-rate texts for promos and alerts.<\/div>\n          <span class=\"feat-warn-badge\" id=\"kroi-smsWarnBadge\" style=\"display:none\">\u26a0\ufe0f Restricted for Vape\/CBD \u2014 tap to learn more<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"feat-item\" id=\"kroi-feat-referral\" data-feat=\"referral\">\n        <div class=\"feat-toggle\"><\/div>\n        <div class=\"feat-text\">\n          <div class=\"feat-name\">Referral Program<\/div>\n          <div class=\"feat-desc\">Turn loyal customers into brand advocates.<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"feat-item\" id=\"kroi-feat-tiers\" data-feat=\"tiers\">\n        <div class=\"feat-toggle\"><\/div>\n        <div class=\"feat-text\">\n          <div class=\"feat-name\">Tiered Levels &amp; Rewards<\/div>\n          <div class=\"feat-desc\">Silver, Gold, Platinum to increase spend.<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"feat-item\" id=\"kroi-feat-app\" data-feat=\"app\">\n        <div class=\"feat-toggle\"><\/div>\n        <div class=\"feat-text\">\n          <div class=\"feat-name\">Branded App<\/div>\n          <div class=\"feat-desc\">White-label mobile app for your brand.<\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"calc-note\" id=\"kroi-calcBreakdown\">Select your features above to see the breakdown.<\/div>\n  <\/div>\n\n  <!-- \u2500\u2500 SPOTLIGHTS \u2500\u2500 -->\n  <div class=\"spotlight-wrap\">\n    <div class=\"case-study-card\" id=\"kroi-caseStudyCard\">\n      <img decoding=\"async\" class=\"cs-image\" src=\"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/02\/Kangaroo-Rewards-digital-loyalty-program-enabled-Detail-Garage-to-track-customer-behavior-offer-targeted-rewards-and-simplify-redemption.png\" alt=\"Case Study\" onerror=\"this.style.display='none'\">\n      <div class=\"cs-body\">\n        <div class=\"cs-eyebrow\">\ud83d\udce6 Case Study \u2014 Retail<\/div>\n        <div class=\"cs-title\">Detail Garage<\/div>\n        <div class=\"cs-subtitle\">A mobile-first loyalty program for a retail chain<\/div>\n        <div class=\"cs-desc\">See how Detail Garage used Kangaroo Rewards to launch a mobile-first loyalty program \u2014 driving repeat visits, increasing average spend, and building a loyal customer base at scale.<\/div>\n        <a href=\"https:\/\/app-na1.hubspotdocuments.com\/documents\/5703123\/view\/660776517?accessId=487add\" target=\"_blank\" class=\"cs-cta\">Read Case Study \u2192<\/a>\n      <\/div>\n    <\/div>\n    <div class=\"geo-spotlight\" id=\"kroi-geoSpotlight\">\n      <div class=\"geo-video-wrap\" id=\"kroi-geoVideoWrap\">\n        <video id=\"kroi-geoVideo\" src=\"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Kangaroo-Geofencing.mp4\" loop playsinline><\/video>\n        <div class=\"geo-play-overlay\" id=\"kroi-geoPlayOverlay\"><div class=\"geo-play-btn\">\u25b6<\/div><\/div>\n      <\/div>\n      <div class=\"geo-body\">\n        <div class=\"geo-eyebrow\">\u2728 Feature Spotlight \u2014 Branded Loyalty App<\/div>\n        <div class=\"geo-title\">Drive Walk-ins with Geofencing Technology<\/div>\n        <div class=\"geo-desc\">Your branded loyalty app detects when customers are near your location \u2014 or near a competitor \u2014 and automatically triggers targeted offers.<\/div>\n        <div class=\"geo-pills\">\n          <span class=\"geo-pill\">\ud83d\udccd Target by location radius<\/span>\n          <span class=\"geo-pill\">\ud83c\udfea Trigger offers near competitors<\/span>\n          <span class=\"geo-pill\">\u23f0 Time-based push alerts<\/span>\n          <span class=\"geo-pill\">\ud83c\udfaf Hotspot targeting<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- MOBILE RESULTS -->\n  <div class=\"mobile-results\">\n    <div style=\"color:#7aaabb;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;margin-bottom:12px\">Your ROI Estimate<\/div>\n    <div style=\"text-align:center;margin-bottom:14px\">\n      <div style=\"font-size:11px;color:#7aaabb;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-bottom:4px\">Additional Annual Revenue<\/div>\n      <div style=\"font-size:40px;font-weight:900;color:#22d3ee;line-height:1\" id=\"kroi-mBigNum\">\u2014<\/div>\n      <div style=\"font-size:13px;font-weight:600;color:#86efac;margin-top:4px\" id=\"kroi-mUplift\"><\/div>\n    <\/div>\n    <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px\">\n      <div style=\"background:rgba(255,255,255,0.04);border:1px solid #1e3a4a;border-radius:8px;padding:10px 12px\"><div style=\"font-size:10px;color:#7aaabb;font-weight:600;text-transform:uppercase;margin-bottom:3px\">Customers Retained<\/div><div style=\"font-size:17px;font-weight:800;color:#4ade80\" id=\"kroi-mRetained\">\u2014<\/div><\/div>\n      <div style=\"background:rgba(255,255,255,0.04);border:1px solid #1e3a4a;border-radius:8px;padding:10px 12px\"><div style=\"font-size:10px;color:#7aaabb;font-weight:600;text-transform:uppercase;margin-bottom:3px\">Net ROI<\/div><div style=\"font-size:17px;font-weight:800;color:#fbbf24\" id=\"kroi-mNetROI\">\u2014<\/div><\/div>\n      <div style=\"background:rgba(255,255,255,0.04);border:1px solid #1e3a4a;border-radius:8px;padding:10px 12px\"><div style=\"font-size:10px;color:#7aaabb;font-weight:600;text-transform:uppercase;margin-bottom:3px\">Rec. Plan<\/div><div style=\"font-size:14px;font-weight:800;color:#22d3ee\" id=\"kroi-mPlan\">\u2014<\/div><\/div>\n    <\/div>\n    <a href=\"https:\/\/loyalty.kangaroorewards.com\/roi-calculator-booking-form\/\" target=\"_blank\" style=\"display:block;width:100%;padding:13px;background:#0099cc;color:#fff;text-align:center;border-radius:9px;font-family:Roboto,sans-serif;font-size:14px;font-weight:700;text-decoration:none;box-shadow:0 4px 16px rgba(0,153,204,0.35)\">Book a Free Demo \u2192<\/a>\n  <\/div>\n\n<\/div><!-- \/left-col -->\n\n<!-- \u2500\u2500 RIGHT STICKY \u2500\u2500 -->\n<div class=\"right-col\">\n  <div class=\"rp-logo\"><div class=\"rp-logo-dot\"><\/div><div class=\"rp-logo-text\">KANGAROO REWARDS \u2014 ROI ESTIMATE<\/div><\/div>\n  <div class=\"rp-hero\">\n    <div class=\"rp-hero-label\">Additional Annual Revenue<\/div>\n    <div class=\"rp-big-num\" id=\"kroi-bigNum\">$0<\/div>\n    <div class=\"rp-uplift\" id=\"kroi-upliftPct\">+0% revenue uplift<\/div>\n    <div class=\"rp-tagline\" id=\"kroi-tagline\">Fill in your details to see your projected revenue boost.<\/div>\n  <\/div>\n  <div class=\"roi-bar-wrap\">\n    <div class=\"roi-bar-top\"><span class=\"roi-bar-lbl\">Revenue Uplift<\/span><span class=\"roi-bar-pct\" id=\"kroi-barPctLabel\">0%<\/span><\/div>\n    <div class=\"roi-bar-track\"><div class=\"roi-bar-fill\" id=\"kroi-upliftBar\"><\/div><\/div>\n  <\/div>\n  <div class=\"rp-divider\"><\/div>\n  <div class=\"metrics-grid\">\n    <div class=\"met-box\"><div class=\"met-lbl\">Customers Retained<\/div><div class=\"met-val green\" id=\"kroi-mRetention\">\u2014<\/div><div class=\"met-sub\">saved from churn<\/div><\/div>\n    <div class=\"met-box\"><div class=\"met-lbl\">Revenue from Retention<\/div><div class=\"met-val cyan\" id=\"kroi-mRetRev\">\u2014<\/div><div class=\"met-sub\">loyalty impact<\/div><\/div>\n    <div class=\"met-box\"><div class=\"met-lbl\">Email Revenue Lift<\/div><div class=\"met-val cyan\" id=\"kroi-mEmailRev\">\u2014<\/div><div class=\"met-sub\">campaigns &amp; automations<\/div><\/div>\n    <div class=\"met-box\"><div class=\"met-lbl\">Net Revenue Gain<\/div><div class=\"met-val amber\" id=\"kroi-mNet\">\u2014<\/div><div class=\"met-sub\">after plan cost<\/div><\/div>\n    <div class=\"met-box\"><div class=\"met-lbl\">Features Active<\/div><div class=\"met-val cyan\" id=\"kroi-mFeats\">2 \/ 6<\/div><div class=\"met-sub\">of 6 available<\/div><\/div>\n  <\/div>\n  <div class=\"rp-divider\"><\/div>\n  <div class=\"plan-badge\"><div class=\"plan-badge-left\">Recommended Plan<\/div><div class=\"plan-badge-right\" id=\"kroi-recPlan\">Kangaroo Plus<\/div><\/div>\n  <a href=\"https:\/\/loyalty.kangaroorewards.com\/roi-calculator-booking-form\/\" target=\"_blank\" class=\"cta-btn\">Book a Free Demo \u2192<\/a>\n  <div class=\"cta-sub\">No Commitment | 100% Free Demo<\/div>\n<\/div>\n\n<\/div><!-- \/layout -->\n<\/div><!-- \/kroi-wrap -->\n\n<script>\n\/* ============================================================\n   KANGAROO ROI CALCULATOR\n   WordPress\/Elementor-safe version:\n   - All IDs prefixed with \"kroi-\" to avoid conflicts\n   - NO inline onclick\/onchange attributes (removed from HTML)\n   - All event listeners attached here via addEventListener\n   - All buttons have type=\"button\" to prevent form submission\n   - Logic wrapped in IIFE to avoid global variable pollution\n   - Animation keyframe names prefixed to avoid CSS conflicts\n   ============================================================ *\/\n(function() {\n  'use strict';\n\n  \/* \u2500\u2500 STATE \u2500\u2500 *\/\n  var S = {\n    industry: null,\n    ecomX: 'none', retailX: 'none',\n    beautyProd: 'no', beautyProdCh: 'both',\n    vapeX: 'both', vapeFreq: 'monthly',\n    petX: 'both', petSvc: 'no',\n    fashionX: 'web', fashionSkus: 'small', fashionBuy: 'seasonal',\n    sportsX: 'web', sportsCons: 'no', sportsGym: 'no',\n    monthlyRev: 30000, avgCheck: 45, numCustomers: 500,\n    churn: 40, pos: '',\n    features: new Set(['loyalty','email'])\n  };\n\n  \/* \u2500\u2500 BENCHMARKS \u2500\u2500 *\/\n  var IND = {\n    ecommerce: { L:0.060, E:0.042, S:0.026, R:0.030, T:0.052, A:0.028 },\n    retail:    { L:0.065, E:0.038, S:0.024, R:0.028, T:0.046, A:0.032 },\n    beauty:    { L:0.078, E:0.044, S:0.030, R:0.038, T:0.058, A:0.040 },\n    vape:      { L:0.072, E:0.036, S:0.000, R:0.026, T:0.040, A:0.028 },\n    pet:       { L:0.065, E:0.038, S:0.024, R:0.032, T:0.046, A:0.030 },\n    cafe:      { L:0.085, E:0.032, S:0.030, R:0.024, T:0.038, A:0.040 },\n    grocery:   { L:0.052, E:0.028, S:0.020, R:0.020, T:0.034, A:0.024 },\n    fashion:   { L:0.062, E:0.048, S:0.026, R:0.036, T:0.055, A:0.030 },\n    sports:    { L:0.072, E:0.042, S:0.026, R:0.032, T:0.050, A:0.038 }\n  };\n\n  var PKG = { core:79, plus:199, elite:349 };\n\n  \/* \u2500\u2500 HELPERS \u2500\u2500 *\/\n  function $(id) { return document.getElementById(id); }\n  function qv(name) { var el = document.querySelector('input[name=\"'+name+'\"]:checked'); return el ? el.value : null; }\n  function numVal(id, def) { var el = $(id); return el ? (parseFloat(el.value) || def) : def; }\n\n  function fmt(n) {\n    if (!n || isNaN(n) || n <= 0) return '\u2014';\n    if (n >= 1000000) return '$' + (n\/1000000).toFixed(1) + 'M';\n    if (n >= 1000)    return '$' + (n\/1000).toFixed(n >= 10000 ? 0 : 1) + 'K';\n    return '$' + Math.round(n).toLocaleString();\n  }\n  function fmtN(n) {\n    if (!n || isNaN(n) || n <= 0) return '\u2014';\n    return n >= 1000 ? (n\/1000).toFixed(1)+'K' : Math.round(n).toLocaleString();\n  }\n\n  function show(id, vis) {\n    var el = $(id);\n    if (!el) return;\n    el.style.display = vis ? '' : 'none';\n  }\n  function cls(id, cls_, add) {\n    var el = $(id);\n    if (!el) return;\n    el.classList[add ? 'add' : 'remove'](cls_);\n  }\n\n  \/* \u2500\u2500 LOCATION COUNT \u2500\u2500 *\/\n  function getLocCount() {\n    var ind = S.industry;\n    if (ind === 'ecommerce') {\n      if (S.ecomX !== 'offline' && S.ecomX !== 'both') return 1;\n      return numVal('kroi-ecomLocType', 1);\n    }\n    if (ind === 'pet') {\n      if (S.petX === 'online') return 1;\n      return numVal('kroi-petLocType', 1);\n    }\n    if (ind === 'fashion' || ind === 'sports') {\n      var hasOffline = (ind === 'fashion' && ['offline','all'].includes(S.fashionX)) ||\n                      (ind === 'sports'  && ['offline','all'].includes(S.sportsX));\n      return hasOffline ? numVal('kroi-globalLocType', 1) : 1;\n    }\n    return numVal('kroi-globalLocType', 1);\n  }\n\n  \/* \u2500\u2500 INDUSTRY SELECTION \u2500\u2500 *\/\n  function selInd(ind) {\n    document.querySelectorAll('#kroi-wrap .ind-btn').forEach(function(b) { b.classList.remove('sel'); });\n    var btn = document.querySelector('#kroi-wrap .ind-btn[data-ind=\"'+ind+'\"]');\n    if (btn) btn.classList.add('sel');\n    S.industry = ind;\n\n    ['ecomQ','retailQ','beautyQ','vapeQ','petQ','fashionQ','sportsQ'].forEach(function(q) {\n      cls('kroi-'+q, 'show', false);\n    });\n    var qMap = { ecommerce:'ecomQ', retail:'retailQ', beauty:'beautyQ', vape:'vapeQ', pet:'petQ', fashion:'fashionQ', sports:'sportsQ' };\n    if (qMap[ind]) cls('kroi-'+qMap[ind], 'show', true);\n\n    var showGlobalLoc = ['cafe','grocery'].includes(ind);\n    show('kroi-globalLocRow', showGlobalLoc);\n    show('kroi-emailListRow', S.features.has('email'));\n\n    updateSmsState();\n    updateSpotlights();\n    calc();\n  }\n\n  \/* \u2500\u2500 SMS STATE \u2500\u2500 *\/\n  function updateSmsState() {\n    var item  = $('kroi-feat-sms');\n    var badge = $('kroi-smsWarnBadge');\n    var isVape = S.industry === 'vape';\n    if (isVape) {\n      item.classList.add('disabled'); item.classList.remove('on');\n      badge.style.display = 'inline-block';\n      S.features.delete('sms');\n    } else {\n      item.classList.remove('disabled');\n      badge.style.display = 'none';\n    }\n  }\n\n  \/* \u2500\u2500 SPOTLIGHTS \u2500\u2500 *\/\n  function updateSpotlights() {\n    var id = S.industry;\n    cls('kroi-caseStudyCard', 'show', id === 'retail');\n    cls('kroi-geoSpotlight', 'show', ['retail','cafe','beauty'].includes(id));\n  }\n\n  \/* \u2500\u2500 FEATURES \u2500\u2500 *\/\n  function togFeat(id) {\n    var item = $('kroi-feat-' + id);\n    if (!item || item.classList.contains('disabled')) return;\n    if (S.features.has(id)) { S.features.delete(id); item.classList.remove('on'); }\n    else                    { S.features.add(id);    item.classList.add('on');    }\n    show('kroi-emailListRow', S.features.has('email'));\n    calc();\n  }\n\n  \/* \u2500\u2500 MAIN CALC \u2500\u2500 *\/\n  function calc() {\n    S.monthlyRev   = numVal('kroi-monthlyRev',   30000);\n    S.avgCheck     = numVal('kroi-avgCheck',      45);\n    S.numCustomers = numVal('kroi-numCustomers',  500);\n    var slider = $('kroi-churnSlider');\n    S.churn = slider ? parseInt(slider.value) || 40 : 40;\n\n    var annRev = S.monthlyRev * 12;\n    var f      = S.features;\n    var ind    = S.industry || 'grocery';\n    var iData  = IND[ind];\n\n    var indMod = 0;\n\n    if (ind === 'ecommerce') {\n      if (S.ecomX === 'offline' || S.ecomX === 'amazon') indMod += 0.010;\n      if (S.ecomX === 'both') indMod += 0.018;\n    }\n    if (ind === 'retail') {\n      var txns = numVal('kroi-retailTxns', 800);\n      if (txns > 1500) indMod += 0.012; else if (txns > 600) indMod += 0.006;\n      if (S.retailX === 'online' || S.retailX === 'amazon') indMod += 0.010;\n      if (S.retailX === 'both') indMod += 0.016;\n    }\n    if (ind === 'beauty') {\n      var appts = numVal('kroi-beautyAppts', 40);\n      if (appts > 80) indMod += 0.014; else if (appts > 30) indMod += 0.008;\n      if (S.beautyProd === 'yes') indMod += 0.010;\n    }\n    if (ind === 'vape') {\n      if (S.vapeFreq === 'weekly') indMod += 0.022;\n      else if (S.vapeFreq === 'monthly') indMod += 0.010;\n      if (S.vapeX === 'both') indMod += 0.008;\n    }\n    if (ind === 'pet') {\n      if (S.petX === 'both') indMod += 0.010;\n      if (S.petSvc === 'yes') {\n        var grooms = numVal('kroi-petGrooms', 60);\n        if (grooms > 100) indMod += 0.016; else if (grooms > 40) indMod += 0.010; else indMod += 0.006;\n      }\n    }\n    if (ind === 'fashion') {\n      if (['amazon','web_amazon','all'].includes(S.fashionX)) indMod += 0.012;\n      if (S.fashionX === 'all') indMod += 0.010;\n      if (S.fashionSkus === 'mid') indMod += 0.006;\n      if (S.fashionSkus === 'large') indMod += 0.012;\n      if (S.fashionBuy === 'regular') indMod += 0.014;\n      if (S.fashionBuy === 'mixed') indMod += 0.007;\n    }\n    if (ind === 'sports') {\n      if (['amazon','web_amazon','all'].includes(S.sportsX)) indMod += 0.012;\n      if (S.sportsX === 'all') indMod += 0.010;\n      if (S.sportsCons === 'yes') indMod += 0.022;\n      if (S.sportsGym === 'yes') {\n        var members = numVal('kroi-sportsMembers', 150);\n        if (members > 300) indMod += 0.018; else if (members > 100) indMod += 0.013; else indMod += 0.007;\n      }\n    }\n\n    var locCount = getLocCount();\n    var locMod   = locCount > 1 ? Math.min(0.014, (locCount - 1) * 0.005) : 0;\n    var mod      = indMod + locMod;\n\n    var loyaltyRev=0, emailRev=0, smsRev=0, referralRev=0, tiersRev=0, appRev=0;\n\n    if (f.has('loyalty')) {\n      var churningCusts    = S.numCustomers * (S.churn \/ 100);\n      var savedCusts       = churningCusts * 0.28;\n      var retentionRevenue = savedCusts * S.avgCheck * 5;\n      var spendLift        = annRev * (iData.L + mod * 0.5) * 0.65;\n      loyaltyRev = Math.round(retentionRevenue + spendLift);\n    }\n\n    if (f.has('email')) {\n      var listRaw   = numVal('kroi-emailListSize', 0);\n      var emailList = listRaw > 0 ? listRaw : S.numCustomers * 0.65;\n      var emailFromList = emailList * 12 * 0.22 * 0.03 * 0.04 * S.avgCheck;\n      var emailFromRev  = annRev * (iData.E + mod * 0.35);\n      emailRev = Math.round((emailFromList + emailFromRev) \/ 2 * 1.6);\n    }\n\n    if (f.has('sms') && ind !== 'vape') {\n      smsRev = Math.round(annRev * (iData.S + mod * 0.3));\n    }\n\n    if (f.has('tiers')) {\n      tiersRev = Math.round(annRev * (iData.T + mod * 0.45));\n    }\n\n    if (f.has('app')) {\n      appRev = Math.round(annRev * (iData.A + mod * 0.35));\n    }\n\n    if (f.has('referral')) {\n      var refCusts = S.numCustomers * 0.04 * (1 + mod);\n      referralRev = Math.round(refCusts * S.avgCheck * 4);\n    }\n\n    var totalGain = loyaltyRev + emailRev + smsRev + tiersRev + appRev + referralRev;\n    var hardCap = annRev * 0.25;\n    if (totalGain > hardCap && hardCap > 0) {\n      var scale = hardCap \/ totalGain;\n      loyaltyRev  = Math.round(loyaltyRev  * scale);\n      emailRev    = Math.round(emailRev    * scale);\n      smsRev      = Math.round(smsRev      * scale);\n      tiersRev    = Math.round(tiersRev    * scale);\n      appRev      = Math.round(appRev      * scale);\n      referralRev = Math.round(referralRev * scale);\n      totalGain   = Math.round(hardCap);\n    }\n\n    var recKey = 'core';\n    if (f.has('app')) recKey = 'elite';\n    else if (f.has('referral') || f.has('tiers') || f.has('sms') || f.has('email')) recKey = 'plus';\n\n    var planCost = PKG[recKey] * 12;\n    var netGain  = totalGain - planCost;\n    var uplift   = annRev > 0 ? ((totalGain \/ annRev) * 100).toFixed(1) : '0.0';\n\n    var retainedCusts = f.has('loyalty')\n      ? Math.round(S.numCustomers * (S.churn \/ 100) * 0.28)\n      : 0;\n\n    var planNames = { core:'Core \u2014 $79\/mo', plus:'Plus \u2014 $199\/mo', elite:'Elite \u2014 $349\/mo' };\n\n    \/* Update UI *\/\n    var bn = $('kroi-bigNum');\n    if (bn) bn.textContent = totalGain > 0 ? fmt(totalGain) : '$0';\n    var up = $('kroi-upliftPct'); if (up) up.textContent = '+' + uplift + '% revenue uplift';\n    var bp = $('kroi-barPctLabel'); if (bp) bp.textContent = uplift + '%';\n    var bar = $('kroi-upliftBar');\n    if (bar) setTimeout(function() { bar.style.width = Math.min(100, parseFloat(uplift) \/ 25 * 100) + '%'; }, 80);\n\n    var mRet = $('kroi-mRetention'); if (mRet) mRet.textContent = retainedCusts > 0 ? fmtN(retainedCusts) : '\u2014';\n    var mRR  = $('kroi-mRetRev');    if (mRR)  mRR.textContent  = loyaltyRev > 0   ? fmt(loyaltyRev)  : '\u2014';\n    var mER  = $('kroi-mEmailRev');  if (mER)  mER.textContent  = emailRev > 0     ? fmt(emailRev)    : '\u2014';\n    var mN   = $('kroi-mNet');       if (mN)   mN.textContent   = netGain > 0      ? fmt(netGain)     : '\u2014';\n    var mF   = $('kroi-mFeats');     if (mF)   mF.textContent   = f.size + ' \/ 6';\n    var rP   = $('kroi-recPlan');    if (rP)   rP.textContent   = 'Kangaroo ' + planNames[recKey];\n\n    var tEl = $('kroi-tagline');\n    if (tEl) tEl.textContent = (totalGain > 0 && S.industry)\n      ? 'A realistic ' + uplift + '% revenue boost \u2014 backed by real loyalty program benchmarks.'\n      : 'Fill in your details to see your projected revenue boost.';\n\n    var breakdown = [];\n    if (f.has('loyalty') && loyaltyRev > 0)   breakdown.push('Loyalty &amp; retention: '+fmt(loyaltyRev));\n    if (f.has('email')   && emailRev > 0)     breakdown.push('Email marketing: '+fmt(emailRev));\n    if (f.has('sms')     && smsRev > 0)       breakdown.push('SMS campaigns: '+fmt(smsRev));\n    if (f.has('tiers')   && tiersRev > 0)     breakdown.push('Tiered rewards: '+fmt(tiersRev));\n    if (f.has('app')     && appRev > 0)       breakdown.push('Branded app: '+fmt(appRev));\n    if (f.has('referral')&& referralRev > 0)  breakdown.push('Referral program: '+fmt(referralRev));\n    var bdEl = $('kroi-calcBreakdown');\n    if (bdEl) {\n      if (breakdown.length) {\n        bdEl.innerHTML = '<strong>Estimate breakdown:<\/strong> ' + breakdown.join(' \u00b7 ')\n          + '<br><span style=\"font-size:11px;color:#aaa;margin-top:4px;display:block\">Based on industry benchmarks. Actual results vary.<\/span>';\n      } else {\n        bdEl.innerHTML = 'Select your features above to see the breakdown.';\n      }\n    }\n\n    \/* Mobile *\/\n    var mBN = $('kroi-mBigNum');   if (mBN) mBN.textContent = totalGain > 0 ? fmt(totalGain) : '\u2014';\n    var mUP = $('kroi-mUplift');   if (mUP) mUP.textContent = totalGain > 0 ? '+' + uplift + '% revenue uplift' : '';\n    var mRd = $('kroi-mRetained'); if (mRd) mRd.textContent = retainedCusts > 0 ? fmtN(retainedCusts) : '\u2014';\n    var mNR = $('kroi-mNetROI');   if (mNR) mNR.textContent = netGain > 0 ? fmt(netGain) : '\u2014';\n    var mPl = $('kroi-mPlan');     if (mPl) mPl.textContent = planNames[recKey].split('\u2014')[0].trim();\n  }\n\n  \/* \u2500\u2500 BIND ALL EVENTS \u2500\u2500 *\/\n  function bindEvents() {\n\n    \/* Industry buttons *\/\n    document.querySelectorAll('#kroi-wrap .ind-btn').forEach(function(btn) {\n      btn.addEventListener('click', function(e) {\n        e.preventDefault();\n        selInd(this.getAttribute('data-ind'));\n      });\n    });\n\n    \/* Feature toggles *\/\n    document.querySelectorAll('#kroi-wrap .feat-item').forEach(function(item) {\n      item.addEventListener('click', function(e) {\n        e.preventDefault();\n        var feat = this.getAttribute('data-feat');\n        if (feat === 'sms') {\n          if (S.industry === 'vape') {\n            cls('kroi-smsModal', 'open', true);\n            return;\n          }\n        }\n        togFeat(feat);\n      });\n    });\n\n    \/* Modal close *\/\n    var mc = $('kroi-modalClose');\n    if (mc) mc.addEventListener('click', function(e) { e.preventDefault(); cls('kroi-smsModal','open',false); });\n    var md = $('kroi-modalDismiss');\n    if (md) md.addEventListener('click', function() { cls('kroi-smsModal','open',false); });\n    var mo = $('kroi-smsModal');\n    if (mo) mo.addEventListener('click', function(e) { if (e.target === mo) cls('kroi-smsModal','open',false); });\n\n    \/* Churn slider *\/\n    var cs = $('kroi-churnSlider');\n    if (cs) cs.addEventListener('input', function() {\n      var cv = $('kroi-churnVal');\n      if (cv) cv.textContent = this.value + '%';\n      S.churn = parseInt(this.value);\n      calc();\n    });\n\n    \/* Number inputs \u2014 calc on change *\/\n    ['kroi-monthlyRev','kroi-avgCheck','kroi-numCustomers','kroi-emailListSize',\n     'kroi-retailTxns','kroi-beautyAppts','kroi-petGrooms','kroi-sportsMembers'].forEach(function(id) {\n      var el = $(id);\n      if (el) el.addEventListener('input', calc);\n    });\n\n    \/* Selects *\/\n    ['kroi-ecomLocType','kroi-petLocType','kroi-globalLocType'].forEach(function(id) {\n      var el = $(id);\n      if (el) el.addEventListener('change', calc);\n    });\n\n    \/* POS select *\/\n    var pos = $('kroi-posSelect');\n    if (pos) pos.addEventListener('change', function() {\n      var val = this.value;\n      S.pos = val;\n      var note = $('kroi-posNote');\n      var txt  = $('kroi-posNoteText');\n      if (val && val !== 'Other') {\n        if (txt) txt.textContent = 'Kangaroo integrates directly with ' + val + ' \u2014 seamless setup!';\n        if (note) note.classList.add('show');\n      } else if (val === 'Other') {\n        if (txt) txt.textContent = 'Kangaroo offers flexible API integrations \u2014 our team can connect your platform seamlessly.';\n        if (note) note.classList.add('show');\n      } else {\n        if (note) note.classList.remove('show');\n      }\n      calc();\n    });\n\n    \/* Ecom X radios *\/\n    document.querySelectorAll('input[name=\"kroi-ecomX\"]').forEach(function(r) {\n      r.addEventListener('change', function() {\n        S.ecomX = this.value;\n        var locQ = $('kroi-ecomLocQ');\n        if (locQ) locQ.style.display = (S.ecomX === 'offline' || S.ecomX === 'both') ? 'block' : 'none';\n        cls('kroi-ecomAmazonBanner', 'show', S.ecomX === 'amazon' || S.ecomX === 'both');\n        calc();\n      });\n    });\n\n    \/* Retail X radios *\/\n    document.querySelectorAll('input[name=\"kroi-retailX\"]').forEach(function(r) {\n      r.addEventListener('change', function() {\n        S.retailX = this.value;\n        cls('kroi-retailAmazonBanner', 'show', S.retailX === 'amazon' || S.retailX === 'both');\n        calc();\n      });\n    });\n\n    \/* Beauty product yes\/no *\/\n    document.querySelectorAll('[data-beauty-prod]').forEach(function(btn) {\n      btn.addEventListener('click', function(e) {\n        e.preventDefault();\n        var val = this.getAttribute('data-beauty-prod');\n        S.beautyProd = val;\n        cls('kroi-beautyProdYes','sel', val==='yes');\n        cls('kroi-beautyProdNo','sel', val==='no');\n        var bpq = $('kroi-beautyProdChannelQ');\n        if (bpq) bpq.style.display = val === 'yes' ? 'block' : 'none';\n        calc();\n      });\n    });\n\n    \/* Beauty product channel *\/\n    document.querySelectorAll('input[name=\"kroi-beautyProdCh\"]').forEach(function(r) {\n      r.addEventListener('change', function() { S.beautyProdCh = this.value; calc(); });\n    });\n\n    \/* Vape X *\/\n    document.querySelectorAll('input[name=\"kroi-vapeX\"]').forEach(function(r) {\n      r.addEventListener('change', function() { S.vapeX = this.value; calc(); });\n    });\n\n    \/* Vape freq *\/\n    document.querySelectorAll('input[name=\"kroi-vapeFreq\"]').forEach(function(r) {\n      r.addEventListener('change', function() { S.vapeFreq = this.value; calc(); });\n    });\n\n    \/* Pet X *\/\n    document.querySelectorAll('input[name=\"kroi-petX\"]').forEach(function(r) {\n      r.addEventListener('change', function() {\n        S.petX = this.value;\n        var showLoc = S.petX === 'offline' || S.petX === 'both';\n        cls('kroi-petLocQ', 'show', showLoc);\n        calc();\n      });\n    });\n\n    \/* Pet service yes\/no *\/\n    document.querySelectorAll('[data-pet-svc]').forEach(function(btn) {\n      btn.addEventListener('click', function(e) {\n        e.preventDefault();\n        var val = this.getAttribute('data-pet-svc');\n        S.petSvc = val;\n        cls('kroi-petSvcYes','sel', val==='yes');\n        cls('kroi-petSvcNo','sel', val==='no');\n        cls('kroi-petGroomQ', 'show', val==='yes');\n        calc();\n      });\n    });\n\n    \/* Fashion X *\/\n    document.querySelectorAll('input[name=\"kroi-fashionX\"]').forEach(function(r) {\n      r.addEventListener('change', function() {\n        S.fashionX = this.value;\n        var showAmazon = ['amazon','web_amazon','all'].includes(S.fashionX);\n        cls('kroi-fashionAmazonBanner', 'show', showAmazon);\n        show('kroi-globalLocRow', ['offline','all'].includes(S.fashionX));\n        calc();\n      });\n    });\n\n    \/* Fashion SKUs *\/\n    document.querySelectorAll('input[name=\"kroi-fashionSkus\"]').forEach(function(r) {\n      r.addEventListener('change', function() { S.fashionSkus = this.value; calc(); });\n    });\n\n    \/* Fashion buy pattern *\/\n    document.querySelectorAll('input[name=\"kroi-fashionBuy\"]').forEach(function(r) {\n      r.addEventListener('change', function() { S.fashionBuy = this.value; calc(); });\n    });\n\n    \/* Sports X *\/\n    document.querySelectorAll('input[name=\"kroi-sportsX\"]').forEach(function(r) {\n      r.addEventListener('change', function() {\n        S.sportsX = this.value;\n        var showAmazon = ['amazon','web_amazon','all'].includes(S.sportsX);\n        cls('kroi-sportsAmazonBanner', 'show', showAmazon);\n        show('kroi-globalLocRow', ['offline','all'].includes(S.sportsX));\n        calc();\n      });\n    });\n\n    \/* Sports consumables *\/\n    document.querySelectorAll('[data-sports-cons]').forEach(function(btn) {\n      btn.addEventListener('click', function(e) {\n        e.preventDefault();\n        var val = this.getAttribute('data-sports-cons');\n        S.sportsCons = val;\n        cls('kroi-sportsConsYes','sel', val==='yes');\n        cls('kroi-sportsConsNo','sel', val==='no');\n        calc();\n      });\n    });\n\n    \/* Sports gym *\/\n    document.querySelectorAll('[data-sports-gym]').forEach(function(btn) {\n      btn.addEventListener('click', function(e) {\n        e.preventDefault();\n        var val = this.getAttribute('data-sports-gym');\n        S.sportsGym = val;\n        cls('kroi-sportsGymYes','sel', val==='yes');\n        cls('kroi-sportsGymNo','sel', val==='no');\n        cls('kroi-sportsGymQ', 'show', val==='yes');\n        calc();\n      });\n    });\n\n    \/* Geo video *\/\n    var gvw = $('kroi-geoVideoWrap');\n    if (gvw) gvw.addEventListener('click', function() {\n      var v = $('kroi-geoVideo');\n      var o = $('kroi-geoPlayOverlay');\n      if (!v) return;\n      if (v.paused) { v.play(); if (o) o.classList.add('hidden'); }\n      else          { v.pause(); if (o) o.classList.remove('hidden'); }\n    });\n  }\n\n  \/* \u2500\u2500 INIT \u2500\u2500 *\/\n  function init() {\n    bindEvents();\n    calc();\n  }\n\n  \/* Run after DOM is ready *\/\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n\n})();\n<\/script>\n\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e2f6d07 animejs-disable elementor-widget elementor-widget-spacer\" data-id=\"e2f6d07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6a2b187 e-flex e-con-boxed animejs-disable e-con e-parent\" data-id=\"6a2b187\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0fdfcb5 animejs-disable elementor-widget elementor-widget-image\" data-id=\"0fdfcb5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"2000\" height=\"400\" src=\"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967.png\" class=\"attachment-full size-full wp-image-10907\" alt=\"\" srcset=\"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967.png 2000w, https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967-300x60.png 300w, https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967-1024x205.png 1024w, https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967-768x154.png 768w, https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967-1536x307.png 1536w, https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967-18x4.png 18w, https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2026\/01\/Untitled-design-2026-01-20T143132.967-650x130.png 650w\" sizes=\"(max-width: 2000px) 100vw, 2000px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>How much more can you make with loyalty &amp; referrals? Answer a few questions about your business and see your estimated additional revenue \u2014 instantly. Kangaroo Rewards \u2014 ROI Calculator \u2715 \u26a0\ufe0f SMS Marketing is not available for Vape &amp; CBD businesses This feature is restricted by SMS carriers in most regions due to regulatory [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8370,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_pvb_checkbox_block_on_post":false,"footnotes":""},"class_list":["post-12278","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Loyalty Program ROI Calculator - Kangaroo Rewards<\/title>\n<meta name=\"description\" content=\"Calculate how much revenue your loyalty program can generate. Try Kangaroo Rewards\u2019 free Loyalty ROI Calculator and see your growth potential today.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/loyalty.kangaroorewards.com\/fr\/roi\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Loyalty Program ROI Calculator - Kangaroo Rewards\" \/>\n<meta property=\"og:description\" content=\"Calculate how much revenue your loyalty program can generate. Try Kangaroo Rewards\u2019 free Loyalty ROI Calculator and see your growth potential today.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/loyalty.kangaroorewards.com\/fr\/roi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kangaroo Rewards\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-12T14:38:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2500\" \/>\n\t<meta property=\"og:image:height\" content=\"2500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimation du temps de lecture\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/\",\"url\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/\",\"name\":\"Loyalty Program ROI Calculator - Kangaroo Rewards\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png\",\"datePublished\":\"2026-02-27T20:43:22+00:00\",\"dateModified\":\"2026-03-12T14:38:39+00:00\",\"description\":\"Calculate how much revenue your loyalty program can generate. Try Kangaroo Rewards\u2019 free Loyalty ROI Calculator and see your growth potential today.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/#primaryimage\",\"url\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png\",\"contentUrl\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png\",\"width\":2500,\"height\":2500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/roi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Loyalty Program ROI Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/#website\",\"url\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/\",\"name\":\"Kangaroo Rewards\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/#organization\",\"name\":\"Kangaroo Rewards\",\"url\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png\",\"contentUrl\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png\",\"width\":2500,\"height\":2500,\"caption\":\"Kangaroo Rewards\"},\"image\":{\"@id\":\"https:\\\/\\\/loyalty.kangaroorewards.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Loyalty Program ROI Calculator - Kangaroo Rewards","description":"Calculate how much revenue your loyalty program can generate. Try Kangaroo Rewards\u2019 free Loyalty ROI Calculator and see your growth potential today.","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:\/\/loyalty.kangaroorewards.com\/fr\/roi\/","og_locale":"fr_CA","og_type":"article","og_title":"Loyalty Program ROI Calculator - Kangaroo Rewards","og_description":"Calculate how much revenue your loyalty program can generate. Try Kangaroo Rewards\u2019 free Loyalty ROI Calculator and see your growth potential today.","og_url":"https:\/\/loyalty.kangaroorewards.com\/fr\/roi\/","og_site_name":"Kangaroo Rewards","article_modified_time":"2026-03-12T14:38:39+00:00","og_image":[{"width":2500,"height":2500,"url":"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimation du temps de lecture":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/loyalty.kangaroorewards.com\/roi\/","url":"https:\/\/loyalty.kangaroorewards.com\/roi\/","name":"Loyalty Program ROI Calculator - Kangaroo Rewards","isPartOf":{"@id":"https:\/\/loyalty.kangaroorewards.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/loyalty.kangaroorewards.com\/roi\/#primaryimage"},"image":{"@id":"https:\/\/loyalty.kangaroorewards.com\/roi\/#primaryimage"},"thumbnailUrl":"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png","datePublished":"2026-02-27T20:43:22+00:00","dateModified":"2026-03-12T14:38:39+00:00","description":"Calculate how much revenue your loyalty program can generate. Try Kangaroo Rewards\u2019 free Loyalty ROI Calculator and see your growth potential today.","breadcrumb":{"@id":"https:\/\/loyalty.kangaroorewards.com\/roi\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/loyalty.kangaroorewards.com\/roi\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/loyalty.kangaroorewards.com\/roi\/#primaryimage","url":"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png","contentUrl":"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png","width":2500,"height":2500},{"@type":"BreadcrumbList","@id":"https:\/\/loyalty.kangaroorewards.com\/roi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/loyalty.kangaroorewards.com\/"},{"@type":"ListItem","position":2,"name":"Loyalty Program ROI Calculator"}]},{"@type":"WebSite","@id":"https:\/\/loyalty.kangaroorewards.com\/#website","url":"https:\/\/loyalty.kangaroorewards.com\/","name":"Kangaroo","description":"","publisher":{"@id":"https:\/\/loyalty.kangaroorewards.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/loyalty.kangaroorewards.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"},{"@type":"Organization","@id":"https:\/\/loyalty.kangaroorewards.com\/#organization","name":"Kangaroo","url":"https:\/\/loyalty.kangaroorewards.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/loyalty.kangaroorewards.com\/#\/schema\/logo\/image\/","url":"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png","contentUrl":"https:\/\/loyalty.kangaroorewards.com\/wp-content\/uploads\/2025\/07\/cropped-9E3673A8-2DA6-4EE2-9738-1654094C88D2.png","width":2500,"height":2500,"caption":"Kangaroo Rewards"},"image":{"@id":"https:\/\/loyalty.kangaroorewards.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/pages\/12278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/comments?post=12278"}],"version-history":[{"count":5,"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/pages\/12278\/revisions"}],"predecessor-version":[{"id":12679,"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/pages\/12278\/revisions\/12679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/media\/8370"}],"wp:attachment":[{"href":"https:\/\/loyalty.kangaroorewards.com\/fr\/wp-json\/wp\/v2\/media?parent=12278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}