Blog

  • Meta Ads Conversion Tracking on WordPress: Pixel, CAPI, and Offline Conversions

    Meta Ads conversion tracking on WordPress works differently from Google Ads, and the difference matters for how you optimize your campaigns. This guide covers the full setup: the Facebook pixel for website events, the Conversions API for server-side reliability, and the offline conversion approach that tells Meta which leads actually became paying clients — not just which ones filled out your form.

    The pixel versus the Conversions API

    Meta offers two ways to track conversions: the browser-based pixel and the Conversions API (CAPI). They are not alternatives — they are complements, and running both is the right approach for a WordPress business.

    • The Facebook pixel is a JavaScript snippet that loads in the visitor’s browser and fires events as they navigate your site. It captures form submissions, thank-you page views, and button clicks. The limitation is that it depends on the browser: ad blockers suppress it, iOS 14+ privacy changes reduce its reach, and browser crashes or navigations that happen before the script fully executes cause missed events. On a well-implemented WordPress site with GTM, the pixel typically captures 60 to 80 percent of actual conversions.
    • The Conversions API sends event data directly from your server to Meta’s servers, bypassing the browser entirely. It does not get blocked by ad blockers or affected by browser privacy settings. CAPI does not replace the pixel — it supplements it by capturing the conversions the pixel misses. The combination of pixel plus CAPI, with deduplication enabled, consistently outperforms pixel-only tracking on both match rate and event volume.

    Running both with event deduplication (using a shared event ID) is the current Meta best practice and the setup that gives your campaigns the most accurate conversion signal.

    Step 1: Install the pixel and configure standard events

    The pixel installs via Google Tag Manager or a Meta-provided WordPress plugin. GTM gives you more control and is preferred for most setups:

    1. In Meta Events Manager, create a pixel and copy the base code.
    2. In GTM, create a Custom HTML tag with the pixel base code, firing on All Pages.
    3. Create a separate tag for the Lead event, firing on your thank-you page (the same trigger you use for Google Ads conversion tracking). The Lead event is the right standard event for contact form completions — it is more specific than PageView and is what Meta’s ad delivery algorithm optimizes toward when you run Lead Generation campaigns.
    4. Publish the GTM container and verify in Meta Events Manager’s Test Events tool by submitting a test form and confirming the Lead event fires.

    If you are running contact forms on WordPress with WPForms, Gravity Forms, or Contact Form 7, the thank-you page redirect approach (the same one recommended for Google Ads) is the most reliable trigger for the Lead event. Form submission JavaScript triggers vary in reliability across plugins; the redirect does not.

    Step 2: Add the Conversions API for server-side reliability

    The Conversions API requires sending event data to Meta’s API endpoint from your server. On WordPress, there are a few implementation paths:

    • The Meta Business Extension / WordPress plugin provides a built-in CAPI integration. It connects your WordPress site to Meta’s server and sends pixel events server-side automatically. This is the easiest path if you do not need deep customization — install, connect your Meta account, enable CAPI, and the plugin handles deduplication.
    • Custom server-side implementation via a webhook or server function gives you more control over which events send, what customer data is included, and how deduplication is handled. This is the right approach if you are capturing lead source data (UTMs, gclids) and want to pass that data alongside the conversion event for richer attribution.
    • GTM Server-Side container can route pixel events through a server-side GTM container before sending to Meta, providing some of the benefits of CAPI with a GTM-familiar interface. More infrastructure to maintain but good for organizations already using server-side GTM.

    Whichever path you choose, enable event deduplication by passing a consistent event_id that matches between your pixel and CAPI implementations. Without deduplication, Meta counts the same conversion twice — once from the browser and once from the server — inflating your reported conversion numbers.

    Step 3: Pass customer data for better match rates

    Meta matches your conversion events to Meta user accounts using customer data: email address, phone number, name, and location. The more data you pass, the higher the match rate — and match rate directly affects how many of your conversions Meta can attribute to your ads.

    On a contact form submission, you typically have the lead’s email address and phone number. Include these in your CAPI event payload, hashed with SHA-256 (Meta requires hashing for privacy compliance). The pixel can also pass this data client-side via the fbq('track', 'Lead', {em: hashedEmail}) call, though server-side via CAPI is more reliable because it does not depend on the user’s browser.

    Passing hashed email and phone consistently is the single highest-leverage improvement most WordPress businesses can make to their Meta conversion tracking match rates. Match rates of 40 to 60 percent are common without customer data; 70 to 90 percent are achievable with it.

    Step 4: Offline conversions — the step that actually optimizes toward revenue

    Website and CAPI conversion tracking tells Meta who submitted a form. Offline conversion tracking tells Meta who became a paying client. The difference is the same as with Google Ads: if your business closes 1 in 8 leads, Meta’s “optimize for conversions” bidding will try to get you more form fills, not more clients, unless you tell it which form fills converted.

    Meta’s offline conversions API accepts customer records from your closed deals — matched against the lead’s email, phone, or name — and attributes each won customer to the original ad click that generated the lead. Your campaigns can then optimize toward a Purchase or CustomEvent that represents a closed client, rather than a Lead event that represents a form submission.

    The implementation requires:

    • A way to track which leads become clients (a CRM, a spreadsheet with a “closed” field, or a lead management interface in your WordPress backend).
    • A process for uploading closed deals to Meta periodically — weekly manual uploads via Meta Events Manager, or automated via the offline conversions API when a deal is marked won.
    • Customer data from the original lead (email or phone) for Meta to match the offline event to the original ad interaction.

    Businesses that implement offline conversion feedback to Meta consistently report that their campaigns shift toward higher-quality leads over time, even at the same budget. The algorithm is optimizing toward a stronger signal.

    How this compares to Google Ads conversion tracking

    The workflow is similar: capture UTM parameters and source data at the point of form submission, track the lead through to a closed sale, and feed the won outcome back to the ad platform. The technical implementation differs (gclid for Google, fbclid or customer data matching for Meta), but the attribution strategy is the same. If you have already implemented Google Ads offline conversion tracking on WordPress, most of the infrastructure you built — UTM capture, lead management, closed-deal tracking — applies directly to Meta with relatively minor additions.

    For a detailed walkthrough of the Google Ads side of this, see Google Ads conversion tracking on WordPress. For the broader picture of how closed-loop attribution works across channels, closed-loop reporting on WordPress covers the full workflow.

    How Sales Provenance fits

    Sales Provenance handles the data infrastructure that both Google Ads and Meta Ads offline conversion tracking require: capturing source data (UTMs, fbclid, gclid) at form submission, storing it with each lead in your WordPress database, providing a lead management interface to track which leads close, and syncing the won outcomes back to both platforms as offline conversions. The pixel and CAPI setup is separate (Meta-side configuration), but the lead-to-client matching and offline conversion sync is what SP is built to handle.

    If you are running both Google and Meta ads and want a single system that closes the attribution loop for both, revenue attribution on WordPress explains how the pieces fit together.

  • How to Set Up Google Ads Conversion Tracking on WordPress (The Right Way)

    Setting up Google Ads conversion tracking on WordPress sounds straightforward until you realize that “conversion tracking” actually refers to two different things — and most WordPress businesses are only doing one of them. This guide covers both: the website conversion tracking that most people set up, and the offline conversion tracking that actually tells Google which clicks turned into paying clients. The second one is harder to implement, but it is where most of the optimization value lives.

    Two ways to track Google Ads conversions on WordPress

    The distinction matters because Google uses conversion data to optimize your campaigns. What you feed it determines what it optimizes toward.

    • Website conversions track actions that happen on your site: form submissions, thank-you page visits, button clicks, phone call clicks. These are easy to set up and give Google a signal for every lead that comes in. The problem is that leads are not revenue. If 100 people fill out your form and 8 become paying clients, Google’s “maximize conversions” bidding does not know which 8 — it just tries to get you more form fills, regardless of quality.
    • Offline conversions close the loop. You capture the Google click ID (gclid) when the lead arrives, match it to the customer after they close, and send that won outcome back to Google as a conversion. Now Google knows: these specific clicks, these specific keywords, this specific audience segment produced paying clients. Its bidding algorithm can optimize toward that signal instead of toward raw lead volume.

    Most WordPress businesses do the first. The ones that do the second get meaningfully better results from the same ad spend.

    Step 1: Set up website conversion tracking

    Start here if you have not already. You need Google Tag Manager installed on your WordPress site and a Google Ads account linked to it.

    The most reliable method for form submission tracking on WordPress is the thank-you page approach:

    1. Create a dedicated thank-you page (e.g., /thank-you/) that contact form submitters are redirected to after submitting.
    2. In Google Tag Manager, create a trigger: Page View firing on URL contains /thank-you/.
    3. Create a tag: Google Ads Conversion Tracking, using your conversion action ID and label from Google Ads. Set it to fire on the thank-you page trigger.
    4. Publish the GTM container and verify in GTM’s Preview mode by submitting a test form and confirming the tag fires.

    The alternative — using form submission events directly — requires custom dataLayer pushes that vary by form plugin (Contact Form 7, WPForms, Gravity Forms each work differently). The thank-you page redirect is more reliable and plugin-agnostic.

    For phone calls, use Google’s forwarding number in your Google Ads call extension. This gives you call tracking without any tag setup, though it only captures clicks from your ads, not organic or direct calls.

    Step 2: Capture the gclid at form submission

    This is the step that makes offline conversion tracking possible. When someone clicks a Google ad and lands on your site, Google appends a gclid parameter to the URL. You need to capture that parameter and store it alongside the lead’s form submission data.

    The implementation has three parts:

    • Read the gclid from the URL on page load. A small JavaScript snippet reads gclid from the URL query string and stores it in a first-party cookie with a 90-day expiration. This handles the case where someone clicks your ad, bounces, and returns days later — the cookie persists across sessions.
    • Add a hidden field to your contact form. A hidden form field named gclid reads from the cookie on page load and populates automatically. When the form submits, the gclid travels with the lead data to wherever your form stores submissions.
    • Store the gclid with the lead record. Your form plugin or CRM needs to save the gclid value alongside the lead’s name, email, phone, and other contact fields. If you are not storing it, you cannot match it to a sale later.

    The same approach applies to UTM parameters (utm_source, utm_campaign, utm_term): capture them from the URL on landing, store in cookies, pass via hidden fields, save with the lead. This gives you full source attribution even when Google Ads is not involved.

    Step 3: Match leads to clients and upload offline conversions

    When a lead becomes a paying client, you match the gclid stored on their lead record to a Google Ads offline conversion upload. Google matches that gclid to the original click and counts it as a conversion — a won customer, not just a form fill.

    There are two ways to send offline conversions to Google:

    • Manual CSV upload — in Google Ads, go to Tools > Conversions > Upload. Prepare a CSV with three columns: Google Click ID, Conversion Name, Conversion Time (and optionally Conversion Value). Upload it. Google processes the file and attributes the conversions to the original clicks. This works for businesses that close a manageable number of deals per month and are willing to run the upload on a regular schedule (weekly is common).
    • API upload (automated) — using Google’s Ads API or a platform that integrates with it, you can send offline conversions automatically as soon as a deal is marked won in your system. This eliminates the manual step and keeps Google’s data current without a weekly reminder. It requires either custom development or a tool that handles the API connection for you.

    Either way, the conversion data feeds Google’s smart bidding algorithms: Target CPA and Target ROAS bidding can now optimize toward clients, not leads. The improvement in campaign efficiency is typically significant — you are giving the algorithm a fundamentally better signal to work with.

    The WordPress-specific challenge

    WordPress does not have native lead-to-sale tracking. It accepts form submissions, but it does not natively store UTM parameters or gclid values, does not have a built-in CRM to mark deals won, and does not connect to Google Ads for offline conversion uploads. Each of those steps requires either custom development, a plugin, or a third-party integration.

    The most common failure mode is partial implementation: a business sets up form tracking in GTM, captures some UTM parameters, but never builds the gclid capture-and-store step or the offline conversion upload. The result is website conversion data flowing to Google, but no closed-loop signal. Google optimizes toward form fills and the business wonders why lead quality is inconsistent.

    The full stack — gclid capture, UTM storage, lead records with source data, closed-deal matching, offline conversion upload — requires deliberate implementation. Once it is in place, it runs automatically and compounds over time as Google’s algorithm accumulates more closed-customer signal.

    How Sales Provenance handles this on WordPress

    Sales Provenance is built to implement this entire workflow natively on WordPress, without custom development. It installs as a WordPress plugin, captures gclid and UTM parameters automatically on every landing page visit, stores them with every form submission, provides a lead management interface where you mark deals won, and handles the offline conversion upload to Google Ads automatically.

    The result is the full closed-loop attribution stack — from ad click through to closed client and back to Google — running inside your WordPress site without a separate CRM, a data warehouse, or a developer on retainer. For a more detailed look at how the offline conversion piece works, see offline conversion tracking on WordPress. For the broader picture of what closed-loop attribution looks like in practice, closed-loop reporting walks through the full workflow.

    Summary: the implementation checklist

    • Install Google Tag Manager on WordPress
    • Create thank-you page + GTM trigger for website conversion tracking
    • Add gclid capture script (reads URL, stores in first-party cookie)
    • Add hidden gclid field to all contact forms
    • Confirm gclid is stored with every lead record
    • Do the same for UTM parameters (source, campaign, term, content)
    • Establish process for marking leads as won clients
    • Upload offline conversions to Google Ads (manually weekly or via API)

    Each step builds on the previous one. You can stop at website conversions and have better-than-nothing tracking. But the full stack — with offline conversion upload — is where the optimization value actually lives.

  • A Dreamdata Alternative for WordPress: Attribution Without the Data Pipeline

    If you are evaluating Dreamdata alternatives, the first question worth asking is whether Dreamdata was designed for your situation in the first place. Dreamdata is a sophisticated B2B revenue attribution platform built for companies with CRM pipelines, multi-touch account journeys, and revenue operations teams who need to map marketing influence across long enterprise sales cycles. It is genuinely excellent at that job. But if you are running a WordPress business where leads come in through forms and phone calls and close in a matter of days or weeks — not a six-month enterprise pipeline — you may be looking for a tool that solves a different problem entirely.

    What Dreamdata is built for

    Dreamdata connects marketing touchpoints to revenue by pulling data from your CRM, ad platforms, and marketing tools, then applying multi-touch attribution models to show how marketing influenced pipeline and closed deals. It is purpose-built for B2B SaaS and enterprise sales — companies where a single deal involves multiple contacts across multiple accounts, where the sales cycle runs months, and where the revenue operations function has the technical resources to manage a full data pipeline. The platform requires a CRM as the anchor (HubSpot or Salesforce), substantial integration work to wire up your stack, and ongoing maintenance by someone who understands data modeling.

    Why WordPress businesses need a different approach

    For most WordPress businesses — agencies, service companies, consultancies, local businesses — this infrastructure is not just overkill, it is the wrong architecture. The attribution problem for a WordPress business is not “which touches influenced this enterprise account over six months.” It is simpler and more immediate: which ad, which keyword, which landing page produced this lead, and did that lead turn into a paying client?

    A WordPress business with a working attribution setup can answer that question without a CRM integration, a data warehouse, or a revenue operations team. What it needs is a system that captures the source at the moment the lead arrives, follows the lead through to the sale, and feeds the won outcomes back to the ad platforms — all living in WordPress, where your site already runs.

    What to look for in a Dreamdata alternative

    • WordPress-native tracking, not a separate data layer. If the attribution tool requires exporting data to a warehouse or building a separate pipeline outside WordPress, you are adding complexity that a WordPress-first business does not need. The data should live where your site lives.
    • First-party data at the point of capture. The source — channel, campaign, keyword, click ID — should be stamped onto the lead itself when the form is submitted or the call is made. That is what makes the attribution accurate and durable as third-party cookies disappear.
    • No CRM dependency. Dreamdata requires a CRM as the connective tissue. If you do not have HubSpot or Salesforce in your stack — or do not want to be locked into one — an alternative that attributes directly without a CRM is a better fit.
    • Offline conversion sync back to Google and Meta. The most valuable output of an attribution system is not a dashboard — it is feeding your won customers back to the ad platforms so they can optimize toward revenue rather than leads. This is the step that actually improves your campaigns.
    • Flat, predictable pricing. Dreamdata’s pricing scales with your data volume and feature tier. For a WordPress business with a modest lead volume, a flat per-site price is more predictable and usually far more affordable.

    Where Sales Provenance fits

    Sales Provenance is built for the WordPress attribution use case — not the enterprise B2B pipeline use case. It installs directly on WordPress, captures every lead with its source as first-party data, follows each lead through to the closed sale inside your WordPress dashboard, and syncs the won outcomes back to Google and Meta as offline conversions. No CRM required. No data warehouse. No revenue operations team.

    If you are a WordPress business that wants to know which marketing produces paying clients — and wants your ad platforms to optimize toward that outcome rather than toward raw lead volume — that is exactly what Sales Provenance is built to do. It is a narrower tool than Dreamdata, intentionally: it solves the WordPress attribution problem well, without the setup cost and infrastructure that Dreamdata requires for a different use case.

    For more on how this works in practice, see closed-loop reporting on WordPress and offline conversion tracking.

    The bottom line

    Dreamdata is the right tool for B2B SaaS companies with CRM pipelines, long sales cycles, and the technical resources to manage a multi-tool data stack. If that is your situation, it is hard to beat. But if you are running a WordPress business and you need to know which marketing produces clients — not which touches influenced an enterprise account over six months — the alternative you are looking for is a WordPress-native closed-loop attribution tool, not a lighter version of Dreamdata.

    That is the job Sales Provenance is designed to do. You can learn more at revenue attribution for WordPress or start with the lead source tracking overview.

  • Marketing Attribution for Service Businesses: From Ad Click to Closed Job

    Marketing attribution works differently for service businesses than it does for e-commerce or SaaS companies. You are not tracking digital checkout events or subscription signups. You are tracking phone calls, contact form submissions, and online booking requests — leads that only become revenue after a conversation, a site visit, a proposal, and a signed agreement. That gap between “we got a lead” and “we closed a job” is where most service business marketing data falls apart.

    This guide covers how attribution actually works for contractors, home service companies, medical practices, law firms, and other service businesses where the conversion happens offline — and what you need in place to connect your marketing spend to actual closed revenue.

    The Attribution Gap Most Service Businesses Have

    Most service businesses measure marketing by lead volume. How many calls did we get from Google Ads this month? How many form fills from Facebook? Those are real metrics, but they answer the wrong question. The question that matters for marketing investment decisions is: which channels, campaigns, and keywords are generating customers who actually paid us money?

    Lead volume and revenue are not the same. A campaign that generates 40 calls might close 6 of them. Another campaign that generates 15 calls might close 11. If you optimize for call volume, you scale the first campaign. If you optimize for revenue, you scale the second. Without closing-the-loop attribution, you cannot tell the difference — so most service businesses scale the wrong thing.

    The attribution gap has a specific shape for service businesses: you have digital data on the front end (clicks, sessions, leads) and real-world data on the back end (phone conversations, appointments, signed contracts, paid invoices), with no system connecting the two. Bridging that gap is the core problem attribution solves.

    What You Need to Track Attribution for a Service Business

    Service business attribution requires three things that most analytics setups do not include by default:

    • Source capture at the moment of lead creation — when a visitor calls or fills out a form, the system needs to record which campaign, keyword, ad, and traffic source generated that specific lead. This requires more than just Google Analytics sessions data; it requires attaching source information to the individual lead record. Dynamic number insertion (for calls) and UTM parameter capture on form submissions are the mechanics that make this work.
    • Outcome recording after the lead closes — when a job closes, that outcome needs to be recorded somewhere and connected back to the original lead source. This can happen in a CRM, a job management platform, or a simple outcome field on a WordPress-based lead record. The key is that the outcome — won, lost, revenue amount — gets attached to the same record that holds the source data.
    • Offline conversion sync back to ad platforms — once you have a closed job tied to a lead source, that outcome needs to flow back to Google Ads and Meta as an offline conversion event. This is what allows your ad platforms to optimize for revenue rather than lead volume. Without this step, Google Ads is optimizing for leads based on the conversion signals you send it — and if you only send call or form events, it optimizes for calls and forms, not customers.

    Phone Call Attribution

    Phone calls are the primary lead type for most service businesses, and they are also the hardest to attribute accurately. A visitor comes from a Google Ad, spends time on your site, and calls the number on the page. Without call tracking, that call is invisible to your marketing data — it happened, but you do not know which campaign or keyword sent that caller.

    • Dynamic number insertion (DNI) is the standard solution. Your website displays different phone numbers to different visitors based on their traffic source. A visitor from Google Ads sees one number; a visitor from organic search sees another; a direct visitor sees a third. When they call, the number tells you the source. Call tracking platforms replace the visible phone number with a session-specific tracking number, routing the call while logging the source.
    • Keyword-level attribution goes further: with DNI and a connected Google Ads account, each call can be traced back to the specific keyword and ad that generated it, not just the campaign. For high-CPC service categories — roofing, legal, medical — knowing which keywords generate callers who actually close is the difference between a profitable campaign and an expensive lead-generation exercise.
    • Connecting the call to the outcome is the part most call tracking tools skip. Recording that the call happened (and which source sent it) is only half the job. You also need a mechanism to record whether that caller became a customer and what they paid. That outcome data is what closes the loop to revenue attribution.

    Form Submission Attribution

    Form submissions are easier to attribute than phone calls because they happen entirely in the browser. A visitor from a specific campaign fills out a contact form; the form submission can capture and store the UTM parameters from their session, the landing page they arrived on, the referrer, and any click IDs from Google or Meta.

    • Store UTM parameters on the lead record — when a form is submitted, the source data (utm_source, utm_medium, utm_campaign, utm_content, utm_term, plus Google click ID and Meta click ID if present) should be stored alongside the contact information. Most default contact forms do not do this. A properly configured attribution setup adds hidden fields to every form that capture and submit this data automatically.
    • Persist source data across sessions with first-party cookies — visitors rarely convert on the first visit. A homeowner might click a Google Ad on Monday, leave, and come back organically on Wednesday to fill out the form. First-party cookies that persist the original source data across sessions allow you to attribute that conversion to the ad that first introduced the visitor, not the organic visit where they finally converted. This is first-touch attribution, and it gives a more accurate picture of which campaigns are initiating customer relationships.
    • Connect form leads to closed outcomes — same requirement as calls: the form submission record needs to eventually carry the outcome. Whether the lead was won or lost, and what the closed job was worth, needs to attach to the same record so you can calculate revenue by source.

    Offline Conversion Tracking: Closing the Loop to Ad Platform Optimization

    Once you have closed jobs connected to their original marketing source, the most powerful thing you can do with that data is send it back to Google Ads and Meta as offline conversion events. This step transforms your campaigns from lead-optimization machines into revenue-optimization machines.

    • Google Ads offline conversions — Google provides an offline conversion import API that accepts closed customer events with the Google click ID (gclid) attached. When a lead that came from Google Ads closes into a paying customer, you send Google the gclid from that lead plus the revenue value and conversion name. Google’s algorithm uses these events to adjust bidding toward the audiences and keywords that generate actual customers, not just clicks.
    • Meta offline conversions — Meta’s Conversions API accepts the same type of event: a closed outcome, hashed contact information, and the revenue value. Meta matches these events to users in its system and uses them to train its ad optimization toward people similar to your actual customers. For service businesses running lead gen campaigns on Facebook and Instagram, this dramatically improves campaign performance over time.
    • Revenue-weighted signals matter more than binary conversion signals — sending Google a signal that says “this keyword generated a $5,000 roofing job” is fundamentally different from sending it a signal that says “this keyword generated a call.” The ad platform has the same algorithmic framework; you are just feeding it better data. Better data produces smarter bidding, which produces better return on ad spend.

    A Practical Attribution Setup for Service Businesses on WordPress

    For service businesses running their website on WordPress, the attribution setup can be implemented without enterprise-level software or a dedicated data engineering team. The requirements are:

    • A WordPress plugin that captures UTM parameters and click IDs from every session and stores them as first-party cookies, then attaches that source data to every form submission as hidden fields
    • Call tracking with dynamic number insertion that connects each call to its source and allows you to record the call outcome
    • A simple outcome recording step — when a lead closes, mark it won and enter the revenue amount — that feeds back into your attribution data
    • An offline conversion sync mechanism that takes those closed outcomes and sends them to Google Ads and Meta via their respective APIs

    This is the architecture Sales Provenance is built around: source capture, lead-to-outcome connection, and offline conversion sync, all within WordPress. The goal is a single report that shows revenue by channel, campaign, and keyword — the same data a direct-to-consumer e-commerce brand has from day one, adapted for the lead-to-close journey of a service business.

    What Better Attribution Changes for a Service Business

    The most immediate change is smarter ad spend allocation. When you can see that Google Ads generated 30 leads but 18 of your 22 closed jobs this month, while Facebook generated 40 leads but only 4 closed jobs, the budget reallocation is obvious. That reallocation is worth far more than any incremental optimization of individual ads or keywords.

    The second change is campaign-level optimization. Within Google Ads, knowing which specific campaigns, ad groups, and keywords generate closed customers (not just leads) lets you shift budget toward the winners and cut the underperformers. In high-CPC categories where clicks cost $20 to $100 each, the difference between a keyword that closes at 8 percent and one that closes at 2 percent is enormous in dollar terms.

    The third change is the conversation with clients or internal stakeholders. Instead of reporting “we generated 47 leads this month,” you can report “marketing generated $84,000 in closed revenue this month, at a return of 6.2x on ad spend.” That conversation lands differently and justifies the marketing budget in language that business owners and executives understand.

    Getting Started

    If your current setup stops at lead volume — you know which campaigns sent you calls and forms but you have no visibility into which ones generated closed revenue — the first step is putting the infrastructure in place to capture outcomes and connect them back to sources. On WordPress, that is a solved problem. You can learn more about how Sales Provenance handles this at salesprovenance.com, or read more about how offline conversion tracking works on WordPress before deciding whether it fits your workflow.

    For the broader context on connecting marketing spend to revenue, the revenue attribution overview covers how the pieces fit together for a typical service business setup.

  • Ruler Analytics Alternative: Revenue Attribution Without the CRM Dependency

    Ruler Analytics does something genuinely useful: it connects marketing touchpoints to CRM data and surfaces revenue by channel. If you have been running paid search campaigns and reporting on lead volume, Ruler gives you a path toward reporting on revenue instead. That matters.

    The question worth asking before committing to Ruler is whether you need a full external attribution platform with CRM sync to close that loop, or whether the problem is simpler than that — particularly if your site runs on WordPress and your primary use case is connecting Google Ads and Meta spend to actual closed customers.

    This is a fair comparison. We built Sales Provenance after dealing with the same problem running marketing for service businesses. Here is where the tools differ.

    What Ruler Analytics Does

    Ruler is a revenue attribution platform designed for B2B and lead generation businesses. Its core workflow:

    • Multi-touch tracking — Ruler’s JavaScript snippet tracks every visitor touchpoint across sessions, from first click to form fill or call.
    • Lead capture and source attribution — when a visitor converts (form, call, chat), Ruler stamps the lead with its full marketing history.
    • CRM sync — Ruler connects to Salesforce, HubSpot, and other CRMs. When a lead closes in the CRM, Ruler pulls the revenue data back and attributes it to the originating campaign.
    • Channel reporting — you get revenue-by-channel reports showing which campaigns are generating closed revenue, not just leads.

    This is a real attribution workflow, and for organizations that have an established CRM and want to surface revenue data without rebuilding their tech stack, Ruler makes the connection.

    The CRM Dependency

    Ruler’s revenue loop closes through the CRM. The workflow is: Ruler captures the lead source, the CRM records the sale, Ruler pulls the closed deal back from the CRM and attributes it to the campaign.

    That architecture works well for teams with a mature CRM setup — a salesforce with reps logging every deal, a HubSpot instance where every closed customer gets marked won. For those teams, Ruler adds a layer that was missing: the marketing-to-revenue connection.

    For agencies managing paid search for service businesses, the CRM picture is often messier. Many service businesses do not use Salesforce or HubSpot. They use a job management platform, a spreadsheet, or nothing formal at all. Getting Ruler’s revenue loop to close requires getting the CRM connected and keeping deal data current — which adds implementation complexity and depends on client adoption.

    Sales Provenance approaches this differently. The outcome recording is in WordPress itself. When a lead closes, the outcome gets recorded in the WordPress admin — the same place everything else is managed. There is no CRM to connect, no deal sync to maintain. The revenue data comes from the people running the business, not from a separate software layer.

    Pricing Structure

    Ruler’s pricing is tiered by company size and tracked calls/conversions. Plans scale with usage, and agency plans that cover multiple clients add another layer of cost. For agencies managing a portfolio of clients, each needing their own attribution setup, the cost adds up quickly.

    Sales Provenance charges a flat monthly rate per WordPress site. One price, regardless of lead volume, call volume, or number of tracked conversions. An agency adding a new client site adds one flat fee — no usage overages, no per-call charges.

    For agencies billing on retainer across multiple client accounts, the predictable-per-site model is easier to budget and easier to pass through in retainer pricing.

    Platform Dependency and Data Ownership

    Ruler operates as an external platform. Your attribution data — every touchpoint, every lead source record, your revenue attribution history — lives in Ruler’s database. If you stop using Ruler, you lose access to that data.

    Sales Provenance is a WordPress plugin. Attribution data lives in your WordPress database. Lead history, source records, and outcome data are part of the site itself, not a third-party platform you rent access to. For agencies that want to give clients direct access to their own data, or for businesses that have built their operations around WordPress, data portability matters.

    The WordPress Fit

    Ruler works by inserting a JavaScript snippet on any website, regardless of platform. That flexibility is real — it means Ruler works across your whole portfolio whether clients are on WordPress, Webflow, Squarespace, or a custom stack.

    Sales Provenance is built specifically for WordPress. If your entire book of business is on WordPress (or your own site is), that specificity is an advantage: the plugin installs like any other WordPress plugin, the attribution data is in the database alongside everything else, and there is no external platform to configure and maintain. If you serve clients across multiple platforms, Sales Provenance only covers the WordPress ones.

    Where Ruler Still Wins

    To be direct: if you have clients with established CRM setups — particularly Salesforce or HubSpot — Ruler’s bidirectional CRM sync is a genuinely powerful capability. Ruler can pull closed revenue from a mature CRM and surface it in campaign reporting in a way that is hard to replicate otherwise.

    Ruler also wins for multi-platform portfolios. If your agency manages sites across WordPress, Webflow, and custom stacks, Ruler’s CRM-centric architecture gives you one attribution platform across the whole portfolio. Sales Provenance only covers the WordPress accounts.

    Who Each Tool Fits

    Ruler Analytics fits well when you:

    • Have clients with mature CRM setups (Salesforce, HubSpot) where deal data is reliably logged
    • Manage a multi-platform portfolio that includes non-WordPress sites
    • Need multi-touch attribution models (first touch, last touch, linear) as a reporting feature
    • Want a standalone external dashboard that integrates into existing reporting workflows

    Sales Provenance fits better when you:

    • Work primarily or exclusively on WordPress sites
    • Need attribution data in the client’s own database, not a third-party platform
    • Want to close the revenue loop without requiring a CRM — outcome recording is in WordPress
    • Manage Google Ads or Meta campaigns and want them optimizing for actual revenue via offline conversion sync
    • Want flat-rate per-site pricing that is predictable across a growing client portfolio

    The Attribution Gap Either Tool Addresses

    Both Ruler and Sales Provenance are trying to solve the same core problem: the gap between “this campaign generated leads” and “this campaign generated revenue.” If you are currently reporting on lead volume and you want to move to revenue-based reporting, either tool gets you closer than standard analytics alone.

    The question is which architecture fits your stack. If your clients are on WordPress and do not have an established CRM, Sales Provenance gets you to revenue attribution faster with less implementation complexity. If you have a CRM-dependent workflow and a multi-platform portfolio, Ruler’s architecture is likely the better fit.

    You can learn more about how Sales Provenance handles revenue attribution at salesprovenance.com, or read the revenue attribution for WordPress overview if you want more context on how the pieces connect.

  • WhatConverts Alternative: WordPress Attribution Without the Per-Lead Pricing

    WhatConverts is a solid tool. If you are tracking inbound calls and forms and want a clean dashboard with solid call recording and lead review features, it does that well. But a few things about the WhatConverts model do not fit every agency or service business — particularly around pricing, how it handles WordPress, and whether it closes the loop to actual revenue instead of leads.

    This is a fair comparison. We built Sales Provenance because we had the same frustrations running a marketing agency on WordPress. Here is where the products differ.

    How WhatConverts Charges

    WhatConverts uses per-lead pricing on its higher tiers. You pay for each lead that flows through the platform. That model makes sense if you have a small, predictable lead volume — but service businesses that run Google Ads aggressively can accumulate hundreds or thousands of leads per month across a client portfolio. At per-lead rates, the platform cost scales with your success.

    Sales Provenance charges a flat monthly rate per WordPress site. One price. No per-lead fees. If a campaign generates 50 leads or 500, the platform cost stays the same.

    For agencies managing multiple client accounts, or service businesses with high call volume in peak seasons, the flat model is significantly more predictable.

    The WordPress Integration Difference

    WhatConverts works as an external platform — you install a JavaScript snippet, leads flow into WhatConverts, and you review them in the WhatConverts dashboard. Your WordPress site and WhatConverts operate as separate systems.

    Sales Provenance installs as a WordPress plugin. The attribution data lives in your WordPress database. Lead history, source data, and conversion records are part of your site — not siloed in a third-party platform you would lose access to if you stopped paying. This matters for agencies who want to give clients direct access to their own data, and for businesses that have invested in WordPress as their operating platform.

    Closing the Loop to Revenue

    WhatConverts tracks leads — calls, forms, chat conversations. It captures the source of each lead, records calls, and lets you mark leads as qualified or unqualified. That is genuinely useful.

    Where it stops: WhatConverts does not connect leads to closed revenue. You know you received 40 calls from Google Ads in October. You do not know which of those calls became a customer, what they paid, or which campaign generated the most actual revenue — not just the most leads.

    Sales Provenance is built around that gap. When a lead closes — a move-in, a signed contract, a paid invoice — you record the outcome in WordPress. That outcome pushes back to Google Ads and Meta as an offline conversion event, so your campaigns optimize for actual revenue, not calls and form fills. Your attribution report shows revenue by channel, not lead count.

    For service businesses where the ratio of leads to closed customers is not one-to-one (it never is), optimizing for leads produces a different result than optimizing for revenue. Sales Provenance is built for the latter.

    Call Tracking: Where WhatConverts Wins

    To be direct: WhatConverts has stronger call recording and call review features than Sales Provenance does today. If call recording, call transcription, and call review workflows are your primary need, WhatConverts is likely the better fit.

    Sales Provenance tracks call sources (which ad, campaign, and keyword generated each call) and connects calls to outcomes. It does not currently offer call recording or transcription within the platform. If your workflow depends on reviewing call recordings to score lead quality, that is a real difference.

    What WhatConverts Does Not Do for WordPress SEO

    WhatConverts is agnostic to your WordPress content — it tracks what happens at the lead stage, not how visitors from different content pages convert over time. Sales Provenance tracks attribution all the way back to the first touch, including organic search pages, so you can see which blog posts and service pages generate leads that actually close — not just which ones generate traffic. That matters for SEO investment decisions.

    Who Each Tool Fits

    WhatConverts fits well when you:

    • Need call recording and call review as a core workflow
    • Are tracking leads across multiple platforms (not exclusively WordPress)
    • Have a predictable, manageable lead volume where per-lead pricing makes sense
    • Want a standalone external dashboard separate from your CMS

    Sales Provenance fits better when you:

    • Run a WordPress site and want attribution data in your own database
    • Need to close the loop from lead source all the way to closed revenue
    • Manage Google Ads or Meta campaigns and want them optimizing for actual outcomes
    • Want flat-rate pricing that scales with site count, not lead volume
    • Work with clients who care about revenue-per-channel reporting, not just lead counts

    A Note on Switching Costs

    WhatConverts accounts accumulate lead history that does not export cleanly. If you have been on WhatConverts for a year, that lead history stays in WhatConverts when you switch. Sales Provenance starts building attribution history from the moment you install the plugin. Plan for a transition period where you run both in parallel if historical lead data matters for your reporting.

    If you are evaluating WhatConverts alternatives and your primary goal is closing the attribution loop from ad click to closed revenue — on WordPress — Sales Provenance was built specifically for that. You can learn more about how it works at salesprovenance.com, or read about how we approach revenue attribution if you want more context before evaluating.

  • WordPress UTM Tracking: Why Your Setup Has a Gap (and What to Fill It)

    If you run paid ads on Google or Meta, you are already using UTM parameters. You put them on every ad link, your analytics show you which campaigns drove traffic, and the numbers look good.

    The problem shows up two weeks after a campaign ends, when you look at actual sales and try to figure out which campaign drove them. Your analytics shows sessions and leads. Your CRM shows closed deals. The two lists do not match up.

    This is the UTM tracking gap: the click data and the revenue data live in separate systems, and nothing connects them. WordPress UTM tracking solves the first half of the problem (capturing UTMs from clicks into leads). Closing the full loop — all the way to the sale — requires one more step that most WordPress setups skip.

    How UTM Tracking Works (and Where It Breaks)

    When a visitor clicks your Google Ad, the URL they land on includes UTM parameters like ?utm_source=google&utm_medium=cpc&utm_campaign=spring-campaign. Those parameters tell you where the visitor came from.

    A basic WordPress setup reads those parameters from the URL and stores them in the visitor’s browser session. When the visitor fills out a form, the UTM values get submitted along with their name and email. Your CRM or email platform records the lead source.

    This works — until it does not. Common failure points:

    • The visitor leaves and comes back. Most session-based UTM capture only survives a single browsing session. If someone clicks your ad on Monday and books a call on Thursday, the UTM is gone. First-touch or last-touch attribution is wrong.
    • Cross-device visits. Someone sees your ad on their phone, then books a call on their laptop. The UTM never makes it to the form submission.
    • The form is not your form. If you use Calendly, Typeform, JotForm, or any embedded third-party form, UTMs captured on your site often do not pass through to the submission record.
    • Phone calls. Most UTM tracking only works for form fills. A visitor who clicks your ad and calls you instead of filling a form is invisible in UTM reports — even though the ad drove the lead.

    First-Party Cookie Storage: The Fix for Multi-Session Visits

    The standard fix for losing UTMs across sessions is to write them to a first-party cookie on the visitor’s first touch, then read that cookie at form submission time even if the visit happened days ago.

    This is better than session storage. Cookies persist across sessions (you control how long — 30, 60, 90 days is common). If the visitor returns from a different source, you can decide whether to overwrite (last-touch model) or keep the original value (first-touch model).

    Most UTM tracking plugins for WordPress use this approach. The catch: even with cookies capturing UTMs correctly on your site, you still face the phone-call gap and the disconnection from actual revenue.

    The Step Most WordPress Sites Skip: Connecting UTMs to the Sale

    Let us say your UTM tracking is working. A visitor clicks a Google ad, fills out your contact form, and the lead lands in your CRM with the correct UTM values. Now what?

    If your sales cycle is longer than a day — most service businesses, most B2B — a significant amount of time passes between that lead submission and a closed deal. During that time, a salesperson works the lead, sends proposals, maybe has three calls. Eventually the deal closes, or it does not.

    Your Google Ads account records a conversion when the form was filled. It does not know whether the deal closed. When you look at campaign performance, you see cost-per-lead, not cost-per-customer. If 40% of your leads from one campaign close and 10% from another do, you are optimizing for the wrong signal.

    Closing this loop requires pushing a conversion signal back to Google or Meta when the deal actually closes — what Google calls an offline conversion import. The UTM you captured at lead submission is what lets you match the closed deal back to the original campaign.

    Phone Calls: The UTM Gap Nobody Talks About

    For any business that gets a meaningful portion of leads by phone, UTM tracking is incomplete by default. A visitor clicks your Google ad, lands on your site, and calls the number they see. There is no form fill, no UTM capture. Google Ads may record a call conversion if you are using call extensions, but the lead never hits your CRM with attribution data.

    The fix is call tracking with dynamic number insertion (DNI). A tracking system swaps the phone number displayed on your site with a unique tracking number based on how the visitor arrived. When they call, the call is matched to the UTM source and the call record is logged with that attribution data. The lead enters your pipeline with a source, just like a form fill.

    This is what a complete WordPress UTM tracking setup looks like: first-party cookies for multi-session form fills, DNI for phone calls, and offline conversion imports when deals close. The result is a report that shows you which campaigns drove revenue, not just which campaigns drove activity.

    What to Look For in a WordPress UTM Tracking Setup

    Before choosing a tool or building a setup, confirm it handles these five things:

    1. First-party cookie storage with a configurable persistence window (30+ days)
    2. UTM passthrough to form submissions — including third-party embeds if you use them
    3. Call tracking with DNI so phone leads carry the same attribution as form leads
    4. CRM logging — UTM values stored on the contact or lead record, not just in analytics
    5. Closed-loop export — a way to push a conversion signal back to Google or Meta when a deal closes, using the GCLID or FBCLID captured at the original click

    Most UTM plugins handle item 1 and sometimes item 2. Items 3 through 5 are where the standard WordPress approach falls short. They require either building a custom integration or using a platform that was designed for the full loop from the start — like Sales Provenance, which was built specifically for service businesses running paid traffic on WordPress who need to connect clicks to closed revenue.

    If you are currently looking at UTM reports and working backwards from sessions to guess which campaigns are producing revenue, the gap is fixable. The technical setup is not complex — it just has to cover all five layers, not just the first two.

  • WordPress UTM Tracking: Why Your Setup Has a Gap (and What to Fill It)

    If you run paid ads on Google or Meta, you are already using UTM parameters. You put them on every ad link, your analytics show you which campaigns drove traffic, and the numbers look good.

    The problem shows up two weeks after a campaign ends, when you look at actual sales and try to figure out which campaign drove them. Your analytics shows sessions and leads. Your CRM shows closed deals. The two lists do not match up.

    This is the UTM tracking gap: the click data and the revenue data live in separate systems, and nothing connects them. WordPress UTM tracking solves the first half of the problem (capturing UTMs from clicks into leads). Closing the full loop — all the way to the sale — requires one more step that most WordPress setups skip.

    How UTM Tracking Works (and Where It Breaks)

    When a visitor clicks your Google Ad, the URL they land on includes UTM parameters like ?utm_source=google&utm_medium=cpc&utm_campaign=spring-campaign. Those parameters tell you where the visitor came from.

    A basic WordPress setup reads those parameters from the URL and stores them in the visitor’s browser session. When the visitor fills out a form, the UTM values get submitted along with their name and email. Your CRM or email platform records the lead source.

    This works — until it does not. Common failure points:

    • The visitor leaves and comes back. Most session-based UTM capture only survives a single browsing session. If someone clicks your ad on Monday and books a call on Thursday, the UTM is gone. First-touch or last-touch attribution is wrong.
    • Cross-device visits. Someone sees your ad on their phone, then books a call on their laptop. The UTM never makes it to the form submission.
    • The form is not your form. If you use Calendly, Typeform, JotForm, or any embedded third-party form, UTMs captured on your site often do not pass through to the submission record.
    • Phone calls. Most UTM tracking only works for form fills. A visitor who clicks your ad and calls you instead of filling a form is invisible in UTM reports — even though the ad drove the lead.

    First-Party Cookie Storage: The Fix for Multi-Session Visits

    The standard fix for losing UTMs across sessions is to write them to a first-party cookie on the visitor’s first touch, then read that cookie at form submission time even if the visit happened days ago.

    This is better than session storage. Cookies persist across sessions (you control how long — 30, 60, 90 days is common). If the visitor returns from a different source, you can decide whether to overwrite (last-touch model) or keep the original value (first-touch model).

    Most UTM tracking plugins for WordPress use this approach. The catch: even with cookies capturing UTMs correctly on your site, you still face the phone-call gap and the disconnection from actual revenue.

    The Step Most WordPress Sites Skip: Connecting UTMs to the Sale

    Let us say your UTM tracking is working. A visitor clicks a Google ad, fills out your contact form, and the lead lands in your CRM with the correct UTM values. Now what?

    If your sales cycle is longer than a day — most service businesses, most B2B — a significant amount of time passes between that lead submission and a closed deal. During that time, a salesperson works the lead, sends proposals, maybe has three calls. Eventually the deal closes, or it does not.

    Your Google Ads account records a conversion when the form was filled. It does not know whether the deal closed. When you look at campaign performance, you see cost-per-lead, not cost-per-customer. If 40% of your leads from one campaign close and 10% from another do, you are optimizing for the wrong signal.

    Closing this loop requires pushing a conversion signal back to Google or Meta when the deal actually closes — what Google calls an offline conversion import. The UTM you captured at lead submission is what lets you match the closed deal back to the original campaign.

    Phone Calls: The UTM Gap Nobody Talks About

    For any business that gets a meaningful portion of leads by phone, UTM tracking is incomplete by default. A visitor clicks your Google ad, lands on your site, and calls the number they see. There is no form fill, no UTM capture. Google Ads may record a call conversion if you are using call extensions, but the lead never hits your CRM with attribution data.

    The fix is call tracking with dynamic number insertion (DNI). A tracking system swaps the phone number displayed on your site with a unique tracking number based on how the visitor arrived. When they call, the call is matched to the UTM source and the call record is logged with that attribution data. The lead enters your pipeline with a source, just like a form fill.

    This is what a complete WordPress UTM tracking setup looks like: first-party cookies for multi-session form fills, DNI for phone calls, and offline conversion imports when deals close. The result is a report that shows you which campaigns drove revenue, not just which campaigns drove activity.

    What to Look For in a WordPress UTM Tracking Setup

    Before choosing a tool or building a setup, confirm it handles these five things:

    1. First-party cookie storage with a configurable persistence window (30+ days)
    2. UTM passthrough to form submissions — including third-party embeds if you use them
    3. Call tracking with DNI so phone leads carry the same attribution as form leads
    4. CRM logging — UTM values stored on the contact or lead record, not just in analytics
    5. Closed-loop export — a way to push a conversion signal back to Google or Meta when a deal closes, using the GCLID or FBCLID captured at the original click

    Most UTM plugins handle item 1 and sometimes item 2. Items 3 through 5 are where the standard WordPress approach falls short. They require either building a custom integration or using a platform that was designed for the full loop from the start — like Sales Provenance, which was built specifically for service businesses running paid traffic on WordPress who need to connect clicks to closed revenue.

    If you are currently looking at UTM reports and working backwards from sessions to guess which campaigns are producing revenue, the gap is fixable. The technical setup is not complex — it just has to cover all five layers, not just the first two.

  • Marketing Attribution Software: How to Connect Every Lead to Real Revenue (on WordPress)

    Marketing attribution software answers the question every marketing budget eventually has to answer: which marketing actually produced revenue? Not clicks, not impressions, not even leads, but closed customers and the dollars they brought in. This guide covers what attribution software is, the main types, what to look for, and how to get a real answer on WordPress without moving your business onto a heavy new platform.

    What marketing attribution software actually does

    At its core, attribution software connects two things that normally live in separate systems: the source of a lead (the channel, campaign, ad, or search that brought them in) and the outcome of that lead (whether they became a paying customer, and for how much). When those two are joined, you can finally rank your marketing by revenue produced instead of by activity. That single join is the whole job. Everything else is detail.

    The main types of attribution

    • First-touch and last-touch. Credit goes entirely to the first or the last channel a lead interacted with. Simple, but blunt: it ignores everything in between.
    • Multi-touch. Credit is spread across the touches along the journey. More realistic, more complex to set up and read.
    • Closed-loop. The lead is tracked from its source all the way to the closed deal, and the revenue is fed back to the source. This is the type that reports money, not just interactions. We go deeper in closed-loop reporting.

    Most businesses do not need the most complex model. They need the one that reliably ties a lead to a sale and reports revenue by channel.

    What to look for in attribution software

    • It captures the true source on every lead. Channel, campaign, and click IDs stamped onto the lead at the moment it arrives, by form or by phone. That foundation is lead source tracking, and it feeds lead attribution.
    • It runs on first-party data. Third-party cookies are going away; attribution built on them is already breaking. Here is why first-party matters.
    • It follows the lead to the sale. The value is in tying the closed deal back to the campaign and pushing that outcome to the ad platforms as offline conversions, so they optimize toward revenue, not raw leads.
    • It fits how you already work. If getting attribution means migrating off your website or hiring a specialist to run the tool, the overhead can outweigh the answer, especially for small and mid-market teams. This is a real trade-off in B2B attribution.

    Why WordPress changes the calculation

    Most attribution platforms assume you will bring your data to them. If your site runs on WordPress, that usually means bolting on tags, exporting to a separate analytics stack, and stitching the pieces together, which is where attribution projects stall. A WordPress-native approach flips it: the tracking lives where your leads already arrive, so the source is captured at the point of capture and stays attached through to the sale. Fewer moving parts, fewer places for the chain to break.

    How to choose

    Skip the feature checklists for a moment and ask three questions. Does it capture the real source of every lead, including phone calls? Does it survive without third-party cookies? Does it follow the lead all the way to closed revenue and report by channel? A tool that answers yes to all three will serve you better than a larger platform you never fully deploy.

    Where Sales Provenance fits

    Sales Provenance is marketing attribution software built for WordPress. It installs on your site, captures every lead with its true source as first-party data, follows that lead through to the closed sale, and reports revenue by channel while feeding won deals back to Google and Meta. It is the closed-loop answer without the enterprise footprint, aimed squarely at businesses and agencies that want to prove marketing ROI without leaving WordPress.

    The bottom line

    The best marketing attribution software is not the one with the longest feature list. It is the one you can actually deploy, that connects every lead to real revenue, and that keeps working as the tracking landscape changes. On WordPress, that is what Sales Provenance is built to do.

  • B2B Marketing Attribution Without the Enterprise Price Tag

    B2B is where marketing attribution matters most and works least. Deals take weeks or months, involve several people, and close over a call or a contract rather than a checkout button. By the time a deal is won, the marketing that started it is buried under a dozen later touches. That is exactly the problem attribution is supposed to solve, and it is exactly where most B2B teams give up, either guessing or paying enterprise prices for a platform they barely use.

    Why B2B attribution is hard

    • Long sales cycles. The first touch and the closed deal can be months apart, so the connection has to survive that gap without breaking.
    • Many touches, many people. A blog post, an ad, a webinar, three sales calls, and a proposal might all touch one deal. Which one gets the credit?
    • The close happens offline. B2B deals rarely close on the website. They close on a call or in a signed agreement, which most web analytics never sees.
    • The data lives in silos. Marketing source data sits in one tool, the pipeline sits in the CRM, and nobody joins them, so the report that ties campaigns to revenue never gets built.

    You don’t need an enterprise platform to solve it

    The big enterprise attribution suites are genuinely powerful, and if you are running a large sales org with a full RevOps team, they earn their price. But most B2B companies on WordPress are not that. They need a straightforward answer to one question: which marketing produced pipeline and closed revenue? Paying enterprise licensing and dedicating a specialist to run it is far more overhead than that question requires.

    What the WordPress-native path looks like

    • Capture the true source on every lead. Channel, campaign, and click IDs get stamped onto the lead the moment it arrives, whether it came in by form or phone. That is lead source tracking.
    • Keep the connection alive to the close. The lead stays tied to its source through the whole cycle, so a deal that closes months later still points back to what created it. That is lead attribution carried through to closed-loop reporting.
    • Run on first-party data. With third-party cookies going away, long B2B cycles are the first thing to break under cookie-based tracking. First-party data is what holds the thread across months. Here is why that matters.
    • Feed the won deals back. Pushing closed revenue back to Google and Meta as offline conversions teaches the ad platforms to chase pipeline, not just cheap clicks. This is the difference between counting leads and counting revenue.

    Where Sales Provenance fits

    Sales Provenance gives B2B teams the closed-loop answer without the enterprise footprint. It installs on WordPress, captures every lead with its real source as first-party data, holds that connection through a long multi-touch cycle, and reports which channels produced pipeline and revenue once deals close. No migration off WordPress, no separate RevOps hire to operate it.

    The bottom line

    B2B marketing attribution is not an enterprise-only capability. The question, which marketing produced revenue, is the same whether you are a ten-person firm or a thousand. On WordPress, you can answer it without the enterprise price tag, and that is exactly what Sales Provenance is built to do.