Every marketing team runs the same attribution report. They look at GA4, see that LinkedIn drove 200 visitors this month, and call it a win. The problem is that GA4 can't answer the follow-up question: which of those 200 visitors became customers?
Session-level attribution tells you that traffic came from a campaign. Contact-level attribution tells you which people came from which campaign, and whether those people converted into revenue. The gap between those two levels of insight is the gap between a traffic report and an actual marketing ROI analysis.
UTM parameters have always been the right mechanism for campaign tracking. The problem wasn't the UTM spec — it was that the data ended at the session level. Kopimore connects the UTM source to the identified individual, giving you attribution at the contact level for the first time. This guide explains how it works, what it unlocks, and how to set it up. For more on how Kopimore works, see the technical overview.
The Attribution Problem Marketers Actually Have
The attribution gap isn't a reporting problem — it's a data problem. GA4 shows you session-level data: 200 visitors came from your LinkedIn campaign. What it can't show you is the identity of those visitors, what they did after they left your site, whether they became leads, whether those leads closed, and what revenue is attributable to that LinkedIn campaign.
Consider a concrete example. Your LinkedIn retargeting campaign drove 200 visitors last month. Of those 200, 6 filled out a form and entered your CRM as leads. Three of those 6 converted to customers, generating $72,000 in revenue. GA4 can show you the 6 form fills. But what about the other 194 visitors from that campaign who didn't fill out a form? With session-level attribution, they're invisible.
Now add Kopimore. Of those 194 non-form-filling visitors, Kopimore identifies 80 of them — name, email, phone, company, and full UTM data including source: LinkedIn, campaign: Q1-Retargeting. Your CRM receives: "Mark Thompson | mark.thompson@abc.com | (312) 555-0142 | ABC Corp | Source: LinkedIn | Campaign: Q1-Retargeting | Medium: paid-social." Your sales team follows up. Three of those 80 become customers, adding $58,000 in revenue that was completely invisible to GA4.
That $58,000 wasn't uncaptured because the campaign didn't work — it was uncaptured because you couldn't see who came from it. Contact-level UTM attribution doesn't just improve reporting. It directly increases revenue by making the invisible visible and giving your sales team leads they didn't know they had.
UTM Parameters 101
UTM parameters are query string tags appended to URLs that tell your analytics platform where a visitor came from. Google Analytics and GA4 read these tags automatically and attribute sessions to the corresponding source, medium, and campaign.
The five standard UTM parameters:
- utm_source — The platform or publisher that sent the traffic. Examples: google, linkedin, facebook, newsletter, partner-site.
- utm_medium — The marketing channel or traffic type. Examples: cpc (cost-per-click), email, organic, paid-social, display, referral.
- utm_campaign — The specific campaign name. Examples: q1-brand-awareness, competitor-comparison, retargeting-pricing-page-visitors.
- utm_term — The keyword that triggered the ad (primarily used for paid search). Examples: visitor-identification-software, website-lead-generation.
- utm_content — The specific ad variant or creative (used for A/B testing different ads within the same campaign). Examples: headline-a, cta-button-green, video-vs-static.
A properly tagged URL looks like this: https://kopimore.com/pricing?utm_source=linkedin&utm_medium=paid-social&utm_campaign=q1-retargeting&utm_content=pricing-headline-v2
The rule for complete attribution: every link in every campaign must be tagged. Every email link, every ad click, every partner placement, every social post with a URL. A single untagged link creates an attribution gap — that traffic appears as "direct" in GA4 and can't be connected to the campaign that generated it. Use Google's UTM Campaign URL Builder or any spreadsheet-based UTM tracking template to enforce consistent naming conventions across your team.
How Kopimore Captures UTM Data
When a visitor lands on a tagged URL, Kopimore's pixel captures the full landing page URL — including all UTM parameters — as part of the session data. This happens in the same millisecond as IP capture, before the visitor has clicked anything or done anything on the page. No special setup is required beyond installing the standard Kopimore pixel on your site.
Every identified visitor record in Kopimore includes five UTM fields alongside the full contact data:
- utm_source
- utm_medium
- utm_campaign
- utm_term
- utm_content
When that record is delivered to your CRM via Kopimore's webhook, these fields are included in the payload. A complete record looks like: "Mark Thompson | mark.thompson@abc.com | (312) 555-0142 | ABC Corp, Director of Marketing | Source: LinkedIn | Campaign: Q1-Retargeting | Medium: paid-social | Content: pricing-headline-v2."
That is the difference between a traffic report and an actionable sales lead. Your sales team knows not just who to call — they know exactly which LinkedIn campaign brought that person to your site, which ad variant they clicked, and what page they landed on. That context transforms a cold outreach into a warm, personalized conversation.
From traffic report to revenue report: GA4 shows you that "Google / CPC" drove 500 visitors. Kopimore shows you which of those 500 visitors are real people, their contact info, and whether they converted. That's the difference between a traffic report and a revenue report. When you combine UTM data with contact-level identity, you move from "this campaign drove traffic" to "this campaign drove $X in pipeline from these specific contacts."
Get contact-level UTM attribution with Kopimore
Every identified visitor includes full UTM data. Pro plan available.
Get Started →What Contact-Level UTM Attribution Enables
Contact-level UTM attribution unlocks a fundamentally different category of marketing analysis. Here's what becomes possible:
True Customer Acquisition Cost by Channel
Instead of estimating CAC based on traffic volume and blended conversion rates, you can calculate actual cost per closed deal by channel. LinkedIn Campaign X cost $4,200 and produced 12 identified contacts, 4 of whom became customers generating $96,000 in ARR. That's a real CAC and a real ROI — not an estimate based on form fill rates applied to session counts.
Audience Quality Identification
Different LinkedIn audience segments, different Google ad groups, different email list segments — with contact-level attribution, you can see which audiences produce identified contacts with the highest close rates. A campaign that drives 200 visitors but 40 identified contacts who close at 15% is dramatically more valuable than a campaign that drives 400 visitors but only 30 identified contacts who close at 5%. Session-level data can't tell you this. Contact-level attribution can.
Campaign ROI at the Revenue Level
Calculate revenue generated by identified visitors per campaign, not just traffic volume. Connect your Kopimore UTM data to closed/won deals in your CRM and build a revenue attribution report that shows, by campaign, how many identified contacts were generated, how many became opportunities, how many closed, and at what revenue. This is the report your CFO has always wanted and that GA4 alone can never produce.
| Attribution Metric | GA4 Only | GA4 + Kopimore |
|---|---|---|
| Visitors by source | Yes | Yes |
| Leads by source | Estimated (form fills only) | Exact (all identified contacts) |
| Contacts by source | No | Yes |
| Revenue by source | Estimated | Exact (when connected to CRM) |
| CAC by channel | No | Yes |
| Close rate by campaign | No | Yes |
Setting Up UTM Attribution in Kopimore
Getting contact-level UTM attribution working is simpler than it sounds. Here's the setup checklist:
Step 1: Tag Every Campaign URL
Audit every active campaign and confirm that every linked URL is tagged with all five UTM parameters. Use a spreadsheet tracking template to maintain consistent naming conventions across your team. Common failure modes: inconsistent capitalization (linkedin vs. LinkedIn), inconsistent campaign names (q1-retargeting vs. Q1_Retargeting vs. retargeting-q1), and untagged email links. Fix all three before proceeding.
Step 2: Verify UTM Data in Kopimore Dashboard
After your next tagged campaign sends traffic, check your Kopimore dashboard to confirm UTM fields are populating on identified visitor records. You should see utm_source, utm_medium, and utm_campaign populated for every identified visitor who came from a tagged URL. If fields are blank, check that the full landing URL (including query string) is being captured — this is the default Kopimore behavior, but confirm it in your pixel settings.
Step 3: Set Up CRM Integration to Push UTM Fields
Configure your Kopimore webhook to push UTM fields alongside contact data to your CRM. In HubSpot, create custom contact properties for each UTM field and map them in your Kopimore webhook configuration. In Salesforce, create custom fields on the Lead or Contact object. Once mapped, every identified visitor record will arrive in your CRM with full UTM context attached to the contact record — making it available for reporting, segmentation, and sequence enrollment based on acquisition source.
Step 4: Build Attribution Reports
In HubSpot, use the custom report builder to create a contacts-by-utm_source report, segmented by deal stage and close rate. In Salesforce, build a campaign influence report using the UTM fields on your Lead records. In both platforms, the goal is a report that shows, by campaign, how many identified contacts were generated, how many are in active pipeline, and how many have closed — with revenue attached.
For more on the complete lead generation stack that UTM attribution feeds into, see our complete lead generation guide. For the outbound motion that turns UTM-attributed contacts into revenue, see the B2B website visitor tracking guide.
Advanced Attribution: Multi-Touch and Revenue Reporting
Once you have contact-level UTM data flowing into your CRM alongside Kopimore's identified visitor records, you have the data foundation for sophisticated multi-touch attribution modeling.
First-Touch Attribution
Which campaign first brought this contact to your site? First-touch attribution assigns 100% of revenue credit to the campaign that produced the first identified visit. This model is best for understanding which campaigns are best at generating net-new awareness — bringing people who didn't know you existed into your pipeline for the first time.
Last-Touch Attribution
Which campaign preceded the conversion — the form fill, the demo request, the first sales call? Last-touch attribution assigns 100% of revenue credit to the campaign that drove the converting visit. This model is best for understanding which campaigns are best at converting prospects who are already in consideration — closing the deal at the bottom of the funnel.
Multi-Touch Attribution
Multi-touch attribution distributes revenue credit across all campaigns that touched a contact before conversion. Common models include linear (equal credit to all touches), time-decay (more credit to recent touches), and W-shaped (40% to first touch, 40% to converting touch, 20% distributed across middle touches). Multi-touch requires tracking every session from every campaign for every identified contact over time — which is exactly what Kopimore + UTM data enables.
The reality for most mid-market companies: start with first-touch and last-touch. They're simpler to implement, easier to explain to stakeholders, and directionally accurate for most budget allocation decisions. Build to multi-touch once you have 6+ months of contact-level attribution data and a CRM structured to track multi-campaign journeys.
Visitor intelligence + CRM is the data foundation for all three models. The attribution models themselves are just math applied to that data. Get the data right — make sure every campaign is tagged, every identified visitor record includes UTM fields, and every CRM contact has attribution data attached — and the models will produce accurate results. Start with Kopimore's pro plan and see how this works in practice with your own traffic data. For more context on the identification layer that makes all of this possible, see our guide on how visitor identification works.
Ready to see which campaigns are actually driving revenue?
Contact-level UTM attribution. Pro plan from $99/mo. Start in minutes.
Get Started →