1:"$Sreact.fragment" 2:I[22016,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js","/_next/static/chunks/3la6ppx5noyi5.js"],""] 3:I[85437,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js","/_next/static/chunks/3la6ppx5noyi5.js"],"Image"] b:X 10:X 10:C 0:{"buildId":"qCzxKqEMR35JzJmPSA16W","data":[{"rsc":["$","$1","c",{"children":[[["$","article",null,{"children":[["$","header",null,{"className":"border-b border-line","children":["$","div",null,{"className":"container-page pb-14 pt-8 lg:pb-20 lg:pt-10","children":[[["$","nav",null,{"aria-label":"Breadcrumb","children":["$","ol",null,{"className":"flex flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted","children":[["$","li","/",{"className":"flex items-center gap-2","children":[["$","$L2",null,{"href":"/","className":"link-underline-hover transition-colors hover:text-ink","children":"Home"}],["$","span",null,{"aria-hidden":"true","children":"/"}]]}],["$","li","/resources",{"className":"flex items-center gap-2","children":[["$","$L2",null,{"href":"/resources","className":"link-underline-hover transition-colors hover:text-ink","children":"Resources"}],["$","span",null,{"aria-hidden":"true","children":"/"}]]}],["$","li","/resources/attribution-readiness-guide",{"className":"flex items-center gap-2","children":[["$","span",null,{"aria-current":"page","className":"text-ink-soft","children":"Attribution Readiness Guide"}],null]}]]}]}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://axidysmedia.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Resources\",\"item\":\"https://axidysmedia.com/resources\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Attribution Readiness Guide\",\"item\":\"https://axidysmedia.com/resources/attribution-readiness-guide\"}]}"}}]],["$","div",null,{"className":"mt-10 grid gap-10 lg:mt-14 lg:grid-cols-12 lg:items-end lg:gap-6","children":[["$","div",null,{"className":"lg:col-span-7","children":[["$","div",null,{"className":"fade-rise","children":["$","p",null,{"className":"flex items-center gap-3 text-label uppercase text-muted","children":[["$","span",null,{"aria-hidden":"true","className":"h-px w-6 bg-current opacity-60"}],["$","span",null,{"children":"Measurement · Guide"}]]}]}],["$","h1",null,{"id":"page-title","className":"fade-rise mt-6 text-display-lg","children":"Attribution Readiness Guide"}],["$","p",null,{"className":"fade-rise mt-6 max-w-2xl text-lead text-ink-soft","children":"What has to be true before attribution data can guide budget."}],["$","p",null,{"className":"fade-rise mt-8 flex flex-wrap gap-x-5 gap-y-1 text-sm text-muted","children":[["$","span",null,{"children":[9," min read"]}],["$","span",null,{"children":["Published"," ",["$","time",null,{"dateTime":"2026-09-17","children":"September 17, 2026"}]]}],["$","span",null,{"children":["By ","Axidys Media"]}]]}]]}],["$","div",null,{"className":"fade-rise overflow-hidden rounded-lg lg:col-span-5","children":["$","div",null,{"aria-hidden":"true","className":"relative overflow-hidden bg-paper-deep aspect-[16/11] xl:aspect-auto xl:min-h-72 xl:flex-1","children":["$","$L3",null,{"src":{"src":"/_next/static/media/resource-attribution-cards.2g4qo89robf2c.jpg","width":1400,"height":930,"blurWidth":8,"blurHeight":5,"blurDataURL":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/wAARCAAFAAgDAREAAhEBAxEB/9sAQwAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDdsVmhcBbmTzNwbfxnGc4+lcam07HU4q1z/9k="},"alt":"","fill":true,"sizes":"(min-width: 1280px) 640px, (min-width: 768px) 92vw, 86vw","placeholder":"blur","className":"object-cover transition-transform duration-700 ease-out-expo group-hover:scale-[1.03] motion-reduce:transition-none motion-reduce:group-hover:scale-100 object-[center_60%]"}]}]}]]}]]}]}],"$L4","$L5","$L6"]}],"$L7"],["$L8"],"$L9"]}],"isPartial":"$@a","staleTime":"$b","varyParams":null},{"rsc":"$Lc","isPartial":"$@d","staleTime":"$b","varyParams":null},{"rsc":"$Le","isPartial":"$@f","staleTime":"$b","varyParams":"$10"},{"rsc":"$L11","isPartial":"$@12","staleTime":"$b","varyParams":"$10"}],"isUpgradeableISRFallback":false,"a":"$@13","rootVaryParams":null,"needsRuntimeRequest":"$@14"} 1c:I[67231,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js","/_next/static/chunks/3la6ppx5noyi5.js"],"AmbientVideo"] 1d:I[42296,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js","/_next/static/chunks/3la6ppx5noyi5.js"],"MagneticButton"] 1e:I[97367,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js"],"OutletBoundary"] 1f:"$Sreact.suspense" 21:I[97367,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js"],"ViewportBoundary"] 22:I[97367,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js"],"MetadataBoundary"] 23:I[27201,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js"],"IconMark"] 24:I[39756,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js"],"default"] 25:I[37457,["/_next/static/chunks/0h2qsuyze9ds1.js","/_next/static/chunks/2kvv-0ig-wgjs.js"],"default"] 4:["$","div",null,{"className":"container-page grid gap-12 py-14 lg:grid-cols-12 lg:gap-6 lg:py-20","children":[["$","aside",null,{"className":"lg:col-span-3","children":["$","nav",null,{"aria-label":"On this page","className":"lg:sticky lg:top-28","children":[["$","p",null,{"className":"text-label uppercase text-muted","children":"On this page"}],["$","ol",null,{"className":"mt-4 space-y-2 border-l border-line pl-4 text-[0.9375rem]","children":[["$","li","what-attribution-can-and-cant-tell-you",{"children":["$","a",null,{"href":"#what-attribution-can-and-cant-tell-you","className":"text-ink-soft transition-colors hover:text-ink","children":"What attribution can and can't tell you"}]}],["$","li","where-your-setup-sits-today",{"children":["$","a",null,{"href":"#where-your-setup-sits-today","className":"text-ink-soft transition-colors hover:text-ink","children":"Where your setup sits today"}]}],["$","li","prerequisites-for-any-business-model",{"children":["$","a",null,{"href":"#prerequisites-for-any-business-model","className":"text-ink-soft transition-colors hover:text-ink","children":"Prerequisites for any business model"}]}],["$","li","prerequisites-by-business-model",{"children":["$","a",null,{"href":"#prerequisites-by-business-model","className":"text-ink-soft transition-colors hover:text-ink","children":"Prerequisites by business model"}]}],["$","li","checks-to-run-before-you-trust-the-numbers",{"children":["$","a",null,{"href":"#checks-to-run-before-you-trust-the-numbers","className":"text-ink-soft transition-colors hover:text-ink","children":"Checks to run before you trust the numbers"}]}],["$","li","when-to-use-blended-metrics-and-tests-instead",{"children":["$","a",null,{"href":"#when-to-use-blended-metrics-and-tests-instead","className":"text-ink-soft transition-colors hover:text-ink","children":"When to use blended metrics and tests instead"}]}],["$","li","next-steps",{"children":["$","a",null,{"href":"#next-steps","className":"text-ink-soft transition-colors hover:text-ink","children":"Next steps"}]}]]}],["$","div",null,{"className":"mt-8 hidden border-t border-line pt-6 lg:block","children":[["$","p",null,{"className":"text-sm text-ink-soft","children":"Want this reviewed against your own account data?"}],["$","$L2",null,{"href":"/growth-audit","className":"group mt-3 inline-flex items-center gap-2 text-sm font-medium","children":[["$","span",null,{"className":"link-underline","children":"Get a Growth Audit"}],["$","svg",null,{"width":14,"height":14,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]]}]]}]}],["$","div",null,{"className":"min-w-0 lg:col-span-7 lg:col-start-5","children":[["$","section",null,{"aria-labelledby":"takeaways-title","className":"rounded-lg border border-line bg-surface p-6 sm:p-7","children":[["$","h2",null,{"id":"takeaways-title","className":"text-label uppercase text-muted","children":"Key takeaways"}],["$","ul",null,{"className":"mt-4 space-y-3","children":[["$","li","Attribution models estimate credit. They don't measure cause, so treat them as one input to budget decisions.",{"className":"flex gap-3","children":[["$","span",null,{"aria-hidden":"true","className":"mt-2.5 size-1.5 shrink-0 bg-signal"}],["$","span",null,{"children":"Attribution models estimate credit. They don't measure cause, so treat them as one input to budget decisions."}]]}],["$","li","Readiness starts with conversions tied to revenue events: qualified pipeline for SaaS, net orders after refunds for e-commerce.",{"className":"flex gap-3","children":[["$","span",null,{"aria-hidden":"true","className":"mt-2.5 size-1.5 shrink-0 bg-signal"}],["$","span",null,{"children":"Readiness starts with conversions tied to revenue events: qualified pipeline for SaaS, net orders after refunds for e-commerce."}]]}],["$","li","Reconcile platform, analytics, and backend totals on a schedule. The unexplained gap shows how far to trust a model.",{"className":"flex gap-3","children":["$L15","$L16"]}],"$L17"]}]]}],"$L18","$L19"]}]]}] 5:["$","section",null,{"aria-labelledby":"related-title","className":"border-t border-line bg-paper-deep section-space-tight","children":["$","div",null,{"className":"container-page","children":[["$","h2",null,{"id":"related-title","className":"text-display-md","children":"Related reading."}],["$","div",null,{"className":"mt-10 grid gap-10 lg:grid-cols-12 lg:gap-6","children":[["$","div",null,{"className":"grid gap-5 sm:grid-cols-2 lg:col-span-8","children":[["$","article","mer-vs-roas-guide",{"className":"group relative flex h-full flex-col overflow-hidden rounded-lg border border-line bg-surface transition-[transform,border-color] duration-500 ease-out-expo hover:-translate-y-1 hover:border-line-strong","children":[["$","div",null,{"aria-hidden":"true","className":"relative overflow-hidden bg-sand aspect-[16/9]","children":["$","$L3",null,{"src":{"src":"/_next/static/media/resource-mer-roas-chart.12td7f4od7089.jpg","width":1400,"height":930,"blurWidth":8,"blurHeight":5,"blurDataURL":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/wAARCAAFAAgDAREAAhEBAxEB/9sAQwAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDevYzc6s/mtunDZ87nO3HK4zjFc7d7o3StZn//2Q=="},"alt":"","fill":true,"sizes":"(min-width: 1280px) 420px, (min-width: 768px) 46vw, 86vw","placeholder":"blur","className":"object-cover transition-transform duration-700 ease-out-expo group-hover:scale-[1.03] motion-reduce:transition-none motion-reduce:group-hover:scale-100 object-[center_35%]"}]}],["$","div",null,{"className":"flex flex-1 flex-col p-6","children":[["$","p",null,{"className":"font-mono text-data uppercase tracking-[0.1em] text-muted","children":["Guide"," · ","E-commerce"]}],["$","h3",null,{"className":"mt-3 tracking-[-0.02em] text-title","children":["$","$L2",null,{"href":"/resources/mer-vs-roas-guide","className":"after:absolute after:inset-0 after:content-['']","children":"E-commerce MER vs ROAS Guide"}]}],["$","p",null,{"className":"mt-3 text-ink-soft text-[0.9375rem]","children":"When to trust platform ROAS, when to trust MER, and how to use both."}],["$","p",null,{"className":"mt-auto flex items-center justify-between pt-6 text-sm text-muted","children":[["$","span",null,{"children":"Guide"}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow text-ink","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]]}]]}],["$","article","saas-cac-benchmarking-guide",{"className":"group relative flex h-full flex-col overflow-hidden rounded-lg border border-line bg-surface transition-[transform,border-color] duration-500 ease-out-expo hover:-translate-y-1 hover:border-line-strong","children":[["$","div",null,{"aria-hidden":"true","className":"relative overflow-hidden bg-mist aspect-[16/9]","children":["$","$L3",null,{"src":{"src":"/_next/static/media/resource-cac-cohort-review.18y8z1a0o53bv.jpg","width":1400,"height":930,"blurWidth":8,"blurHeight":5,"blurDataURL":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/wAARCAAFAAgDAREAAhEBAxEB/9sAQwAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDodat4bTTC5TzTGp3bv4x6GplCN7WLjJ2uf//Z"},"alt":"","fill":true,"sizes":"(min-width: 1280px) 420px, (min-width: 768px) 46vw, 86vw","placeholder":"blur","className":"object-cover transition-transform duration-700 ease-out-expo group-hover:scale-[1.03] motion-reduce:transition-none motion-reduce:group-hover:scale-100"}]}],"$L1a"]}]]}],"$L1b"]}]]}]}] 6:["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Attribution Readiness Guide\",\"description\":\"Check whether your tracking, CRM, and order data can support attribution. Readiness levels, reconciliation checks, and when to use MER or holdout tests.\",\"datePublished\":\"2026-09-17\",\"dateModified\":\"2026-09-17\",\"author\":{\"@type\":\"Organization\",\"name\":\"Axidys Media\",\"url\":\"https://axidysmedia.com\"},\"publisher\":{\"@id\":\"https://axidysmedia.com/#organization\"},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://axidysmedia.com/resources/attribution-readiness-guide\"},\"image\":\"https://axidysmedia.com/og/resource-attribution-readiness-guide.png\",\"articleSection\":\"Measurement\",\"inLanguage\":\"en\"}"}}] 7:["$","section",null,{"aria-labelledby":"closing-cta-title","className":"tone-night relative isolate overflow-hidden bg-night text-night-text","children":[["$","div",null,{"className":"absolute inset-0 -z-10","aria-hidden":"true","children":[["$","$L1c",null,{"poster":{"src":"/_next/static/media/strategist-late-review.2x-6tsryuwr72.jpg","width":2400,"height":1029,"blurWidth":8,"blurHeight":3,"blurDataURL":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/wAARCAADAAgDAREAAhEBAxEB/9sAQwAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3PT47/9sAQwEKCwsODQ4cEBAcOygiKDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyGOV0+62PmHatoyai7Csf/9k="},"variants":[{"minViewport":1024,"sources":[{"src":"/media/strategist-late-review-loop-1536.webm","type":"video/webm"},{"src":"/media/strategist-late-review-loop-1536.mp4","type":"video/mp4"}]},{"minViewport":0,"sources":[{"src":"/media/strategist-late-review-loop-960.webm","type":"video/webm"},{"src":"/media/strategist-late-review-loop-960.mp4","type":"video/mp4"}]}],"sizes":"100vw","mediaClassName":"object-[72%_center]"}],["$","div",null,{"className":"absolute inset-0 bg-[linear-gradient(90deg,var(--color-night)_0%,rgb(13_13_17/0.94)_32%,rgb(13_13_17/0.55)_62%,rgb(13_13_17/0.2)_100%)]"}],["$","div",null,{"className":"absolute inset-0 bg-night/65 md:hidden"}],["$","div",null,{"className":"absolute inset-x-0 bottom-0 h-2/5 bg-[linear-gradient(180deg,rgb(13_13_17/0)_0%,var(--color-night)_100%)]"}]]}],["$","div",null,{"className":"container-page py-24 sm:py-32 lg:py-40","children":[["$","div",null,{"className":"max-w-2xl","data-reveal":"","children":[["$","p",null,{"className":"flex items-center gap-3 text-label uppercase text-night-muted","children":[["$","span",null,{"aria-hidden":"true","className":"h-px w-6 bg-current opacity-60"}],["$","span",null,{"children":"Next step"}]]}],["$","h2",null,{"id":"closing-cta-title","className":"mt-6 text-display-lg","children":"Find the constraint before spending more to scale it."}],["$","p",null,{"className":"mt-6 max-w-xl text-lead text-night-muted","children":"Get a structured review of your acquisition, conversion, and measurement setup, and see where growth is being lost."}],["$","div",null,{"className":"mt-10 flex flex-col items-start gap-5","children":[["$","$L1d",null,{"children":["$","$L2",null,{"href":"/growth-audit","className":"btn inline-flex shrink-0 items-center justify-center whitespace-nowrap rounded-md font-medium tracking-[-0.005em] bg-paper text-ink hover:text-white focus-visible:text-white [--btn-fill:var(--color-signal)] h-14 px-6 text-base gap-3","children":[["$","span",null,{"className":"btn-fill","aria-hidden":"true"}],["$","span",null,{"children":"Get a Growth Audit"}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]}],["$","p",null,{"className":"max-w-md text-sm text-night-muted","children":"No exaggerated promises. No generic deck. Just a clear view of the growth system."}]]}]]}],null]}]]}] 8:["$","script","script-0",{"src":"/_next/static/chunks/3la6ppx5noyi5.js","async":true}] 9:["$","$L1e",null,{"children":["$","$1f",null,{"name":"Next.MetadataOutlet","children":"$@20"}]}] c:["$","$1","h",{"children":[null,["$","$L21",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#f4f2ed"}],["$","meta","3",{"name":"color-scheme","content":"light"}]]}],["$","div",null,{"hidden":true,"children":["$","$L22",null,{"children":["$","$1f",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Attribution Readiness for SaaS + E-commerce · Axidys Media"}],["$","meta","1",{"name":"description","content":"Check whether your tracking, CRM, and order data can support attribution. Readiness levels, reconciliation checks, and when to use MER or holdout tests."}],["$","meta","2",{"name":"application-name","content":"Axidys Media"}],["$","link","3",{"rel":"author","href":"https://axidysmedia.com"}],["$","meta","4",{"name":"author","content":"Axidys Media"}],["$","link","5",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","meta","6",{"name":"creator","content":"Axidys Limited"}],["$","meta","7",{"name":"robots","content":"index, follow"}],["$","link","8",{"rel":"canonical","href":"https://axidysmedia.com/resources/attribution-readiness-guide"}],["$","meta","9",{"name":"format-detection","content":"telephone=no, address=no, email=no"}],["$","meta","10",{"property":"og:title","content":"Attribution Readiness for SaaS + E-commerce · Axidys Media"}],["$","meta","11",{"property":"og:description","content":"Check whether your tracking, CRM, and order data can support attribution. Readiness levels, reconciliation checks, and when to use MER or holdout tests."}],["$","meta","12",{"property":"og:url","content":"https://axidysmedia.com/resources/attribution-readiness-guide"}],["$","meta","13",{"property":"og:site_name","content":"Axidys Media"}],["$","meta","14",{"property":"og:locale","content":"en_US"}],["$","meta","15",{"property":"og:image","content":"https://axidysmedia.com/og/resource-attribution-readiness-guide.png"}],["$","meta","16",{"property":"og:image:width","content":"1200"}],["$","meta","17",{"property":"og:image:height","content":"630"}],["$","meta","18",{"property":"og:image:alt","content":"Attribution Readiness for SaaS + E-commerce · Axidys Media"}],["$","meta","19",{"property":"og:type","content":"article"}],["$","meta","20",{"property":"article:published_time","content":"2026-09-17"}],["$","meta","21",{"property":"article:modified_time","content":"2026-09-17"}],["$","meta","22",{"property":"article:author","content":"Axidys Media"}],["$","meta","23",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","24",{"name":"twitter:title","content":"Attribution Readiness for SaaS + E-commerce · Axidys Media"}],["$","meta","25",{"name":"twitter:description","content":"Check whether your tracking, CRM, and order data can support attribution. Readiness levels, reconciliation checks, and when to use MER or holdout tests."}],["$","meta","26",{"name":"twitter:image","content":"https://axidysmedia.com/og/resource-attribution-readiness-guide.png"}],["$","link","27",{"rel":"icon","href":"/icon.svg?icon.3fwvllydocdpi.svg","sizes":"any","type":"image/svg+xml"}],["$","link","28",{"rel":"apple-touch-icon","href":"/apple-icon.png?apple-icon.1bd0ritgh40kz.png","sizes":"180x180","type":"image/png"}],["$","$L23","29",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] e:["$","$1","c",{"children":[null,["$","$L24",null,{"parallelRouterKey":"children","template":["$","$L25",null,{}]}]]}] 11:["$","$1","c",{"children":[null,["$","$L24",null,{"parallelRouterKey":"children","template":["$","$L25",null,{}]}]]}] 14:true 15:["$","span",null,{"aria-hidden":"true","className":"mt-2.5 size-1.5 shrink-0 bg-signal"}] 16:["$","span",null,{"children":"Reconcile platform, analytics, and backend totals on a schedule. The unexplained gap shows how far to trust a model."}] 17:["$","li","When a model can't answer a budget question, use blended metrics like MER or blended CAC, plus holdout or geo tests.",{"className":"flex gap-3","children":[["$","span",null,{"aria-hidden":"true","className":"mt-2.5 size-1.5 shrink-0 bg-signal"}],["$","span",null,{"children":"When a model can't answer a budget question, use blended metrics like MER or blended CAC, plus holdout or geo tests."}]]}] 18:["$","div",null,{"className":"mt-14","children":["$","div",null,{"className":"article-body","children":[["$","p","0",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Attribution reports look precise. They assign revenue to campaigns, ad sets, and keywords down to the cent, which makes them easy to act on. But the credit they hand out is only as reliable as the events, identities, and revenue records underneath."}]]}],["$","p","1",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"It's tempting to ask which channel drove revenue before asking whether your data can answer that. This guide shows how to judge readiness, what SaaS and e-commerce setups need, and when blended metrics or tests work better than a model."}]]}],["$","h2","2",{"id":"what-attribution-can-and-cant-tell-you","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"What attribution can and can't tell you"}],["$","p","3",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Every attribution model splits credit for a conversion across the touchpoints before it. Rule-based models, such as last click, follow a fixed rule. Algorithmic models in GA4 and the ad platforms estimate credit from observed paths. Neither measures cause and effect. Both describe which touchpoints came before a conversion, not which ones made it happen."}]]}],["$","p","4",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Each system also sees a different slice of the journey. Ad platforms see their own impressions and clicks. Analytics tools see only sessions they can identify and that consent allows. Your CRM or store records who paid. Each view is partial and tends to favor what it can observe."}]]}],["$","p","5",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Attribution is still useful for a few jobs:"}]]}],["$","ul","6",{"className":"mt-5 space-y-2.5 text-[1.0625rem] leading-[1.7] text-ink-soft","children":[["$","li","Comparing campaigns, keywords, or ad sets within one channel",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","$1","0",{"children":"Comparing campaigns, keywords, or ad sets within one channel"}]]]}],["$","li","Finding broken journeys, such as clicks that never become qualified conversions",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","$1","0",{"children":"Finding broken journeys, such as clicks that never become qualified conversions"}]]]}],["$","li","Describing the paths buyers take before they convert",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","$1","0",{"children":"Describing the paths buyers take before they convert"}]]]}]]}],["$","p","7",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"It is weaker at the question budget owners care about most: what would happen to revenue if spend in a channel went up or down. That is a question about incrementality, meaning revenue that would not have happened without the spend. Controlled tests answer it more directly than any model."}]]}],["$","aside","8",{"className":"mt-8 rounded-lg border p-5 sm:p-6 border-signal/20 bg-signal-mist/60","children":[["$","p",null,{"className":"flex items-center gap-2 text-label uppercase text-ink","children":["$L26","Models are estimates"]}],"$L27"]}],"$L28","$L29","$L2a","$L2b","$L2c","$L2d","$L2e","$L2f","$L30","$L31","$L32","$L33","$L34","$L35","$L36","$L37","$L38","$L39","$L3a","$L3b","$L3c","$L3d","$L3e","$L3f","$L40","$L41","$L42","$L43","$L44","$L45","$L46","$L47","$L48","$L49","$L4a","$L4b","$L4c","$L4d","$L4e","$L4f"]}]}] 19:["$","aside",null,{"aria-labelledby":"article-cta-title","className":"tone-night mt-16 rounded-lg bg-night p-7 text-night-text sm:p-9","children":[["$","h2",null,{"id":"article-cta-title","className":"text-display-md","children":"Not sure where your setup stands?"}],["$","p",null,{"className":"mt-4 text-night-muted","children":"If a second opinion would help, a Growth Audit reviews your conversion setup, tracking, and CRM or store data against checks like these, and points to the gaps worth closing first."}],["$","$L2",null,{"href":"/growth-audit","className":"btn inline-flex shrink-0 items-center justify-center whitespace-nowrap rounded-md font-medium tracking-[-0.005em] bg-paper text-ink hover:text-white focus-visible:text-white [--btn-fill:var(--color-signal)] h-12 px-5 text-[0.9375rem] gap-2.5 mt-7","children":[["$","span",null,{"className":"btn-fill","aria-hidden":"true"}],["$","span",null,{"children":"Get a Growth Audit"}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]]}] 1a:["$","div",null,{"className":"flex flex-1 flex-col p-6","children":[["$","p",null,{"className":"font-mono text-data uppercase tracking-[0.1em] text-muted","children":["Guide"," · ","SaaS"]}],["$","h3",null,{"className":"mt-3 tracking-[-0.02em] text-title","children":["$","$L2",null,{"href":"/resources/saas-cac-benchmarking-guide","className":"after:absolute after:inset-0 after:content-['']","children":"SaaS CAC Benchmarking Guide"}]}],["$","p",null,{"className":"mt-3 text-ink-soft text-[0.9375rem]","children":"How to calculate, segment, and compare CAC without fooling yourself."}],["$","p",null,{"className":"mt-auto flex items-center justify-between pt-6 text-sm text-muted","children":[["$","span",null,{"children":"Guide"}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow text-ink","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]]}] 1b:["$","nav",null,{"aria-label":"Related services","className":"lg:col-span-4","children":[["$","p",null,{"className":"text-label uppercase text-muted","children":"Related services"}],["$","ul",null,{"className":"mt-4 border-t border-ink","children":[["$","li","analytics-attribution",{"children":["$","$L2",null,{"href":"/analytics-attribution","className":"group flex items-center justify-between gap-4 border-b border-line py-4","children":[["$","span",null,{"children":[["$","span",null,{"className":"block font-medium","children":"Analytics + Attribution"}],["$","span",null,{"className":"mt-1 block text-sm text-muted","children":"GA4, server-side tracking, and CRM revenue attribution."}]]}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow shrink-0","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]}],["$","li","paid-media",{"children":["$","$L2",null,{"href":"/paid-media","className":"group flex items-center justify-between gap-4 border-b border-line py-4","children":[["$","span",null,{"children":[["$","span",null,{"className":"block font-medium","children":"Paid Media"}],["$","span",null,{"className":"mt-1 block text-sm text-muted","children":"Search, Shopping, and Performance Max run against CAC and MER."}]]}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow shrink-0","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]}],["$","li","paid-social",{"children":["$","$L2",null,{"href":"/paid-social","className":"group flex items-center justify-between gap-4 border-b border-line py-4","children":[["$","span",null,{"children":[["$","span",null,{"className":"block font-medium","children":"Paid Social"}],["$","span",null,{"className":"mt-1 block text-sm text-muted","children":"Meta and LinkedIn built on creative testing and lead quality."}]]}],["$","svg",null,{"width":16,"height":16,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"className":"btn-arrow shrink-0","children":["$","path",null,{"d":"M2.5 8h10M8.75 4.25 12.5 8l-3.75 3.75","strokeLinecap":"square"}]}]]}]}]]}]]}] 20:null b:300 26:["$","span",null,{"aria-hidden":"true","className":"size-1.5 bg-signal"}] 27:["$","p",null,{"className":"mt-2.5 text-[1rem] leading-relaxed text-ink","children":[["$","$1","0",{"children":"Two models applied to the same data can rank channels differently, because each applies different assumptions. Write down which model you report on and why, and keep it fixed long enough to compare periods fairly."}]]}] 28:["$","h2","9",{"id":"where-your-setup-sits-today","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"Where your setup sits today"}] 29:["$","p","10",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Readiness is not a yes-or-no question. Use the levels below to place your current setup honestly, then let that level decide how much weight attribution gets in budget decisions."}]]}] 2a:["$","div","11",{"className":"mt-8 overflow-x-auto rounded-lg border border-line bg-surface","children":["$","table",null,{"className":"w-full min-w-[34rem] border-collapse text-left text-[0.9375rem]","children":[["$","caption",null,{"className":"border-b border-line px-5 py-3 text-left text-label uppercase text-muted","children":"Attribution readiness levels"}],["$","thead",null,{"children":["$","tr",null,{"className":"border-b border-ink/60","children":[["$","th","Level",{"scope":"col","className":"px-5 py-3 font-semibold","children":"Level"}],["$","th","What's true",{"scope":"col","className":"px-5 py-3 font-semibold","children":"What's true"}],["$","th","What it can support",{"scope":"col","className":"px-5 py-3 font-semibold","children":"What it can support"}],["$","th","Next step",{"scope":"col","className":"px-5 py-3 font-semibold","children":"Next step"}]]}]}],["$","tbody",null,{"children":[["$","tr","0",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Level 0: Unreliable tracking"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Conversions fire inconsistently, count twice, or track actions not tied to revenue. Totals can't be reconciled."}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Little beyond rough traffic trends."}]]}],["$","td","3",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Fix conversion definitions and tag firing before any analysis."}]]}]]}],["$","tr","1",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Level 1: Consistent events"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Key conversions fire once, with clean naming and UTMs. Gaps against backend totals are measured."}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Comparisons of volume and cost per conversion within a channel."}]]}],["$","td","3",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Connect conversions to pipeline stages or order records."}]]}]]}],["$","tr","2",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Level 2: Revenue-connected"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Conversions link to CRM stages, orders, refunds, or subscriptions. Offline conversions flow back to ad platforms."}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Channel and campaign comparisons based on revenue quality, not volume alone."}]]}],["$","td","3",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Reconcile on a schedule and plan a first incrementality test."}]]}]]}],["$","tr","3",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Level 3: Revenue-connected with incrementality checks"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Revenue-connected tracking, plus regular holdout or geo tests and blended metrics used as cross-checks."}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Budget shifts between channels, with model output checked against test results."}]]}],["$","td","3",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Repeat tests as spend, channel mix, and privacy rules change."}]]}]]}]]}]]}]}] 2b:["$","p","12",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Be strict when you place yourself. If conversions connect to orders but refunds are ignored, you are not yet revenue-connected for budget purposes, because the gap sits exactly where the money is."}]]}] 2c:["$","h2","13",{"id":"prerequisites-for-any-business-model","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"Prerequisites for any business model"}] 2d:["$","h3","14",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"Conversions tied to revenue events"}] 2e:["$","p","15",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"List every conversion action in GA4 and each ad platform, and name the revenue event behind each one. A newsletter signup is not a revenue event, but a qualified opportunity or a paid order is. Mark which conversions are primary, used for bidding and reporting, and which are secondary signals."}]]}] 2f:["$","h3","16",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"Event deduplication"}] 30:["$","p","17",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"The same lead or purchase can be counted twice when a browser tag and a server event both fire, or when a confirmation page reloads. Send a shared event or transaction ID with every conversion so platforms can deduplicate, and check your raw data for repeated IDs."}]]}] 31:["$","h3","18",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"Consent-aware measurement"}] 32:["$","p","19",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Where privacy laws or your own policy require consent, some visitors will decline tracking. Respect that choice and send only what each visitor allowed. Analytics can undercount as a result, so track consent rates by region to tell consent gaps apart from broken tags."}]]}] 33:["$","h3","20",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"Server-side tagging where it helps"}] 34:["$","p","21",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Server-side tagging, for example through a Google Tag Manager server container, can make collection more reliable and gives you control over what each platform receives. It is not a way around consent, and it adds cost and maintenance. Use it where browser tracking loses events you are allowed to collect."}]]}] 35:["$","h3","22",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"UTM and naming governance"}] 36:["$","p","23",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Reports group traffic by source, medium, and campaign. If one team uses “paid-social” as a medium and another uses “Paid_Social” for the same channel, reports split it in two. Keep a written naming convention and a shared UTM template, and review new values each month."}]]}] 37:["$","h3","24",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"Identity and cross-device limits"}] 38:["$","p","25",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"No setup follows every buyer. People research on a phone and buy on a laptop, clear cookies, block scripts, or forward links to colleagues. Each break makes a journey look shorter and moves credit toward the last visible touch. Logged-in experiences and consented first-party data can narrow the gap, but they won't close it."}]]}] 39:["$","h2","26",{"id":"prerequisites-by-business-model","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"Prerequisites by business model"}] 3a:["$","h3","27",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"SaaS: connect CRM stages to conversions"}] 3b:["$","p","28",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"In SaaS, the conversion a platform sees, such as a demo request or trial start, happens weeks or months before revenue. Readiness depends on connecting that early event to what happens next in HubSpot or Salesforce."}]]}] 3c:["$","ul","29",{"className":"mt-5 space-y-2.5 text-[1.0625rem] leading-[1.7] text-ink-soft","children":[["$","li","**Capture UTMs and click IDs on every form** and store them on the lead record, so the source survives the handoff to sales.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Capture UTMs and click IDs on every form"}],["$","$1","1",{"children":" and store them on the lead record, so the source survives the handoff to sales."}]]]}],["$","li","**Map CRM stages to a short list of conversions**, such as qualified lead, sales-accepted opportunity, and closed-won.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Map CRM stages to a short list of conversions"}],["$","$1","1",{"children":", such as qualified lead, sales-accepted opportunity, and closed-won."}]]]}],["$","li","**Import offline conversions** for those stages into Google Ads, Microsoft Ads, LinkedIn, or Meta, with values based on expected pipeline or contract value.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Import offline conversions"}],["$","$1","1",{"children":" for those stages into Google Ads, Microsoft Ads, LinkedIn, or Meta, with values based on expected pipeline or contract value."}]]]}],["$","li","**Decide how to credit deals with several contacts**, since one opportunity can have many first touches.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Decide how to credit deals with several contacts"}],["$","$1","1",{"children":", since one opportunity can have many first touches."}]]]}]]}] 3d:["$","p","30",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Check the lag between click and stage. If deals reach a stage after a platform's conversion window closes, those conversions may never match the original click. Import an earlier qualified stage for bidding, and report closed-won revenue separately. For more on pipeline-led measurement, see "}],["$","$L2","1",{"href":"/saas-marketing","className":"link-underline font-medium","children":"SaaS growth marketing"}],["$","$1","2",{"children":"."}]]}] 3e:["$","h3","31",{"className":"mt-10 text-[1.25rem] font-medium leading-snug tracking-[-0.015em]","children":"E-commerce: reconcile orders and refunds"}] 3f:["$","p","32",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"In e-commerce, the purchase happens fast, so the risk is different. Ad platforms and analytics tools record the sale at checkout, before cancellations, returns, and chargebacks. Revenue that looked real at checkout can shrink later."}]]}] 40:["$","ul","33",{"className":"mt-5 space-y-2.5 text-[1.0625rem] leading-[1.7] text-ink-soft","children":[["$","li","**Treat Shopify or Stripe as the revenue source of record**, and compare it with GA4 and each ad platform for the same period.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Treat Shopify or Stripe as the revenue source of record"}],["$","$1","1",{"children":", and compare it with GA4 and each ad platform for the same period."}]]]}],["$","li","**Report net revenue** after refunds, cancellations, and discounts, next to the gross figures platforms receive.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Report net revenue"}],["$","$1","1",{"children":" after refunds, cancellations, and discounts, next to the gross figures platforms receive."}]]]}],["$","li","**Match order IDs** between your store and analytics to find orders tracked twice or not at all.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Match order IDs"}],["$","$1","1",{"children":" between your store and analytics to find orders tracked twice or not at all."}]]]}],["$","li","**Separate new and returning customers**, because attribution can credit paid media for repeat orders that might have happened anyway.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Separate new and returning customers"}],["$","$1","1",{"children":", because attribution can credit paid media for repeat orders that might have happened anyway."}]]]}],["$","li","**Align tax and shipping treatment** so every system counts revenue the same way.",{"className":"relative pl-6","children":[["$","span",null,{"aria-hidden":"true","className":"absolute left-0 top-[0.7em] size-1.5 bg-signal"}],[["$","strong","0",{"className":"font-semibold","children":"Align tax and shipping treatment"}],["$","$1","1",{"children":" so every system counts revenue the same way."}]]]}]]}] 41:["$","p","34",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Once net revenue is reliable, blended efficiency becomes a useful cross-check on platform numbers. The "}],["$","$L2","1",{"href":"/resources/mer-vs-roas-guide","className":"link-underline font-medium","children":"MER vs ROAS guide"}],["$","$1","2",{"children":" explains how to use both, and "}],["$","$L2","3",{"href":"/ecommerce-marketing","className":"link-underline font-medium","children":"e-commerce growth marketing"}],["$","$1","4",{"children":" covers how this fits margin-led acquisition."}]]}] 42:["$","h2","35",{"id":"checks-to-run-before-you-trust-the-numbers","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"Checks to run before you trust the numbers"}] 43:["$","p","36",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Run these checks before a budget decision relies on attribution, and repeat them on a schedule. The aim is not a perfect match between systems. It is a gap you can measure and explain."}]]}] 44:["$","figure","37",{"className":"mt-8 rounded-lg border border-line bg-surface p-6 text-center","children":[["$","figcaption",null,{"className":"text-label uppercase text-muted","children":"Reconciliation gap"}],["$","p",null,{"className":"mt-3 font-mono text-[1.0625rem] leading-relaxed text-ink sm:text-lg","children":"(Platform-reported conversions − Backend conversions) ÷ Backend conversions"}],["$","p",null,{"className":"mx-auto mt-3 max-w-lg text-sm text-muted","children":[["$","$1","0",{"children":"Calculate it per platform and for all platforms combined. Set your own threshold for when a change in the gap needs investigation."}]]}]]}] 45:["$","ol","38",{"className":"mt-5 space-y-2.5 text-[1.0625rem] leading-[1.7] text-ink-soft list-decimal pl-6","children":[["$","li","Pick a closed period, such as last month, so late refunds and CRM updates have settled.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Pick a closed period, such as last month, so late refunds and CRM updates have settled."}]]]}],["$","li","Pull conversions and revenue from each ad platform, GA4, and your backend: HubSpot or Salesforce for SaaS, Shopify or Stripe for e-commerce.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Pull conversions and revenue from each ad platform, GA4, and your backend: HubSpot or Salesforce for SaaS, Shopify or Stripe for e-commerce."}]]]}],["$","li","Compare each platform's total, and the sum of all platforms, with the backend total.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Compare each platform's total, and the sum of all platforms, with the backend total."}]]]}],["$","li","Trace a sample of backend orders or opportunities to their recorded source.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Trace a sample of backend orders or opportunities to their recorded source."}]]]}],["$","li","List the explained causes of each gap, such as consent, attribution windows, or view-through credit, and investigate the rest.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"List the explained causes of each gap, such as consent, attribution windows, or view-through credit, and investigate the rest."}]]]}],["$","li","Repeat the check after any site release, tag change, or form or checkout update.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Repeat the check after any site release, tag change, or form or checkout update."}]]]}]]}] 46:["$","figure","39",{"className":"mt-8 rounded-lg bg-ink p-6 text-paper sm:p-7","children":[["$","div",null,{"className":"flex flex-wrap items-center justify-between gap-3","children":[["$","figcaption",null,{"className":"font-medium","children":"Hypothetical monthly reconciliation for an online store"}],["$","span",null,{"className":"rounded-sm border border-night-line px-2 py-1 font-mono text-data uppercase tracking-[0.1em] text-night-muted","children":"Hypothetical numbers"}]]}],["$","ul",null,{"className":"mt-4 space-y-1.5 font-mono text-[0.875rem] leading-relaxed text-paper/90","children":[["$","li","Orders recorded in Shopify: 1,000",{"children":"Orders recorded in Shopify: 1,000"}],["$","li","Purchases reported by Google Ads: 610",{"children":"Purchases reported by Google Ads: 610"}],["$","li","Purchases reported by Meta: 530",{"children":"Purchases reported by Meta: 530"}],["$","li","Sum of platform-reported purchases: 1,140, a gap of (1,140 − 1,000) ÷ 1,000 = +14%",{"children":"Sum of platform-reported purchases: 1,140, a gap of (1,140 − 1,000) ÷ 1,000 = +14%"}],["$","li","Purchases recorded in GA4: 880, a gap of (880 − 1,000) ÷ 1,000 = −12%",{"children":"Purchases recorded in GA4: 880, a gap of (880 − 1,000) ÷ 1,000 = −12%"}]]}],["$","p",null,{"className":"mt-4 border-t border-night-line pt-3 text-sm text-night-muted","children":"Both platforms can credit the same order, so together they claim more than the store recorded. The lower GA4 count could reflect consent choices or blocked scripts. Explain each gap before comparing channels."}]]}] 47:["$","aside","40",{"className":"mt-8 rounded-lg border p-5 sm:p-6 border-ink/20 bg-sand","children":[["$","p",null,{"className":"flex items-center gap-2 text-label uppercase text-ink","children":[["$","svg",null,{"width":14,"height":14,"viewBox":"0 0 16 16","fill":"none","stroke":"currentColor","strokeWidth":1.5,"aria-hidden":true,"focusable":false,"children":[["$","circle",null,{"cx":"8","cy":"8","r":"6.25"}],["$","path",null,{"d":"M8 4.75v4M8 10.75v.5","strokeLinecap":"square"}]]}],"Don't tune settings until the numbers match"]}],["$","p",null,{"className":"mt-2.5 text-[1rem] leading-relaxed text-ink","children":[["$","$1","0",{"children":"Avoid changing windows or conversion settings just to make platform totals match the backend. Each platform counts differently, so some gap is normal. A stable, explained gap is more useful than a forced match that hides a real tracking problem."}]]}]]}] 48:["$","h2","41",{"id":"when-to-use-blended-metrics-and-tests-instead","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"When to use blended metrics and tests instead"}] 49:["$","p","42",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Some questions stay hard to answer at any readiness level. Would revenue fall if you paused brand search? Does prospecting on Meta create demand, or claim sales that would have happened anyway? For questions like these, step back from user-level credit."}]]}] 4a:["$","div","43",{"className":"mt-8 overflow-x-auto rounded-lg border border-line bg-surface","children":["$","table",null,{"className":"w-full min-w-[34rem] border-collapse text-left text-[0.9375rem]","children":[["$","caption",null,{"className":"border-b border-line px-5 py-3 text-left text-label uppercase text-muted","children":"Cross-checks for attribution"}],["$","thead",null,{"children":["$","tr",null,{"className":"border-b border-ink/60","children":[["$","th","Method",{"scope":"col","className":"px-5 py-3 font-semibold","children":"Method"}],["$","th","What it answers",{"scope":"col","className":"px-5 py-3 font-semibold","children":"What it answers"}],["$","th","When to use it",{"scope":"col","className":"px-5 py-3 font-semibold","children":"When to use it"}]]}]}],["$","tbody",null,{"children":[["$","tr","0",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"MER (e-commerce)"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Is total marketing spend producing enough total revenue?"}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Platforms disagree, or several channels claim the same orders."}]]}]]}],["$","tr","1",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Blended CAC (SaaS)"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"What does a new customer cost across all channels combined?"}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"Sources are hard to separate, or sales cycles outlast conversion windows."}]]}]]}],["$","tr","2",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Holdout test"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"How do conversions differ between a group that sees ads and a similar group that doesn't?"}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"You need the incremental effect of a campaign type or channel."}]]}]]}],["$","tr","3",{"className":"border-b border-line align-top last:border-b-0","children":[["$","th","0",{"scope":"row","className":"px-5 py-3 font-medium","children":[["$","$1","0",{"children":"Geo test"}]]}],["$","td","1",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"How does revenue change where spend changes, compared with similar regions where it doesn't?"}]]}],["$","td","2",{"className":"px-5 py-3 text-ink-soft","children":[["$","$1","0",{"children":"User-level tracking is limited, and spend can be controlled by location."}]]}]]}]]}]]}]}] 4b:["$","p","44",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Tests have costs. A holdout withholds ads from some potential buyers, and a geo test needs comparable regions and enough volume to separate a real effect from noise. Set the test length and decision rule before launch, and use the result to calibrate how much you trust the model."}]]}] 4c:["$","h2","45",{"id":"next-steps","className":"mt-16 scroll-mt-28 text-[1.75rem] font-medium leading-tight tracking-[-0.025em] first:mt-0","children":"Next steps"}] 4d:["$","p","46",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"Work upward from the lowest unmet prerequisite. Conversion definitions and deduplication come first, because every later check depends on them."}]]}] 4e:["$","ol","47",{"className":"mt-5 space-y-2.5 text-[1.0625rem] leading-[1.7] text-ink-soft list-decimal pl-6","children":[["$","li","List every conversion action and the revenue event it represents.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"List every conversion action and the revenue event it represents."}]]]}],["$","li","Run the reconciliation check for one closed month and record the explained gaps.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Run the reconciliation check for one closed month and record the explained gaps."}]]]}],["$","li","Connect CRM stages or net order data to your reporting and ad platforms.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Connect CRM stages or net order data to your reporting and ad platforms."}]]]}],["$","li","Pick one budget question attribution can't answer, and design a holdout or geo test for it.",{"className":"pl-1","children":[null,[["$","$1","0",{"children":"Pick one budget question attribution can't answer, and design a holdout or geo test for it."}]]]}]]}] 4f:["$","p","48",{"className":"mt-5 text-[1.0625rem] leading-[1.75] text-ink-soft","children":[["$","$1","0",{"children":"For how we handle this work with SaaS and e-commerce teams, see "}],["$","$L2","1",{"href":"/analytics-attribution","className":"link-underline font-medium","children":"analytics and attribution"}],["$","$1","2",{"children":"."}]]}] b:C 13:0 d:"$undefined" f:"$undefined" 12:"$undefined" a:"$undefined"