PageSourceSearch

https://ttoydigital.agency/blog/measure-website-roi

html ttoydigital.agency collected 2026-10-08 05:10:22 UTC 66,375 bytes, 254 lines download raw bytes

1<!DOCTYPE html><html lang="en-GB" data-text-size="100" data-line-spacing="normal" data-letter-spacing="normal" data-contrast="default" style="--announcement-height: 0px;"><head>
2    <meta charset="UTF-8">
3    <meta name="viewport" content="width=device-width, initial-scale=1.0">
4    <meta name="theme-color" content="#0b1220">
5    <title>6 Quick Wins to Boost Website ROI and Fix Consent for UK SMEs | TTOY Digital</title>
6    
7    <meta name="author" content="TTOY Digital">
8    <meta name="google-site-verification" content="qtlxwhnbZCW53WqPF0OKrzfVBM4LBU7Fxvv78poA77o">
9    <link rel="alternate" type="application/rss+xml" title="TTOY Digital — Insights &amp; Articles" href="/rss.xml">
10
11    <!-- Icons & PWA manifest -->
12    <link rel="icon" type="image/x-icon" href="/favicon.ico">
13    <link rel="icon" type="image/png" sizes="32x32" href="/favicon.ico">
14    <link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png">
15    <link rel="icon" type="image/png" sizes="512x512" href="/icon-512.png">
16    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
17    <link rel="manifest" href="/site.webmanifest">
18
19    <!-- Fonts are self-hosted (see src/main.tsx) — no third-party font connection. -->
20
21
22    <meta property="og:type" content="website">
23    <meta property="og:site_name" content="TTOY Digital">
24    <meta property="og:locale" content="en_GB">
25    
26    
27    
28    
29    <meta name="twitter:card" content="summary_large_image">
30    
31    
32    
33
34    <!-- Usercentrics CMP: loaded just after first paint (see bootstrap in <body>) -->
35    <link rel="preconnect" href="//privacy-proxy.usercentrics.eu">
36    
36<script>
37      window.addEventListener('UC_UI_INITIALIZED', function () {
38        if (window.uc && typeof window.uc.setCustomTranslations === 'function') {
39          uc.setCustomTranslations('https://termageddon.ams3.cdn.digitaloceanspaces.com/translations/');
40        }
41      });
42    </script>
42
43  
43<script type="module" crossorigin="" src="/assets/index-DYl3rClG.js"></script>
43
44  <link rel="modulepreload" crossorigin="" href="/assets/react-Bm7sdY04.js">
45  <link rel="modulepreload" crossorigin="" href="/assets/icons-BS7bP_kd.js">
46  <link rel="modulepreload" crossorigin="" href="/assets/supabase-DFVXVG5G.js">
47  <link rel="stylesheet" crossorigin="" href="/assets/index-BMmCV7-y.css">
48<style type="text/css">:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
48left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
48:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
48--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
49</style><link rel="modulepreload" as="script" crossorigin="" href="/assets/BlogPost-DTetS_Tm.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/useBlogPosts-SpEZIxGY.js">
49<link rel="modulepreload" as="script" crossorigin="" href="/assets/client-GM7IKXsf.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/Services-BOebPiPb.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/CRM-Dd2a15aB.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/ServiceHeroShowcase-Ctkk2xyM.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/WebDesign-BqVHLsUf.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/PlanQuizDialog-C5YbL4yN.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/dialog-CyiQE859.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/radio-group-Bw9zJIcp.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/index-DFP3IjiY.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/label-C_VqHCtT.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/button-CfztXBwK.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/progress-DBlGhzo2.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/BookDiscoveryDialog-7fRT8t4v.js">
49<link rel="modulepreload" as="script" crossorigin="" href="/assets/BookingWidget-WHgZQjh5.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/input-B73USREI.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/table-BQtbUwxM.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/Contact-CJe0gxqQ.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/ContactForm-8P0GobIU.js"><link rel="canonical" href="https://ttoydigital.agency/blog/measure-website-roi" data-rh="true"><meta name="description" content="Measure your website ROI with a copyable spreadsheet. Track revenue KPIs, handle UK cookie-consent limits, and apply six quick wins this quarter." data-rh="true"><meta name="keywords" content="Web Design" data-rh="true"><meta property="og:title" content="6 Quick Wins to Boost Website ROI and Fix Consent for UK SMEs | TTOY Digital" data-rh="true"><meta property="og:description" content="Measure your website ROI with a copyable spreadsheet. Track revenue KPIs, handle UK cookie-consent limits, and apply six quick wins this quarter." data-rh="true"><meta property="og:type" content="article" data-rh="true"><meta property="og:site_name" content="TTOY Digital" data-rh="true"><meta property="og:locale" content="en_GB" data-rh="true"><meta property="og:url" content="https://ttoydigital.agency/blog/measure-website-roi" data-rh="true"><meta property="og:image" content="https://media.babylovegrowth.ai/blog-images/organization-45369/1790541392453_Calculating-website-revenue-and-operating-costs.jpeg" data-rh="true"><meta name="twitter:card" content="summary_large_image" data-rh="true"><meta name="twitter:title" content="6 Quick Wins to Boost Website ROI and Fix Consent for UK SMEs | TTOY Digital" data-rh="true"><meta name="twitter:description" content="Measure your website ROI with a copyable spreadsheet. Track revenue KPIs, handle UK cookie-consent limits, and apply six quick wins this quarter." data-rh="true"><meta name="twitter:image" content="https://media.babylovegrowth.ai/blog-images/organization-45369/1790541392453_Calculating-website-revenue-and-operating-costs.jpeg" data-rh="true">
49<script type="application/ld+json" data-rh="true">{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://ttoydigital.agency/blog/measure-website-roi#article","headline":"6 Quick Wins to Boost Website ROI and Fix Consent for UK SMEs","description":"Measure your website ROI with a copyable spreadsheet. Track revenue KPIs, handle UK cookie-consent limits, and apply six quick wins this quarter.","datePublished":"2026-09-29T00:00:00.000Z","dateModified":"2026-09-29T00:00:00.000Z","author":{"@type":"Person","@id":"https://ttoydigital.agency/about#chris-carr","name":"Chris Carr","jobTitle":"Director, TTOY Digital","description":"Director of TTOY Digital, focused on helping small businesses across Derbyshire and the UK grow online with quality websites, SEO, and CRM at affordable prices.","url":"https://ttoydigital.agency/about","sameAs":["https://www.linkedin.com/in/chris-l-carr"],"worksFor":{"@type":"Organization","name":"TTOY Digital","url":"https://ttoydigital.agency"}},"publisher":{"@type":"Organization","@id":"https://ttoydigital.agency/#localbusiness","name":"TTOY Digital","url":"https://ttoydigital.agency","logo":{"@type":"ImageObject","url":"https://ttoydigital.agency/og-default.jpg"}},"image":"https://media.babylovegrowth.ai/blog-images/organization-45369/1790541392453_Calculating-website-revenue-and-operating-costs.jpeg","mainEntityOfPage":{"@type":"WebPage","@id":"https://ttoydigital.agency/blog/measure-website-roi"},"articleSection":"Web Design","inLanguage":"en-GB","isAccessibleForFree":true}</script>
49<link rel="modulepreload" as="script" crossorigin="" href="/assets/AccessibilityWidget-DvBiHA-B.js"></head>
50
51  <body>
52    <div id="root"><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events: none;"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><button aria-label="Accessibility options" class="fixed bottom-20 left-4 z-50 flex h-11 w-11 items-center justify-center rounded-full border border-white/15 shadow-[0_0_30px_hsl(190_100%_50%/0.7)] transition-transform hover:scale-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background md:bottom-32 md:left-8 md:h-14 md:w-14" type="button" aria-haspopup="dialog" aria-expanded="false" data-state="closed" style="background-color: hsl(var(--cyan)); color: hsl(var(--background));"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-accessibility h-5 w-5 md:h-7 md:w-7"><circle cx="16" cy="4" r="1"></circle><path d="m18 19 1-7-6 1"></path><path d="m5 8 3-3 5.5 3-2.36 3.5"></path><path d="M4.24 14.5a5 5 0 0 0 6.88 6"></path><path d="M13.76 17.5a5 5 0 0 0-6.88-6"></path></svg></button><div class="min-h-screen bg-atmospheric"><nav class="fixed left-0 right-0 z-50 transition-all duration-300 bg-transparent" style="top: var(--announcement-height, 0px);"><div class="container mx-auto px-4 lg:px-8"><div class="flex items-center justify-between h-[68px]"><a class="flex items-center group" href="/"><img src="/assets/logo-BrwiFrIK.svg" alt="TTOY Digital" class="h-10 w-auto group-hover:scale-105 transition-transform"></a><div class="flex items-center gap-3"><a class="hidden sm:inline-flex items-center gap-2 px-5 py-2.5 rounded-lg bg-gradient-brand text-accent-foreground font-semibold text-sm hover:opacity-90 hover:scale-[1.02] transition-all glow-cyan" href="/contact">Book a Call</a><button class="inline-flex items-center gap-2 p-2.5 rounded-lg text-foreground hover:bg-secondary/60 border border-border/50 transition-colours" aria-label="Open menu" type="button" aria-haspopup="dialog" aria-expanded="false" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu w-5 h-5"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg><span class="hidden sm:inline text-sm font-medium pr-1">Menu</span></button></div></div></div></nav><section class="pt-36 pb-8"><div class="container mx-auto px-4 lg:px-8 max-w-3xl"><a class="inline-flex items-center gap-2 text-muted-foreground hover:text-foreground text-sm mb-8 transition-colours" href="/blog"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left w-4 h-4"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg> Back to Blog</a><span class="inline-flex mb-4 text-xs px-2.5 py-1 rounded-full border font-medium bg-primary/15 text-blue-brand border-primary/25">Web Design</span><h1 class="text-3xl sm:text-4xl md:text-5xl font-bold text-foreground mb-6 leading-tight">6 Quick Wins to Boost Website ROI and Fix Consent for UK SMEs</h1><div class="flex flex-wrap items-center gap-4 text-sm text-muted-foreground"><a href="https://ttoydigital.agency/about" class="flex items-center gap-1.5 hover:text-cyan transition-colours"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user w-4 h-4"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg><span>Chris Carr</span></a><span class="flex items-center gap-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar w-4 h-4"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg>29 September 2026</span><span class="flex items-center gap-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock w-4 h-4"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>11 min read</span></div></div></section><section class="pb-12"><div class="container mx-auto px-4 lg:px-8 max-w-3xl"><div class="aspect-[16/9] rounded-2xl border border-border overflow-hidden relative bg-card"><img src="https://media.babylovegrowth.ai/blog-images/organization-45369/1790541392453_Calculating-website-revenue-and-operating-costs.jpeg" alt="6 Quick Wins to Boost Website ROI and Fix Consent for UK SMEs" class="w-full h-full object-cover"></div></div></section><section class="pb-16"><div class="container mx-auto px-4 lg:px-8 max-w-3xl"><article class="prose prose-invert prose-lg max-w-none
53            prose-headings:text-foreground prose-headings:font-bold
54            prose-h2:text-2xl prose-h2:mt-10 prose-h2:mb-4
55            prose-h3:text-xl prose-h3:mt-8 prose-h3:mb-3
56            prose-p:text-muted-foreground prose-p:leading-relaxed
57            prose-a:text-cyan prose-a:no-underline hover:prose-a:underline
58            prose-strong:text-foreground
59            prose-li:text-muted-foreground
60            prose-img:rounded-xl prose-img:border prose-img:border-border
61            prose-blockquote:border-l-cyan prose-blockquote:text-foreground
61/90
62            prose-code:text-cyan prose-code:bg-card prose-code:px-1 prose-code:py-0.5 prose-code:rounded"><div><p>If you want to measure website ROI, the formula is simple: (revenue attributed to the website minus total <a href="/blog/website-design-cost-uk-a-2026-pricing-guide">website cost</a>s) divided by total website costs, times 100. Revenue includes online sales, offline sales you can trace back to the site, and the value of leads it generates. Costs cover build, hosting, ads, and the time your team spends running it. The next section shows you how to gather those numbers and work through a real example.</p>
63<hr>
64<blockquote>
65<p><strong>TL;DR:</strong></p>
66<ul>
67<li>A website’s ROI calculation should focus on revenue directly attributable to the site, such as sales, inquiries, or leads, rather than vanity metrics like traffic or bounce rate.</li>
68<li>Small businesses need to accurately track revenue-related KPIs like conversion rates, customer acquisition costs, and lifetime value, while accounting for timeframes and site maturity.</li>
69<li>Use straightforward attribution models and reliable data sources such as CRM exports and UTM tags to ensure consistent and meaningful ROI measurement.</li>
70<li>Include all relevant costs, spreading large one-time expenses over multiple years, to avoid overstating ROI and to get an accurate financial picture.</li>
71<li>Simple, targeted improvements like clarifying calls to action or reducing form fields often yield better ROI boosts than complex strategies, especially when tested gradually.</li>
72</ul>
73</blockquote>
74<hr>
75<div data-blg-cta="after_tldr" data-blg-cta-layout="split" style="margin:28px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;box-sizing:border-box;"><div style="border-radius:26px;padding:min(22px,3.2vw);background:radial-gradient(circle at 100% 0%,#e2f3fe 0 150px,rgba(255,255,255,0) 151px),radial-gradient(circle at 0% 100%,#e2f3fe 0 130px,rgba(255,255,255,0) 131px),linear-gradient(180deg,#ecf7fe 0%,#f5fbff 100%);"><div style="background:#ffffff;border-radius:18px;box-shadow:0 12px 34px rgba(0,0,0,0.13);overflow:hidden;"><div style="display:flex;flex-wrap:wrap;background:linear-gradient(104deg,#193140 0%,#080f14 33%,#ffffff 33.15%);"><div style="flex:0 0 30%;min-width:150px;padding:30px 10px 30px 26px;color:#ffffff;"><div style="margin:0 0 14px;"><span style="display:inline-block;max-width:100%;box-sizing:border-box;border-radius:999px;padding:6px 13px;font-size:12px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;line-height:1.3;background:#ffffff;color:#24485e;">TTOY Digital</span></div><div style="font-size:12px;opacity:0.75;">ttoydigital.agency</div></div><div style="flex:1 1 300px;padding:30px 28px 30px 40px;"><div style="font-size:23px;font-weight:800;line-height:1.2;letter-spacing:-0.01em;color:#1f2937;margin:0;">Turn Your Website Into A Measurable Asset</div><div style="width:56px;height:6px;border-radius:3px;background:#5fbdf7;margin:12px 0 14px;"></div><div style="font-size:15px;line-height:1.55;color:#64748b;margin:0 0 22px;">TTOY Digital builds mobile-first websites, local SEO strategies, and SmartFlowCRM systems that help small businesses manage online leads.</div><a href="/services" style="display:inline-flex;align-items:center;gap:9px;border-radius:10px;font-weight:700;font-size:15px;text-decoration:none;padding:13px 22px 13px 26px;background:#5fbdf7;color:#1f2937;">Explore TTOY Digital<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="#1f2937" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" style="display:block;flex:0 0 auto;"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div></div></div></div></div>
76<h2 id="table-of-contents" tabindex="-1">Table of Contents</h2>
77<ul>
78<li><a href="#what-website-roi-actually-means-and-why-vanity-metrics-mislead-you">What website ROI actually means (and why vanity metrics mislead you)</a></li>
79<li><a href="#the-revenue-focused-kpis-worth-your-attention">The revenue-focused KPIs worth your attention</a></li>
80<li><a href="#calculating-website-roi-the-formula-and-a-worked-example">Calculating website ROI: the formula and a worked example</a></li>
81<li><a href="#choosing-an-attribution-model-without-overcomplicating-things">Choosing an attribution model without overcomplicating things</a></li>
82<li><a href="#getting-your-cost-inputs-right-including-the-ones-people-forget">
82Getting your cost inputs right, including the ones people forget</a></li>
83<li><a href="#practical-ways-to-lift-your-website-roi-this-quarter">Practical ways to lift your website ROI this quarter</a></li>
84<li><a href="#why-we-tell-small-businesses-to-start-simple">Why we tell small businesses to start simple</a></li>
85<li><a href="#want-help-turning-your-website-into-a-measurable-asset">Want help turning your website into a measurable asset?</a></li>
86<li><a href="#sources">Sources</a></li>
87<li><a href="#faq">FAQ</a></li>
88</ul>
89<h2 id="what-website-roi-actually-means-and-why-vanity-metrics-mislead-you" tabindex="-1">What website ROI actually means (and why vanity metrics mislead you)</h2>
90<p>Here’s the thing most small business owners get wrong: they check Google Analytics, see traffic is up, and assume the website is “working.” Traffic tells you nothing about whether the site is making you money.</p>
91<p>Website ROI compares what your site earns against what it costs to run. That’s it. It’s not about how many people visited, how long they stayed, or how good your bounce rate looks in a screenshot. Those numbers feel reassuring, but they don’t pay your bills.</p>
92<p>What actually matters depends on what job your website does for you. For some businesses, that’s direct sales through an online shop. For others, it’s enquiries, bookings, or leads that a salesperson later closes. <a href="https://www.annuitas.com/insights/revenue-vs-vanity-the-metrics-that-matter-for-driving-growth/" rel="noopener noreferrer">Revenue-focused KPIs beat vanity metrics</a> because they map to the outcome you actually care about, not just activity on the page.</p>
93<p>Timeframes matter too. A brand new site rarely shows meaningful ROI in month one, and judging it that early usually leads to panic or premature changes. Guidance from Clutch’s ROI research suggests giving a new site several months before drawing conclusions, since search rankings, word of mouth, and repeat visits all take time to build.</p>
94<p>Before you calculate anything, get clear on:</p>
95<ul>
96<li>What outcome the site is meant to produce (sales, bookings, enquiries, or leads)</li>
97<li>Whether that outcome happens on the site itself or somewhere downstream, like a phone call or in-store visit</li>
98<li>How mature the site is, since a two-month-old site and a five-year-old site need different expectations</li>
99</ul>
100<h2 id="the-revenue-focused-kpis-worth-your-attention" tabindex="-1">The revenue-focused KPIs worth your attention</h2>
101<p>You don’t need to track everything. You need to track the handful of numbers that connect directly to revenue.</p>
102<p><strong>Conversion rate</strong> is your starting point: the percentage of visitors who complete a goal, whether that’s a purchase, a form submission, or a booking. Calculate it per goal, not just as one blanket figure, because a “<a href="https://www.xero.com/uk/guides/roi/" rel="noopener noreferrer">5%</a> conversion rate” means very different things depending on whether the goal is a £10 sale or a £10,000 contract enquiry. Our own <a href="https://ttoydigital.agency/blog/conversion-rate-benchmarks" rel="noopener">conversion rate benchmarks</a> give small businesses a sense of what’s realistic to aim for.</p>
103<p><strong>Revenue per visitor and average order value</strong> matter most for ecommerce or transactional sites. If you sell online, these two numbers together tell you whether your traffic is valuable or just plentiful.</p>
104<p><strong>Customer acquisition cost (CAC)</strong> is what you spend, in total, to win one customer through the website: ad spend, tools, and a fair share of staff time, divided by the number of customers won. This is where a lot of small businesses undercount, because they forget to include their own hours.</p>
105<p><strong>Customer lifetime value (LTV)</strong> matters when customers buy more than once. If your average customer spends with you three times a year for three years, judging ROI on the first sale alone badly understates the return.</p>
106<p><strong>Pipeline and lead quality metrics</strong>, like lead-to-customer rate and pipeline value, are essential for service businesses where the website generates enquiries rather than sales. Our guide on <a href="https://ttoydigital.agency/blog/generating-leads-through-digital-marketing" rel="noopener">generating leads through digital marketing</a> covers how to put a fair value on a lead before it’s closed.</p>
107<p><strong>Page views and bounce rate</strong> are largely secondary. They can flag a technical problem, but they don’t tell you whether anyone bought anything.</p>
108<p><strong>Move from vanity metrics to revenue metrics</strong>, according to Annuitas, and your reporting starts reflecting what the business actually needs to know.</p>
109<p><img src="https://media.babylovegrowth.ai/blog-images/organization-45369/1790541454541_The-revenue-focused-KPIs-worth-your-attention-overview-diagram.jpeg" alt="The revenue-focused KPIs worth your attention — overview diagram"></p>
110<h2 id="calculating-website-roi-the-formula-and-a-worked-example" tabindex="-1">Calculating website ROI: the formula and a worked example</h2>
111<p>The formula, again, is straightforward: (Revenue attributed to the website minus Total website costs) divided by Total website costs, multiplied by 100. This is the <a href="https://clutch.co/resources/how-to-accurately-measure-your-website-roi" rel="noopener noreferrer">standard approach used across the industry</a>, and it works whether you sell direct or generate leads.</p>
112<p>Say a joinery business spends £8,000 a year on its website (hosting, a designer’s retainer, and paid ads) and can trace £24,000 in sales back to enquiries that started on the site.</p>
113<p>The harder part is deciding what counts as “revenue attributed to the website.” You have three realistic choices:</p>
114<ol>
115<li><strong>Direct ecommerce sales</strong>: easiest to measure, since the transaction happens on the site itself.</li>
116<li><strong>Assisted conversions</strong>: sales where the website played a role but wasn’t the final step, such as someone who researched online then bought in person.</li>
117<li><strong>Assigned lead values</strong>: for enquiry-based businesses, multiply your average lead-to-customer rate by average order value to get a fair value per lead.</li>
118</ol>
119<p>To gather your inputs, pull together:</p>
120<ul>
121<li>
121GA4 event data for goal completions and ecommerce revenue</li>
122<li>A CRM export showing which closed deals started as website leads</li>
123<li>UTM-tagged campaign revenue, so you know which channel brought the visitor in</li>
124<li>Staff time and subscription costs for the period you’re measuring</li>
125</ul>
126<p>A simple spreadsheet works fine: one column for month, one for website revenue, one for total costs, one for ROI percentage, and a note column for anything unusual, like a big one-off campaign.</p>
127<h2 id="choosing-an-attribution-model-without-overcomplicating-things" tabindex="-1">Choosing an attribution model without overcomplicating things</h2>
128<p>Attribution decides which touchpoint gets credit when a customer takes several steps before buying. <a href="https://support.google.com/analytics/answer/16291112?hl=en" rel="noopener noreferrer">Google Analytics offers several models</a>, including last-click and data-driven attribution, and changing the model changes your reported revenue, sometimes significantly.</p>
129<p>Data-driven attribution, where enough data exists to support it, tends to give a fairer picture than last-click alone, since it spreads credit across the touchpoints that actually influenced the sale. For a smaller business without huge traffic volumes, a simpler model plus a common-sense adjustment for assisted conversions is often good enough. The key is picking one model and sticking with it, so your month-to-month comparisons mean something.</p>
130<p>To close the gaps in what analytics tools can see on their own:</p>
131<ul>
132<li>Set up GA4 events for every meaningful action, not just purchases</li>
133<li>Use consistent UTM tagging on every campaign link, no exceptions</li>
134<li>Feed CRM-recorded lead values back into your revenue picture</li>
135<li>Add call tracking if phone enquiries matter to your business</li>
136<li>Consider server-side tagging if consent declines are cutting into your data</li>
137</ul>
138<p>Cookie consent rules under PECR and GDPR require an active opt-in before non-essential cookies can run, and official UK guidance confirms this reduces what analytics tools can observe when visitors decline. That means your GA4 numbers are likely an undercount, not a full picture. When consent rates dip, lean more heavily on CRM-recorded revenue and server-side events to reconstruct what actually happened, and treat analytics-only figures as a lower bound rather than the whole truth.</p>
139<p><strong>Pro Tip:</strong> <em>Check your consent rate in GA4’s admin settings once a quarter. A sudden drop usually means your cookie banner needs a rework, not that your traffic quality has changed.</em></p>
140<h2 id="getting-your-cost-inputs-right-including-the-ones-people-forget" tabindex="-1">Getting your cost inputs right, including the ones people forget</h2>
141<p>The most common mistake in ROI calculations isn’t the revenue side, it’s the cost side. Businesses forget hidden costs, then wonder why their ROI number looks better than the bank balance suggests.</p>
142<p>One-off costs, like a full website rebuild, shouldn’t be dumped into a single year’s figures. <a href="https://neilpatel.com/blog/data-driven-attribution/" rel="noopener noreferrer">Practitioner guidance</a> recommends spreading a major one-time cost across 2 to 3 years, since that’s roughly how long a typical rebuild stays useful before it needs another overhaul. So a £6,000 redesign becomes £2,000 to £3,000 a year in your ROI spreadsheet, not a one-time shock that makes year one look disastrous.</p>
143<p>Costs to include every time:</p>
144<ul>
145<li>Hosting and domain renewal fees</li>
146<li>Plugin, app, and software licences</li>
147<li>Ongoing maintenance and security updates</li>
148<li>Staff time spent managing content, enquiries, or the CRM</li>
149<li>Advertising spend tied to driving traffic to the site</li>
150</ul>
151<p>Pick a measurement window, usually monthly or quarterly, and stick with it so you can compare periods fairly. Watch for seasonality: a retailer comparing December to February without accounting for the seasonal spike will draw the wrong conclusion about what’s actually working.</p>
152<h2 id="practical-ways-to-lift-your-website-roi-this-quarter" tabindex="-1">Practical ways to lift your website ROI this quarter</h2>
153<p>Once you know your numbers, the next question is what to actually do about them. Start with the changes that cost the least and take the least time.</p>
154<ol>
155<li><strong>Clarify your headline and call to action.</strong> If a visitor can’t tell what you do and what to click within five seconds, you’re losing people before the pitch even starts.</li>
156<li><strong>Simplify your forms.</strong> Every extra field drops completions. Ask only for what you need to make first contact.</li>
157<li><strong>Fix mobile speed issues.</strong> A slow-loading page on a phone loses visitors before they see anything.</li>
158<li><strong>Test landing pages against each other.</strong> Small changes to layout or copy, tested properly, often move conversion rate more than a full redesign. Our <a href="https://ttoydigital.agency/blog/high-converting-landing-page-design" rel="noopener">
158landing page design guide</a> walks through what to test first.</li>
159<li><strong>Automate lead follow-up through your CRM.</strong> A lead that waits three days for a reply converts far worse than one contacted within the hour.</li>
160<li><strong>Consolidate subscriptions and tools.</strong> Many small businesses pay for three overlapping tools when one would do, quietly inflating the cost side of the ROI equation.</li>
161</ol>
162<p>For any of these, measure before and after against the same KPI, whether that’s conversion rate, CAC, or lead-to-customer rate, and give the test enough time to produce a real answer rather than reacting to a good or bad week. Further tactics for lifting conversion rate specifically are in our <a href="https://ttoydigital.agency/blog/essential-tips-for-improving-your-websites-conversion-rate" rel="noopener">tips for improving website conversion</a>.</p>
163<p><strong>Pro Tip:</strong> <em>Run one test at a time where you can. Changing five things at once means you’ll never know which one actually moved the needle.</em></p>
164<h2 id="why-we-tell-small-businesses-to-start-simple" tabindex="-1">Why we tell small businesses to start simple</h2>
165<p>We tell every small business the same thing: pick two or three revenue metrics, track them consistently, and don’t chase every number your analytics dashboard offers. Complexity kills follow-through, and a spreadsheet you actually update beats a dashboard you ignore. Our own work building mobile-first sites and setting up SmartFlowCRM comes back to that same principle: measurement only helps if it’s simple enough to keep doing.</p>
166<blockquote>
167<p><em>— Chris</em></p>
168</blockquote>
169<h2 id="want-help-turning-your-website-into-a-measurable-asset" tabindex="-1">Want help turning your website into a measurable asset?</h2>
170<p>If working through attribution models and CRM exports isn’t how you want to spend your evenings, that’s exactly the gap we fill. Our <a href="https://ttoydigital.agency/services/web-design" rel="noopener">web design services</a> build mobile-first sites meant to convert, and SmartFlowCRM, part of our CRM offering, pulls WhatsApp, email, and web enquiries into one place so nothing gets missed and every lead has a traceable value. Pair that with ongoing SEO and <a href="https://ttoydigital.agency/services/wordpress-maintenance" rel="noopener">WordPress maintenance</a>, and the numbers you need for ROI reporting become far easier to pull together. Get in touch for a free audit and we’ll show you exactly where your website stands.</p>
171<h2 id="sources" tabindex="-1">Sources</h2>
172<ul>
173<li><a href="https://www.annuitas.com/insights/revenue-vs-vanity-the-metrics-that-matter-for-driving-growth/" rel="noopener noreferrer">Revenue vs vanity: the metrics that matter for driving growth | Annuitas</a></li>
174<li><a href="https://clutch.co/resources/how-to-accurately-measure-your-website-roi" rel="noopener noreferrer">How to accurately measure your website’s ROI | Clutch</a></li>
175<li><a href="https://support.google.com/analytics/answer/16291112?hl=en" rel="noopener noreferrer">Change the reporting attribution model for key events - Analytics Help</a></li>
176</ul>
177<h2 id="faq" tabindex="-1">FAQ</h2>
178<h3 id="what-is-the-best-way-to-measure-roi" tabindex="-1">What is the best way to measure ROI?</h3>
179<p>The clearest method is the standard formula: subtract total website costs from the revenue you can attribute to the site, then divide by those costs and multiply by 100. Combine this with revenue-focused KPIs like <a href="/blog/conversion-rate-benchmarks">conversion rate</a> and CAC, using GA4 alongside CRM data so you’re not relying on analytics alone.</p>
180<h3 id="a-single-universal-roi-figure-does-not-apply-across-all-industries-or-website-maturities" tabindex="-1">A single universal ROI figure does not apply across all industries or website maturities.</h3>
181<p>There’s no single figure that applies to every business, since acceptable ROI depends heavily on your industry, costs, and how mature the website is. A new site with modest early returns isn’t necessarily underperforming, while a mature site should generally be producing a stronger return relative to its costs.</p>
182<h3 id="is-a-75-roi-good" tabindex="-1">Is a 75% ROI good?</h3>
183<p>
183Whether it counts as “good” still depends on your specific costs, industry, and how long the site has been live, so compare it against your own past periods rather than a universal benchmark.</p>
184<h3 id="is-a-positive-roi-with-a-modest-margin-good" tabindex="-1">Is a positive ROI with a modest margin good?</h3>
185<p>A 20% ROI suggests your website is profitable but with a fairly modest margin over its costs. For a newer site or one still building traffic and trust, that can be a reasonable early stage before returns improve, whereas for an established site it may signal room to tighten costs or improve conversion.</p>
186<h3 id="how-does-cookie-consent-affect-roi-measurement" tabindex="-1">How does cookie consent affect ROI measurement?</h3>
187<p>Under UK cookie rules, visitors must actively opt in before non-essential tracking cookies run, and when they decline, analytics tools miss part of the picture. Small businesses can offset this by relying more on CRM-recorded revenue and server-side event tracking rather than analytics data alone.</p>
188<h2 id="recommended" tabindex="-1">Recommended</h2>
189<ul>
190<li><a href="https://ttoydigital.agency/blog/essential-tips-for-improving-your-websites-conversion-rate" rel="noopener">Essential Tips for Improving Your Website’s Conversion Rate</a></li>
191<li><a href="https://ttoydigital.agency/blog/what-does-a-good-small-business-website-look-like" rel="noopener">What does a good small business website look like?</a></li>
192<li><a href="https://ttoydigital.agency/blog/local-seo-checklist" rel="noopener">Local SEO checklist for small businesses: 2026 action plan</a></li>
193<li><a href="https://ttoydigital.agency/blog/template-websites-are-killing-small-business-success" rel="noopener">Template Websites Are Killing Small Business Success</a></li>
194</ul>
195</div></article></div></section><section class="pb-16"><div class="container mx-auto px-4 lg:px-8 max-w-3xl"><div class="p-6 rounded-2xl border border-border bg-card flex items-start gap-5" itemscope="" itemtype="https://schema.org/Person"><meta itemprop="url" content="https://ttoydigital.agency/about"><meta itemprop="jobTitle" content="Director, TTOY Digital"><link itemprop="sameAs" href="https://www.linkedin.com/in/chris-l-carr"><img src="/images/chris.png" alt="Chris Carr" itemprop="image" loading="lazy" class="w-14 h-14 rounded-full object-cover shrink-0 border border-border"><div><p class="text-cyan text-xs font-medium uppercase tracking-wider mb-1">Written by</p><h3 class="text-foreground font-bold mb-0.5" itemprop="name">Chris Carr</h3><p class="text-muted-foreground text-xs mb-2">Director, TTOY Digital</p><p class="text-muted-foreground text-sm leading-relaxed mb-3" itemprop="description">Director of TTOY Digital, focused on helping small businesses across Derbyshire and the UK grow online with quality websites, SEO, and CRM at affordable prices.</p><a href="https://www.linkedin.com/in/chris-l-carr" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 text-cyan hover:underline text-xs font-medium">Connect on LinkedIn →</a></div></div></div></section><section class="py-16 bg-card/30 border-y border-border/50"><div class="container mx-auto px-4 lg:px-8 text-center"><h2 class="text-2xl md:text-3xl font-bold text-foreground mb-4">Want help with Web Design?</h2><p class="text-muted-foreground mb-8 max-w-md mx-auto">Let's chat about how we can help your business grow. No jargon, no pressure.</p><a class="inline-flex items-center gap-2 px-8 py-4 rounded-xl bg-gradient-brand text-accent-foreground font-semibold hover:opacity-90 hover:scale-[1.02] transition-all glow-cyan" href="/services/web-design">Get in Touch <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right w-4 h-4"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div></section><section class="py-24"><div class="container mx-auto px-4 lg:px-8"><h2 class="text-2xl font-bold text-foreground mb-10 text-center">More Articles</h2><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5 max-w-5xl mx-auto"><a class="group rounded-2xl border border-border bg-card overflow-hidden hover:border-cyan/25 transition-all duration-300" href="/blog/website-cta-examples"><div class="h-36 relative overflow-hidden bg-card"><img src="https://media.babylovegrowth.ai/blog-images/organization-45369/1790381969063_Accessible-website-CTA-interface-being-tested.jpeg" alt="UK Checkout &amp; Accessibility: Website CTA Examples for Small Businesses" loading="lazy" class="absolute inset-0 w-full h-full object-cover group-hover:scale-105 transition-transform duration-500"></div><div class="p-5"><span class="inline-flex mb-2 text-xs px-2.5 py-1 rounded-full border font-medium bg-primary/15 text-blue-brand border-primary/25">Web Design</span>
195<h3 class="text-foreground font-semibold text-sm leading-snug mb-2 group-hover:text-cyan transition-colours line-clamp-2">UK Checkout &amp; Accessibility: Website CTA Examples for Small Businesses</h3><div class="flex items-center justify-between text-xs text-muted-foreground pt-3 border-t border-border/60"><span>27 September 2026</span><span>13 min read</span></div></div></a><a class="group rounded-2xl border border-border bg-card overflow-hidden hover:border-cyan/25 transition-all duration-300" href="/blog/wordpress-backup-strategy"><div class="h-36 relative overflow-hidden bg-card"><img src="https://media.babylovegrowth.ai/blog-images/organization-45369/1790280305343_Technician-testing-a-WordPress-backup-drive.jpeg" alt="Small business WordPress backup strategy: 3‑2‑1 and restore tests" loading="lazy" class="absolute inset-0 w-full h-full object-cover group-hover:scale-105 transition-transform duration-500"></div><div class="p-5"><span class="inline-flex mb-2 text-xs px-2.5 py-1 rounded-full border font-medium bg-primary/15 text-blue-brand border-primary/25">Web Design</span><h3 class="text-foreground font-semibold text-sm leading-snug mb-2 group-hover:text-cyan transition-colours line-clamp-2">Small business WordPress backup strategy: 3‑2‑1 and restore tests</h3><div class="flex items-center justify-between text-xs text-muted-foreground pt-3 border-t border-border/60"><span>25 September 2026</span><span>12 min read</span></div></div></a><a class="group rounded-2xl border border-border bg-card overflow-hidden hover:border-cyan/25 transition-all duration-300" href="/blog/website-trust-signals"><div class="h-36 relative overflow-hidden bg-card"><img src="https://media.babylovegrowth.ai/blog-images/organization-45369/1790125885471_Reviewing-website-trust-signals-on-screen.jpeg" alt="Fix 3 Website Trust Signals in 30–90 Days for Small Businesses" loading="lazy" class="absolute inset-0 w-full h-full object-cover group-hover:scale-105 transition-transform duration-500"></div><div class="p-5"><span class="inline-flex mb-2 text-xs px-2.5 py-1 rounded-full border font-medium bg-primary/15 text-blue-brand border-primary/25">Web Design</span><h3 class="text-foreground font-semibold text-sm leading-snug mb-2 group-hover:text-cyan transition-colours line-clamp-2">Fix 3 Website Trust Signals in 30–90 Days for Small Businesses</h3><div class="flex items-center justify-between text-xs text-muted-foreground pt-3 border-t border-border/60"><span>24 September 2026</span><span>9 min read</span></div></div></a></div></div></section><footer class="bg-card/30 border-t border-border"><div class="container mx-auto px-4 lg:px-8 py-12 lg:py-16"><div class="grid grid-cols-1 md:grid-cols-4 gap-10"><div><a class="flex items-center mb-4" href="/"><img src="/assets/logo-BrwiFrIK.svg" alt="TTOY Digital" class="h-10 w-auto"></a><p class="text-muted-foreground text-sm max-w-sm mb-6 leading-relaxed">We help small businesses grow with powerful websites, SEO, custom applications, and SmartFlowCRM, all under one roof.</p><div class="flex items-center gap-3"><a href="https://www.facebook.com/ttoydigital" target="_blank" rel="noopener noreferrer" aria-label="Facebook" class="w-8 h-8 rounded-lg bg-secondary hover:bg-primary hover:text-primary-foreground text-muted-foreground flex items-center justify-center transition-colours"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-facebook w-3.5 h-3.5"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg></a><a href="https://www.instagram.com/ttoydigital" target="_blank" rel="noopener noreferrer" aria-label="Instagram" class="w-8 h-8 rounded-lg bg-secondary hover:bg-primary hover:text-primary-foreground text-muted-foreground flex items-center justify-center transition-colours"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram w-3.5 h-3.5"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"></line></svg></a><a href="https://www.linkedin.com/company/ttoydigital" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn" class="w-8 h-8 rounded-lg bg-secondary hover:bg-primary hover:text-primary-foreground text-muted-foreground flex items-center justify-center transition-colours"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin w-3.5 h-3.5"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle></svg></a></div></div><div><h3 class="font-semibold text-foreground mb-4">Services</h3><ul class="space-y-3"><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/web-design">Web Design</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/web-design-derbyshire">Web Design Derbyshire</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/seo">SEO</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/seo-derbyshire">SEO Derbyshire</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/web-applications">Web Applications</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/crm">SmartFlowCRM</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/microsoft-365">Microsoft 365</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/reputation-management">Reputation Management</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/web-hosting">UK Web Hosting</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/domains">Domain Names</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/services/wordpress-maintenance">WordPress Maintenance</a></li></ul></div><div><h3 class="font-semibold text-foreground mb-4">Company</h3><ul class="space-y-3"><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/about">About Us</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/our-work">Our Work</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/partners">Partners</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/blog">Blog</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/events">Events</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/vacancies">Vacancies</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/contact">Contact</a></li></ul></div><div><h3 class="font-semibold text-foreground mb-4">Resources</h3><ul class="space-y-3"><li><a href="https://help.ttoydigital.agency" target="_blank" rel="noopener noreferrer" class="text-muted-foreground hover:text-cyan transition-colours text-sm">Help Centre</a></li><li><a href="https://communities.ttoydigital.agency" target="_blank" rel="noopener noreferrer" class="text-muted-foreground hover:text-cyan transition-colours text-sm">Community</a></li><li><a href="https://smartflowcrm.co.uk" target="_blank" rel="noopener noreferrer" class="text-muted-foreground hover:text-cyan transition-colours text-sm">SmartFlowCRM</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/privacy-policy">Privacy Policy</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/cookie-policy">Cookie Policy</a></li><li><a class="text-muted-foreground hover:text-cyan transition-colours text-sm" href="/sitemap">Sitemap</a></li></ul><div class="mt-6" itemscope="" itemtype="https://schema.org/Organization"><meta itemprop="name" content="TTOY Digital"><meta itemprop="url" content="https://ttoydigital.agency"><a href="mailto:[email protected]" itemprop="email" class="flex items-center gap-2 text-muted-foreground hover:text-cyan transition-colours text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail h-4 w-4"><rect width="20" height="16" x="2" y="4" rx="2"></rect><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path></svg>[email protected]</a></div></div></div><div class="mt-12 pt-8 border-t border-border"><div class="flex flex-col sm:flex-row justify-between items-center gap-4"><p class="text-muted-foreground text-sm">© 2026 TTOY Digital Ltd. All rights reserved.</p></div></div></div></footer></div></div>
196    <!-- Third-party bootstrap: consent first, then analytics, then widgets.
197         Everything runs after first paint so it never competes with rendering. -->
198    
198<script>
199      window.dataLayer = window.dataLayer || [];
200      function gtag(){dataLayer.push(arguments);}
201
202      (function () {
203        function inject(src, attrs) {
204          var s = document.createElement('script');
205          s.src = src;
206          s.async = true;
207          if (attrs) Object.keys(attrs).forEach(function (k) { s.setAttribute(k, attrs[k]); });
208          document.body.appendChild(s);
209          return s;
210        }
211
212        function loadConsent() {
213          inject('https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js', {
214            type: 'application/javascript'
215          });
216          inject('https://app.usercentrics.eu/browser-ui/latest/loader.js', {
217            id: 'usercentrics-cmp',
218            'data-settings-id': 'ZTU8wMbNc_ilu5'
219          });
220        }
221
222        function loadAnalytics() {
223          inject('https://www.googletagmanager.com/gtag/js?id=G-6138Y939J8');
224          gtag('js', new Date());
225          gtag('config', 'G-6138Y939J8');
226        }
227
228        function loadWidgets() {
229          inject('https://beta.leadconnectorhq.com/loader.js', {
230            'data-resources-url': 'https://beta.leadconnectorhq.com/chat-widget/loader.js',
231            'data-widget-id': '67d5a8298a19e0d61339bc01'
232          });
233          inject('https://link.ttoydigital.agency/js/external-tracking.js', {
234            'data-tracking-id': 'tk_dc9147d879154d258433c1ced0b1fa8f'
235          });
236        }
237
238        function start() {
239          var whenIdle = window.requestIdleCallback || function (cb) { return setTimeout(cb, 1200); };
240          // Consent UI first so it is available promptly.
241          setTimeout(loadConsent, 0);
242          whenIdle(loadAnalytics);
243          whenIdle(loadWidgets);
244        }
245
246        if (document.readyState === 'complete') start();
247        else window.addEventListener('load', start, { once: true });
248      })();
249    </script>
249
250  
251
252<script src="https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js" async="" type="application/javascript"></script>
252<script src="https://app.usercentrics.eu/browser-ui/latest/loader.js" async="" id="usercentrics-cmp" data-settings-id="ZTU8wMbNc_ilu5"></script>
vendor: 57 bytes, line 252
252<script src="https://www.googletagmanager.com/gtag/js?id=
252G-6138Y939J8
vendor: 20 bytes, line 252
252" async=""></script>
252<script src="https://beta.leadconnectorhq.com/loader.js" async="" data-resources-url="https://beta.leadconnectorhq.com/chat-widget/loader.js" data-widget-id="67d5a8298a19e0d61339bc01"></script>
252<script src="https://link.ttoydigital.agency/js/external-tracking.js" async="" data-tracking-id="tk_dc9147d879154d258433c1ced0b1fa8f"></script>
vendor: 1 bytes, line 252
252
253<script async id="netlify-rum-container" src="/.netlify/scripts/rum" data-netlify-rum-site-id="5dac6d01-747c-46a4-8c59-a4622d479e7a" data-netlify-deploy-branch="main" data-netlify-deploy-context="production" data-netlify-cwv-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaXRlX2lkIjoiNWRhYzZkMDEtNzQ3Yy00NmE0LThjNTktYTQ2MjJkNDc5ZTdhIiwiYWNjb3VudF9pZCI6IjY5ZDAyNmRlNTY0ZDAxOTFmNjIyMTVlMCIsImRlcGxveV9pZCI6IjZhYmMwZWMyNGZjZTJmMDAwNzlkZDNlNyIsImlzc3VlciI6Im5mc2VydmVyIn0.kHRGrgkJIUsrb2TA8uQRjJaZeRywOVToa3c-Wj9ORo4"></script>
253
254</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.