Campaigns
The Campaigns view aggregates engagement, lead, and pipeline metrics by the UTM parameters on your tracked events. Use it to see which campaigns, sources, and mediums are actually driving activity, MQLs, and revenue across your funnel.
What You'll See
The Campaigns table groups every event that arrives with UTM tags into a single row per campaign. There is no campaign list to maintain in kenbun — campaigns appear automatically the moment an event tagged with that UTM value lands.
Each row shows:
- Campaign / Source / Medium -- The UTM value being aggregated, depending on the active Group By selection
- Total Events -- How many tracked events carried this UTM value
- Unique Leads -- Distinct leads with at least one event tagged to this campaign
- MQL Count -- Distinct leads currently at the Warm or Hot engagement level
- Total Points -- Combined engagement points from events on this campaign
- Deals -- Open or closed deals tied to leads who touched this campaign
- Pipeline Value -- Total amount of those deals across any stage
- Closed-Won Value -- Total amount of deals already in a closed-won stage
- First Event / Last Event -- The earliest and most recent activity for this campaign
Group By
Use the Group By selector at the top of the page to switch between three views of the same underlying events:
| View | What each row represents | Example |
|---|---|---|
| Campaign | A unique value of utm_campaign | spring-2026-launch |
| Source | A unique value of utm_source | linkedin, google, newsletter |
| Medium | A unique value of utm_medium | email, cpc, social |
This is the same data sliced three different ways — pick the dimension that matches the question you're trying to answer.
Time Range
The time range selector filters the table to events that occurred in the chosen window. Available ranges are All time, 7 days, 30 days (default), 90 days, 180 days, and 365 days. Your selection is remembered between visits.
Switching the range recomputes every metric in the table, including MQL Count, Pipeline Value, and Closed-Won Value, so a campaign that ran outside the window will not appear.
The Lead Drilldown
Click any row to open a side panel listing every lead attributed to that campaign. For each lead you'll see:
- Display name, title, and company
- Engagement score and current level
- Linked account
- Deal stage and deal amount when an associated deal exists
- First and last touch timestamps for this campaign
Use the drilldown to validate that a campaign is reaching the right audience, to spot specific high-value leads worth a personal follow-up, and to cross-reference campaign attribution against deals already in motion.
Why This Page Matters
Find your highest-leverage channels
Sort by Pipeline Value or Closed-Won Value to see which campaigns, sources, or mediums are tied to revenue rather than just clicks. Channels with high Total Events but low MQL Count or zero deals are loud but not productive.
Validate launches and campaigns in real time
When you launch a new campaign, kenbun starts surfacing it as soon as the first tagged event arrives. There's no wait for batch jobs or syncs — refresh the page to watch leads, points, and pipeline accumulate.
Spot tagging hygiene problems
Because campaigns are auto-discovered from your UTM strings, casing differences and typos create separate rows for what should be the same campaign. Use the table to identify those duplicates and tighten your tagging conventions upstream.
Important Things to Understand
1. Campaigns are auto-discovered from UTM strings
Any unique UTM value becomes its own row. Spring2026, spring2026, and Spring 2026 will appear as three separate campaigns. kenbun does not provide rename, alias, or merge tools for campaigns — cleanup has to happen at the source, in your campaign tagging conventions and in the link generators your team uses.
If you want consistent reporting, agree on a naming convention with your demand gen and growth teams (lowercase with hyphens is common) and apply it everywhere you generate UTM links.
2. MQL Count is a current snapshot, not historical
The MQL Count column counts leads whose engagement level right now is Warm or Hot. A lead who was Hot during the campaign window but has since cooled to Cold no longer counts toward that campaign's MQLs.
This is intentional — it answers the question "how many of this campaign's leads are still warm enough to act on?" rather than "how many leads did this campaign ever heat up?" If you need the historical view, look at the lead's score history from the lead detail page.
3. Pipeline and Closed-Won are multi-touch and unweighted
A deal's full amount is credited to every campaign whose events touched the same account. If two campaigns each generated one event for the same account and the account has a $50,000 deal, both campaigns will show $50,000 in Pipeline Value.
This means:
- Pipeline and Closed-Won numbers reflect involvement, not a clean attribution split.
- Summing the Pipeline Value column across rows will overcount your actual pipeline. Treat each row's value as "deals this campaign was involved in," not as a slice of a fixed total.
- A campaign showing high Closed-Won Value isn't necessarily what closed the deal — it's a campaign the buyer touched along the way.
For single-touch attribution or weighted models, use the Deal Attribution Insights view to see scoring patterns by milestone.
4. Pipeline metrics require an account match
Deals are connected to campaigns through the lead's account. If a lead has no account associated with them, that lead still contributes to Total Events, Unique Leads, and MQL Count, but never to Deals, Pipeline Value, or Closed-Won Value. This shows up most often for newly captured leads who haven't been matched to a company yet.
5. Numbers reflect your active Organizational Unit
All metrics are scoped to the Organizational Unit you currently have active. Switching OUs gives you a different view of the same UTM data — events tagged to a campaign in one OU don't show up in another.
Best Practices
- Standardize UTM tagging. Pick one casing convention and one naming pattern (e.g.
2026-q2-launch-linkedin-paid) and stick to it. Auto-discovery is only as clean as your tagging. - Use Group By to triangulate. A campaign might look weak by
utm_campaignbut strong byutm_sourceif your tagging is uneven. Switching the Group By can reveal which slice of the data is reliable. - Don't sum Pipeline Value across rows. Use it as a per-campaign signal of "deals touched," not a portfolio total.
- Click into the lead drilldown for QA. A campaign with a surprisingly high MQL Count but no familiar names is often a tagging mistake or a bot-driven event spike, not a genuine performance win.
- Pair with the Sessions view. Campaign attribution tells you which UTMs touched a lead; the Sessions view shows what they actually did once they arrived.
Common Questions
Why does the same campaign appear twice?
Different UTM strings create different rows. Check for casing, spacing, or trailing characters in the utm_campaign, utm_source, or utm_medium value of the underlying events.
Why is Pipeline Value zero for a campaign with lots of leads?
Either none of the leads have an associated account, or none of those accounts has a deal in your connected CRM. Both conditions are required for pipeline metrics to appear.
Why doesn't this campaign show up at all?
The most common reasons are: the time range is too narrow to include any of its events, the events arrived without UTM parameters, or the campaign's events all live in a different Organizational Unit.
Can I rename or merge campaigns?
Not from kenbun. Campaign names come directly from your event UTM tags. To consolidate two campaigns, retag the source links so future events use a single value — kenbun will start grouping them automatically.
API Access
Campaign analytics is available programmatically:
- GET /analytics/campaigns -- Aggregated metrics by campaign, source, or medium
- Lead drilldown -- Lead-level detail for a specific campaign