Blog

  • Revenue Attribution: Stop Counting Leads, Start Counting Revenue

    Most marketing reports count the wrong thing. They count leads: form fills, phone calls, downloads. Leads are easy to count, which is exactly why so many dashboards stop there. But no business runs on leads. It runs on revenue. Revenue attribution is the practice of connecting each dollar of closed business back to the marketing that produced it, so you can spend more on what makes money and less on what just makes noise.

    Lead counts and revenue can point in opposite directions

    Here is the trap. One channel floods you with cheap leads that rarely close. Another sends a trickle of leads that almost always become high-value customers. If you report on lead volume, the first channel looks like your hero and the second looks like a waste. If you report on revenue, the ranking flips. The channel that looked best is quietly losing you money, and the one you were about to cut is your best performer. Counting leads alone can lead you to defund exactly the marketing you should be doubling down on.

    Why most WordPress setups can’t do it

    Revenue attribution needs two things joined together: the lead’s true source at the moment it arrived, and the outcome of that lead once the deal closes. Most WordPress stacks capture neither cleanly. Analytics tools see anonymous sessions but lose the thread the moment someone fills out a form or picks up the phone. The CRM knows who closed but not where they came from. The source lives in one system, the revenue lives in another, and nobody ties them together, so the report you actually need never gets built.

    The building blocks, in order

    • Capture the source on the lead itself. Channel, campaign, and click IDs get stamped onto the lead the instant it comes in. That is lead source tracking, and it is the foundation everything else sits on.
    • Keep it first-party. With third-party cookies going away, attribution that depends on them breaks. First-party data is what keeps the chain intact. We covered the why in first-party vs third-party cookies.
    • Follow the lead to the closed deal. The lead has to stay connected to its source all the way through to the sale. That connection is lead attribution; when you tie the closed deal back to the campaign, you get closed-loop reporting.
    • Send the revenue back to the ad platforms. Reporting revenue by channel is the report; pushing that revenue back to Google and Meta as offline conversions is what makes the ad platforms optimize toward money instead of raw leads.

    What revenue attribution changes

    Once revenue, not lead count, is the number on the report, every marketing decision gets simpler. Budget moves toward the channels that produce customers. Ad platforms bid toward closed deals instead of cheap clicks. And the conversation with leadership shifts from “we generated 300 leads” to “we generated this much revenue, and here is the channel it came from.” That is a fundamentally stronger position to defend a marketing budget from.

    The bottom line

    Leads are an input. Revenue is the result. Revenue attribution is what connects the two, and on WordPress it is exactly what Sales Provenance is built to do: capture every lead with its true source, follow it to the closed sale, and report the money by channel. Stop counting leads. Start counting revenue.

  • A CallRail Alternative That Tracks the Whole Sale, Not Just the Call

    If you are shopping for a CallRail alternative, it is worth asking what job you actually need done. CallRail is a well-built call-tracking tool: it tells you which marketing made the phone ring. But for a lot of WordPress businesses, “which channel made the phone ring” is only half the question. The other half is “which channel made us money,” and that is a different job entirely.

    Call tracking answers one question. Attribution answers the one that pays.

    Call tracking connects a phone call back to a source: this call came from Google Ads, that one from organic search. Useful. But the call is a middle step, not the outcome. What you ultimately care about is which sources produced closed customers and revenue, across every way a lead can arrive: calls, yes, but also forms, chats, and returns days later. When your reporting stops at the call, you are still guessing about the part that matters most.

    What to look for in a CallRail alternative

    • Every lead type, not just calls. Phone calls, form fills, and chats should land in one place with their source attached, so you are not stitching three tools together.
    • First-party tracking. With third-party cookies fading, attribution has to run on first-party data to survive. We covered why in first-party vs third-party cookies.
    • Source captured at the moment of capture. The channel, campaign, and click IDs should be stamped onto the lead itself. That is the foundation of lead source tracking and lead attribution.
    • A path all the way to the sale. The tool should let you tie the lead to the closed deal and push that outcome back to the ad platforms. That is offline conversion tracking, and it is what turns a call log into a revenue report.
    • Native to WordPress. You should not have to move your site or your team onto a heavy new platform to get this.

    Where Sales Provenance fits

    Sales Provenance is built for the whole loop, not just the call. It installs on WordPress, captures every lead with its true source as first-party data, follows that lead through to the closed sale, and feeds the won deals back to Google and Meta so they optimize toward revenue. Call tracking is included as one input, but the report you get out is the one CallRail was never designed to produce: closed-loop reporting that shows revenue by channel.

    If CallRail is giving you exactly what you need, keep it. But if you have outgrown “which channel made the phone ring” and you need “which channel made us money,” the alternative you are looking for is a closed-loop attribution tool, not another call tracker.

    The bottom line

    The best CallRail alternative is not a cheaper call tracker. It is a system that treats the call as one step on the way to the sale and reports the sale itself. On WordPress, that is the whole point of Sales Provenance.

  • Closed-Loop Reporting on WordPress: Connect Marketing Spend to Revenue (Not Just Leads)

    Most WordPress marketing reports stop at the wrong finish line. They tell you how many leads you generated last month. They do not tell you which of those leads turned into paying customers, or which marketing channel produced the revenue. That gap is exactly what closed-loop reporting is built to fix.

    What closed-loop reporting actually means

    Closed-loop reporting connects the two ends of your marketing that normally live in separate systems: the first touch (the ad, search, or referral that brought someone in) and the final outcome (the deal that actually closed and the revenue it produced). When the loop is closed, you can say a sentence most businesses cannot: “This channel generated 12 leads, 3 of them signed, and it produced 18,400 dollars.” That is the difference between reporting activity and reporting money.

    Why the loop stays open on most WordPress sites

    The break is almost never the front end. WordPress captures the lead just fine: a form fills out, a phone rings, a chat starts. The problem is what happens next. The outcome of that lead lives somewhere else entirely. It gets closed on a phone call, marked won in a CRM, or typed into a spreadsheet. Nobody ever carries the source of the lead all the way through to the sale, so the report can only count leads, not customers.

    A few things quietly widen that gap:

    • The source data is lost at capture. If you are not doing lead source tracking on the form itself, the channel is gone the moment the lead is created.
    • Tracking breaks between visit and conversion. Third-party cookies and cross-site limits mean the return visit often looks like a brand-new anonymous session. We covered why in first-party vs third-party cookies.
    • The win happens offline. The sale closes in a conversation your website never sees, so the outcome is never sent back to the source.

    The four pieces you need to close the loop

    Closed-loop reporting is not one tool. It is a chain of four links, and the report is only as good as the weakest one.

    1. Capture the source with the lead. Every form submission and phone call should carry its origin (channel, campaign, referrer, and the click IDs from Google and Meta) as first-party data stored with the lead, not inferred later.
    2. Give every lead a stable identity. The same person should be recognizable across visits so a return does not reset to anonymous. This is where lead attribution ties multiple touches to one record.
    3. Record the real outcome. When a lead becomes a customer, that result has to attach back to the original lead record, including the deal value.
    4. Send the outcome back to the ad platforms. The final step is offline conversion tracking, which pushes the closed sale back to Google and Meta so they optimize toward revenue instead of raw form fills.

    How to set it up without leaving WordPress

    You do not need to move your site off WordPress or bolt on a heavy sales platform to do this. The practical path:

    • Put a first-party tracking tag on the site that stamps every lead with its source and click IDs at the moment of capture.
    • Track phone calls the same way you track forms, so a call that closes is not a blind spot.
    • Keep a single record per lead that follows them from first visit to signed deal, so the outcome has somewhere to land.
    • Feed the won deals back to the ad platforms as offline conversions on a regular cadence.

    Done in that order, the report writes itself: source in, revenue out, one connected line.

    What changes once the loop is closed

    The reporting shift is the obvious win, but the real payoff is what you do with it:

    • You report revenue, not leads. “We drove 200 leads” becomes “we drove 61,000 dollars in closed business, and here is the channel breakdown.”
    • You cut spend that produces cheap leads and no customers. The channel with the lowest cost per lead is often not the one with the lowest cost per sale. Closed-loop reporting exposes that instantly.
    • Your ad platforms get smarter. Once Google and Meta receive the actual sales, their algorithms chase the traffic that converts to money, not the traffic that fills out forms.

    The bottom line

    An open loop lets you count effort. A closed loop lets you prove profit. If your WordPress reports still end at “leads generated,” you are measuring the first half of the story and guessing at the half that pays the bills. Close the loop, and every dollar of marketing spend gets a straight answer: did it come back with more.

  • Lead Attribution on WordPress: Which Marketing Actually Produced the Sale

    Lead attribution is how you assign credit for a lead, and eventually a sale, to the marketing that produced it. Get it right and you know which channels, campaigns, and keywords actually make you money. Get it wrong, and you end up cutting the budget that was quietly driving your best customers while pouring more into the channel that just happens to get the last click. On most WordPress sites, attribution is quietly wrong.

    This post explains the common attribution models, why the default WordPress setup breaks all of them, and what a setup that survives to the closed sale actually looks like.

    The attribution models, in plain English

    An attribution model is just a rule for who gets the credit when a buyer touches your marketing more than once. The common ones:

    • First-touch. All credit to the first interaction (the blog post they found on Google). Good for judging what creates awareness, blind to what closes.
    • Last-touch. All credit to the final interaction before the conversion (the branded search they did on their way back). The WordPress default, and it systematically over-credits the bottom of the funnel.
    • Multi-touch. Credit is shared across every interaction in the journey. The most honest, and the hardest to set up, because it requires you to actually record the whole journey.

    The model matters less than the data underneath it. Any model is worthless if you never captured the touches in the first place, and that is exactly where a standard WordPress site falls down.

    Why WordPress attribution is quietly broken

    It only ever sees the last touch. A form plugin grabs whatever UTM is on the page at submit time. If the buyer found you on Google in March, thought about it, and came back by typing your domain in April, the form records “direct” and your Google investment gets zero credit. The earlier touches were never stored, so no model can restore them.

    Phone calls are invisible. For contractors, senior living, legal, and home services, the phone is where the good leads come in. A form-based tracker never sees them, so the channels that drive calls look dead in your reports.

    The credit dies at the lead. Even when a source is captured, it usually sits on a form entry and goes nowhere. When that lead becomes a paying customer weeks later, nothing connects the sale back to the marketing. You can attribute leads, but not revenue, and revenue is the only number that pays the bills.

    Third-party cookies are disappearing. Any attribution that leans on third-party cookies loses accuracy every quarter as browsers block them. We covered why that quietly breaks WordPress attribution in First-Party vs Third-Party Cookies on WordPress.

    What good lead attribution looks like

    A setup that actually works fixes each hole:

    • Every touch recorded, first-party. The full sequence of visits is captured and stored on your own domain, so it survives cookie changes and you can run first-touch, last-touch, or multi-touch from real data instead of a guess.
    • Calls attributed like forms. Inbound calls carry a source the same way a form fill does, with recording and scoring so you know which calls were real opportunities.
    • Source tied to revenue. The attribution rides with the lead into your CRM and stays attached through to the closed deal, so you can finally report revenue by source, not just leads by source.
    • Fed back to the ad platforms. Once you know which sources produced sales, you send that back to Google and Meta so they optimize toward customers, not cheap form fills.

    Attribution vs lead source tracking

    These two get used interchangeably, but they are different layers. Lead source tracking is capturing where each lead came from. Attribution is deciding how to assign credit across those sources, especially when there is more than one. You cannot do attribution without good source tracking underneath it, which is why we start there in Lead Source Tracking on WordPress. Attribution is the reporting layer you build on top once the data is clean.

    Closing the loop

    The whole point of attribution is to act on it. Knowing that organic search produced more revenue than paid social should change where the next dollar goes, and it should change what Google and Meta optimize toward. That last step, feeding the closed sale back to the ad platforms, is what turns attribution from a report into a growth engine. We walk through it in Report Move-Ins, Not Leads.

    The short version

    Lead attribution is only as good as the data beneath it. Pick a model later; first make sure you are recording every touch as first-party data, including phone calls, and keeping the source attached from the first click through to the closed sale. Do that and last-touch, first-touch, and multi-touch all become answerable from real numbers instead of a UTM guess.

    Sales Provenance does this on the WordPress site your clients already have. No migration, no funnel rebuild. If you want attribution that survives to the closed sale, book a demo.

  • Lead Source Tracking for WordPress: The Complete Setup Guide

    Most WordPress service businesses know which channels they are paying for — Google Ads, Facebook, email, organic search. What most cannot tell you is which of those channels is actually producing customers. Not clicks, not form submissions, not even leads. Customers.

    That gap is a lead source tracking problem. This guide covers how to close it: what to set up, what tools to use, and how to connect the data from first click to closed deal.

    Why “How Did You Hear About Us?” Does Not Work

    The instinct to ask customers how they found you is understandable. It is also unreliable. Studies consistently show that people attribute their discovery to the last touchpoint they remember, which is often a Google search for the company’s name — even if the original discovery came from a Facebook ad, a referral, or an organic blog post months earlier.

    Self-reported lead source data is confirmation bias at scale. People do not accurately remember or report their full decision path. You need systems that capture source data automatically, without depending on anyone to tell you anything.

    The Four Things Lead Source Tracking Must Capture

    A complete lead source setup captures:

    1. Channel and campaign: where did the traffic come from (Google Ads, organic, Facebook, email, referral) and which specific campaign or effort drove it
    2. Form submissions: which leads submitted a contact form, and from which source
    3. Phone calls: which leads called (not just visited), and from which source
    4. Revenue outcomes: which of those leads became paying customers, and what they were worth

    Most setups capture #1 in GA4 and stop there. The result is a system that can tell you which channels drove sessions, but not which channels drove revenue. Building toward #4 is the goal.

    Layer 1: UTM Parameters for Channel and Campaign Tracking

    UTM parameters are tags appended to your URLs that tell GA4 and your own systems where traffic is coming from. A tagged URL looks like this:

    https://yoursite.com/contact/?utm_source=google&utm_medium=cpc&utm_campaign=plumbing-emergency

    Google Ads populates UTM parameters automatically if you enable auto-tagging (recommended) or if you use final URL suffixes in your campaign settings. For Facebook, email campaigns, and other channels, you tag URLs manually using Google’s Campaign URL Builder or a similar tool.

    UTMs alone capture the session. They do not follow the visitor when they submit a form — that requires the next layer.

    Layer 2: First-Party Cookies for Session Attribution

    When a visitor arrives with UTM parameters in the URL, a JavaScript snippet captures those values and stores them in first-party cookies. This preserves the attribution data across the session and, if you configure a long enough cookie window (30 days is standard), across return visits.

    The key behavior: the script should write the cookie only if UTM values are present in the current URL. A returning visitor who comes back via direct traffic should not overwrite the original paid attribution. First-touch attribution, stored in cookies, is the foundation of accurate lead source reporting.

    This script runs on every page load and can be installed via Google Tag Manager, WPCode, or your theme’s functions.php. It requires no third-party service — it writes data to the visitor’s browser in your own first-party domain.

    Layer 3: Hidden Form Fields That Carry Attribution Into Your CRM

    Once UTM values are stored in cookies, your contact forms need to read those values and include them in each submission. This is done with hidden fields: invisible form inputs that populate automatically from the cookie values when the page loads.

    Every major WordPress form plugin — Gravity Forms, WPForms, Contact Form 7, Fluent Forms — supports hidden fields with dynamic default values. You add one hidden field per UTM parameter, configure each to read the corresponding cookie, and the attribution data flows silently with every lead submission.

    The result: each lead record in your CRM, email inbox, or spreadsheet includes utm_source, utm_medium, utm_campaign, utm_content, and utm_term alongside the contact information the visitor submitted.

    Layer 4: Phone Call Attribution via Dynamic Number Insertion

    For most WordPress service businesses, phone calls represent a significant share of lead volume — often 30 to 60 percent. If calls are not tracked by source, a major portion of conversion data is invisible to attribution.

    Dynamic number insertion (DNI) solves this. A JavaScript snippet detects the visitor’s traffic source and replaces the phone number shown on the page with a unique tracking number tied to that source. Someone who arrived from Google Ads sees a different number than someone who came from organic search. When they call, the call tracking platform records the source and passes it to your reporting.

    CallRail is the standard tool for this in the WordPress ecosystem. For businesses getting 20 or more calls per month, DNI is the highest-leverage attribution investment available — it closes the source gap on the portion of leads that never submit a form.

    Layer 5: Connecting Closed Deals Back to Source

    The previous layers tell you which channels are generating leads. Layer 5 tells you which channels are generating revenue. This is where lead source tracking becomes a genuine business intelligence tool.

    The mechanism depends on your CRM setup:

    • CRM with custom fields: if you mapped UTM values to custom fields in HubSpot, Pipedrive, Close, or another CRM via your form integration, you can pull close rate and revenue by source directly from the CRM. Filter closed deals by utm_source and sum revenue.
    • Spreadsheet-based: if you use a spreadsheet as your lead log, add a “Closed” column and a “Deal Value” column. Monthly, update each row with the outcome. Then pivot by utm_source to see close rate and revenue by channel.
    • Offline conversion upload: for Google Ads, you can upload closed deal data as offline conversions. Google uses the gclid (click ID, separate from UTMs) to match the deal back to the campaign and keyword, updating its bidding signals with actual revenue data rather than just form submissions.

    What to Do With Lead Source Data

    Once you have reliable lead source data connected to revenue outcomes, the decisions become obvious:

    • Budget allocation: which channels produce the highest close rate? Move budget toward them. A channel generating 20 leads at 5 percent close rate should receive less budget than one generating 8 leads at 40 percent close rate, regardless of cost per lead.
    • Negative keywords in paid search: utm_term (the search query that triggered the ad) attached to zero-conversion leads tells you which search terms are pulling unqualified traffic. Add them as negatives.
    • Content prioritization: organic traffic with high close rates indicates content that attracts buyers, not browsers. Expand that content cluster.
    • Channel shutdowns: a channel that generates lead volume but consistently zero revenue is burning budget on awareness that does not convert. Cut it.

    Common Setup Mistakes to Avoid

    • UTMs stripped by redirects: if your landing page URL redirects before the page loads (www to non-www, HTTP to HTTPS, or a tracking redirect), UTM parameters can be dropped. Test your landing page URLs for redirect chains before going live.
    • Form caching blocking cookie reads: some caching plugins prevent JavaScript from running on form pages, so hidden fields do not populate. Add form pages to your caching exclusion list.
    • Session storage instead of cookies: sessionStorage loses data when the browser closes. Use document.cookie with a 30-day expiry for reliable cross-session attribution.
    • Last-touch overwriting first-touch: if your cookie capture script writes on every visit regardless of UTM presence, a direct return visit will overwrite a paid ad visit from a week earlier. Only write when UTM parameters are actually in the URL.
    • Mismatched form-to-CRM field mapping: hidden UTM fields in the form do nothing if they are not mapped to the CRM or notification template. Verify the full data pipeline with a test submission after setup.

    Putting It Together: A One-Week Setup Plan

    For a WordPress service business starting from scratch, a working lead source tracking setup is achievable in a week:

    1. Day 1-2: install the UTM capture script (via GTM or WPCode). Test by visiting your own site with UTM parameters in the URL and confirming the cookies are written in browser developer tools.
    2. Day 3: add hidden UTM fields to your main contact form. Submit a test form and verify UTM data appears in the email notification or CRM record.
    3. Day 4: set up call tracking with dynamic number insertion for your top traffic sources. Confirm numbers are swapping correctly on arrival from each source.
    4. Day 5: add a Lead Source column to your CRM or lead spreadsheet. Verify it is populating from form submissions.
    5. Day 7: review your first week of attributed lead data. Check which sources are generating submissions and calls. You now have the foundation to measure ROI by channel.

    For a plug-and-play version of this stack built natively for WordPress — UTM capture, form field enrichment, call tracking integration, offline conversion sync, and closed-loop revenue reporting in a single plugin — Sales Provenance is designed to handle every layer described here without requiring custom development.

    Related reading: UTM parameter tracking on WordPress, Google Ads conversion tracking for WordPress, and marketing attribution for agencies.

  • Report Move-Ins, Not Leads: How Offline Conversion Tracking Fixes WordPress Marketing

    Most WordPress businesses optimize their marketing toward the wrong finish line. They count form fills, phone calls, and quote requests, and then pour budget into whatever produces the most of them. The problem is that leads are not customers. The campaign that generates the most leads is very often not the campaign that generates the most revenue, and if you cannot tell the two apart, you are spending money to attract the wrong people.

    Offline conversion tracking is how you fix that. It closes the loop between a click and a closed sale, and it is the single highest-leverage upgrade most WordPress businesses can make to their marketing measurement.

    The gap: your ad platform stops watching at the form

    Here is what happens today on a typical WordPress site. Someone clicks your Google or Meta ad, lands on your site, and fills out a form. The ad platform records a "conversion" and pats itself on the back. From that moment on, it is blind.

    It does not know:

    • Whether that lead ever answered the phone
    • Whether they were a real prospect or a tire-kicker
    • Whether they signed, bought, moved in, or booked the job
    • How much that sale was actually worth

    So when Google or Meta optimizes your campaigns, it is optimizing toward form fills, because that is the last thing it can see. It will happily find you more of whatever kind of person tends to fill out forms, even if those people rarely become customers. You get a dashboard full of cheap leads and a sales team that quietly complains the leads are junk.

    The fix: send the real outcome back to the platform

    Offline conversion tracking feeds the truth back into the system. When a lead actually becomes a customer, you send that event, and ideally its real dollar value, back to Google and Meta. Now the platforms can optimize toward the outcome that matters: customers and revenue, not raw leads.

    The change in behavior is dramatic. Instead of chasing the cheapest form fill, the ad platform starts hunting for people who look like your actual buyers. Campaigns that produced lots of low-quality leads get throttled. Campaigns that produced fewer leads but better customers get scaled. You are finally paying for revenue instead of activity.

    How it works, step by step

    You do not need to rebuild your website. The mechanism is straightforward once the pieces are connected:

    1. Tag the click. When a visitor arrives from an ad, the platform attaches a click identifier (Google calls it GCLID, Meta has its own). You capture and store that identifier with the lead on your own domain, as first-party data.

    2. Carry it through to the lead record. When that visitor submits a form or calls, the click ID rides along into your CRM, attached to the actual person.

    3. Wait for the real outcome. Days or weeks later, that lead closes, buys, books the job, or moves in. Your team marks the deal won, usually with a dollar value.

    4. Send the conversion back. That won deal, paired with its original click ID and value, gets uploaded back to Google Ads and Meta as an offline conversion. The platform matches it to the original click and updates what it knows.

    5. Let the algorithm relearn. With real outcomes flowing in, smart bidding stops chasing cheap leads and starts chasing customers.

    Why this is hard on WordPress today

    The reason most WordPress businesses do not do this is not that it is complicated in theory. It is that the pieces live in different places that do not talk to each other.

    The click ID is captured by a tag. The lead lands in a form plugin or a CRM. The sale gets marked won in yet another system, often a spreadsheet or the owner's head. Stitching those together, holding the click ID for weeks, and uploading clean conversions back to two ad platforms on a schedule is exactly the kind of plumbing that never gets built, so it never gets built.

    That is the gap. The data exists, scattered across your tools. Nobody has connected it end to end.

    What good looks like

    When offline conversion tracking is working, your marketing reports change in a way you can feel:

    • Your reports show revenue and customers, not just leads.
    • You can finally answer "which campaign actually drives sales?" with data instead of a hunch.
    • Your ad platforms get smarter every week, because they are learning from real outcomes.
    • Your sales team stops complaining about lead quality, because the system is now optimizing for the leads they can actually close.

    This is the difference between marketing that looks busy and marketing that is accountable to the bottom line.

    Where to start

    Ask yourself one question: if I marked a deal "won" in my system today, would Google and Meta ever find out?

    For almost every WordPress business, the answer is no. The click ID was never captured, or it was captured and never connected to the sale, or the sale lives somewhere the ad platforms will never see. That broken connection is costing you, quietly, every single day your campaigns optimize toward the wrong goal.

    Closing that loop, capturing the click on your own domain, carrying it to the sale, and feeding the real outcome back to the platforms, is exactly what Sales Provenance was built to do for WordPress, without moving you off the platform you already run on.

  • First-Party vs Third-Party Cookies on WordPress: Why Your Attribution Is Quietly Breaking (and How to Fix It)

    If you run marketing for a business on WordPress, here is an uncomfortable truth: a growing share of the data in your Google Analytics and ad dashboards is wrong, and it is getting worse every year. Not because anyone made a mistake, but because the technology those reports depend on is being switched off underneath you.

    The culprit is the third-party cookie. Understanding the difference between a third-party cookie and a first-party cookie is the single most useful thing a marketer can learn right now, because it explains why your numbers do not add up and points directly at the fix.

    The 30-second version

    • A first-party cookie is set by the website the visitor is actually on (your site). Browsers trust it, keep it, and it survives.
    • A third-party cookie is set by a different domain than the one in the address bar (an ad network, a tracking pixel, an embedded tool). Browsers increasingly block it, and it disappears.

    Most marketing measurement was built on third-party cookies. That foundation is being pulled out from under the industry. The businesses that move their tracking to a first-party setup keep their data. The ones that do not watch their reports slowly fill up with "direct" and "unattributed" traffic that nobody can explain.

    Why this is happening

    Privacy regulation and browser makers have spent the last several years dismantling third-party tracking on purpose.

    • Safari has blocked third-party cookies by default since 2020, and aggressively limits how long even some first-party cookies live.
    • Firefox blocks them by default too.
    • Chrome, which is the majority of most sites' traffic, has been winding down third-party cookie support and pushing the whole web toward first-party and privacy-safe alternatives.

    Add ad blockers, iOS privacy prompts, and stricter consent rules, and the result is the same everywhere: the trail of breadcrumbs that used to connect "saw the ad" to "filled out the form" to "became a customer" keeps getting erased.

    What this actually looks like in your reports

    You do not get an error message. You get quiet, misleading data:

    1. Your "Direct" traffic balloons. When a visit cannot be attributed to its real source, analytics tools dump it into Direct. If a third of your traffic is suddenly "Direct," that is usually not loyal fans typing your URL. It is broken attribution.

    2. Paid campaigns look worse than they are. A visitor clicks your Google or Meta ad, leaves, comes back two days later, and converts. If the tracking cookie did not survive those two days, that sale gets credited to nobody, or to the wrong channel. You end up cutting a campaign that was actually working.

    3. Your lead source field says "unknown." The most expensive version of this problem: a lead comes into your CRM with no record of where it came from. You are now guessing which marketing to fund.

    For a business making real decisions about ad spend, this is not a rounding error. It is the difference between scaling the channel that drives revenue and starving it.

    The fix: move your tracking to first-party

    The good news is that first-party data is not blocked. The whole industry response to the death of the third-party cookie is the same: capture the information yourself, on your own domain, where the browser trusts it and keeps it.

    On WordPress, that means a few specific things:

    • Set your tracking from your own domain, so the cookie that remembers a visitor is a first-party cookie that survives instead of a third-party one that gets blocked.
    • Capture the campaign details (the UTM tags and click IDs) the moment a visitor lands, and hold onto them, so that when they convert days later you still know which ad sent them.
    • Tie that visitor record to the actual lead and the actual closed sale, not just the form submission, so your report shows revenue and not just clicks.
    • Send the conversions back to the ad platforms as first-party (offline) conversions, so Google and Meta can keep optimizing even without the third-party cookie they used to rely on.

    This is exactly the gap that most WordPress sites have today. The default analytics and pixel setup was designed for the third-party-cookie world. It still loads, it still reports numbers, but the numbers are decaying.

    Why this matters more on WordPress specifically

    A huge share of small and mid-sized businesses run on WordPress, and most of them stitched their tracking together from a handful of plugins and pasted-in pixels over the years. That setup is the most exposed to the third-party-cookie shift, because it was never built as one connected, first-party system in the first place.

    The upside is that WordPress is also the easiest place to fix it properly, without ripping out your site or moving to an expensive all-in-one platform that wants to own your whole tech stack.

    What to do next

    You do not need to become a data engineer. You need three questions answered about your current setup:

    1. How much of my traffic is landing in "Direct" or "unassigned," and is that number climbing?
    2. When a lead hits my CRM, can I see the real source, or does it say "unknown"?
    3. Can I connect a single marketing dollar to a single closed sale, or only to a form fill?

    If those answers make you uneasy, that is the third-party cookie problem showing up in your business. The fix is to move to a first-party setup that captures the full journey on your own domain, from first click to closed sale.

    That is the entire reason Sales Provenance exists: to give WordPress businesses first-party, sale-level attribution without leaving WordPress. If you want to see where your own data is leaking, that is the place to start.