How to measure conversion by channel (and find out where your customers come from)
Define your conversion, understand attribution (first vs last touch), set up goals and funnels in Analisa and read results by channel without small-sample traps.
By Rafael Coelho · Full-stack developer and creator of Analisa
Published 9 min read
"LinkedIn brought in 3,000 visits this month." Great. How many became customers? If the answer is "no idea", you're measuring audience, not acquisition. And it's very common to find out that the channel with the most visits isn't the one bringing the most customers.
In this article I cover how to define a conversion that makes sense, the basics of attribution (minus the unnecessary jargon), exactly how Analisa ties a conversion to a channel, a step-by-step for setting up goals and funnels, and the traps that lead to the wrong conclusions.
First: what counts as a conversion on your site
A conversion is the action that, for your business, means the visit worked. There's no universal conversion; there's yours. A few examples:
| Type of site | Main conversion | How to measure it |
|---|---|---|
| SaaS | Signup or trial start | signup event |
| Online store | Completed purchase | purchase event or /thank-you page |
| Local service | Quote request or call/WhatsApp click | form_submit or call_click event |
| Course or digital product | List signup or purchase | /signup-confirmed page |
| Blog / content | Newsletter signup | newsletter_signup event |
Two practical recommendations:
- One main conversion, a few secondary ones. The main one pays the bills. Secondary ones (micro-conversions, such as clicking "see pricing") help you understand the path, but they shouldn't compete with the main one in your reports.
- Measure what actually happened. "Clicked the Buy button" isn't a purchase. If you can, fire the event after the server has confirmed the signup or the payment.
The conversion rate is the share of sessions that converted. In Analisa, it's sessions with at least one conversion divided by total sessions in the period. If 1,000 sessions produced 30 sessions with a signup, the rate is 3%.
Channel, source and attribution in five minutes
A channel is the route the visit came through: a site that linked to you (the referrer), a campaign tagged with UTMs, or none of the above — the famous "direct".
The trouble starts when someone visits more than once before converting. Picture this journey:
- Day 1: arrives from a Google search, reads an article and leaves.
- Day 4: sees a LinkedIn post, clicks, looks at the pricing page and leaves.
- Day 6: types the site's address and signs up.
Who gets credit for the signup? It depends on the attribution model:
| Model | Who gets the credit | What it values |
|---|---|---|
| First touch | Google (day 1) | Channels that bring in new people |
| Last touch | Direct (day 6) | Whatever happened right before |
| Last non-direct click | LinkedIn (day 4) | The last "real" channel before the conversion |
| Multi-touch / data-driven | Split across all three | Tries to weigh each one's contribution |
None of them is "right". Each answers a different question. For reference: GA4 currently offers three models — data-driven (the default), paid and organic last click (which ignores direct, like the third row of the table) and Google paid channels last click. Google retired first click, linear and similar models in 2023.
How Analisa ties a conversion to a channel
I'll be very specific here, because this defines how you read the numbers.
- The unit is the session. The SDK creates a session ID stored in the browser's
sessionStorage: it lasts while the tab is open and disappears when it closes. A new tab or a new visit is a new session. - The session's channel is the source of the first page viewed. Analisa looks at the referrer of the session's first page view in the period and keeps the domain (
www.google.com,www.linkedin.com,news.ycombinator.com). With no referrer, the session is direct (shown asdirect). By default, browsers only send the origin domain when navigation comes from another site — which is why the channel is a domain, not a full URL. - The conversion counts toward the channel of the session it happened in. If a session that started from Google included a signup, the signup belongs to Google.
In practice, that's last touch per session: credit goes to the channel that opened the session in which the person converted. The report doesn't stitch together different sessions from the same person to build a journey. In the example above, the day-6 signup would be credited to direct.
What that means for you:
- It works very well when conversions usually happen in the same visit: landing page → signup, ad → impulse purchase, post → newsletter signup.
- For long cycles (B2B, high-ticket), read the rate by channel as a signal of visit quality, not as the absolute truth about who generated the customer.
- UTMs show up in the UTM report; the conversions block uses the referrer. A WhatsApp visit with UTMs arrives without a referrer and counts as direct for conversions. I explain how to work around that in the UTM guide, with a landing page per campaign and a funnel.
Step by step in Analisa
1. Install the SDK and confirm events are arriving
If you haven't installed it yet, the getting started guide takes a few minutes. Check that page views show up in the dashboard before moving on.
2. Fire the conversion event
If the conversion has its own page (like /thank-you), you can skip this step and use the page as the goal. If it doesn't, fire an event when the action succeeds:
// "signup" event (with the method as a property)
window.analytics.signup('email')
// or, for any event name:
window.analytics.track('call_click', { button: 'floating' })For online stores, there's a shortcut for purchases:
// "purchase" event: order id, amount and currency
window.analytics.purchase(order.id, 49.0, 'USD')3. Create the goal
In the dashboard, go to Conversion › Goals › New goal and fill in:
- Name: how you want to read it in the report (
Signup,Purchase). - Type: event (the exact event name, such as
signup) or page (path) (the exact path, such as/thank-you). - Value (optional): what each conversion is worth, in cents. A $29 plan becomes
2900. The report multiplies it by the number of conversions.
Two details that trip up a lot of people: the path is matched exactly (/thank-you and /thank-you/ are different) and doesn't include the query string (/thank-you?order=123 counts as /thank-you). Event names are exact too: Signup isn't signup.
The Goals screen shows, for the selected period, conversions, unique sessions that converted, the conversion rate and the total value.
4. See conversion by channel
On the Dashboard, the Conversions block shows sessions, how many converted and the rate for the period. Right below, Channels that convert lists each channel with a line like this: 12 conv. · 340 sessions · 3.5%. That's the answer to "where do my customers come from".
5. Build a funnel to see where people drop off
A goal tells you how much converts; a funnel shows where people fall off along the way. Under Conversion › Funnels › New funnel:
- Give it a name (
Home → Pricing → Signup). - Add the steps, each one as a page (path) or an event. You need at least two.
- Example: step 1 = page
/, step 2 = page/pricing, step 3 = eventsignup.
For each session, Analisa checks whether it went through the steps in that order, and shows how many sessions completed, the overall rate and the share that left at each step. A big drop between /pricing and signup points at the pricing page or the form, not at the channel.
How to interpret the numbers
An illustrative example (made-up numbers, just to show how to read them):
| Channel | Sessions | Sessions that converted | Rate |
|---|---|---|---|
www.google.com | 1,200 | 36 | 3.0% |
l.instagram.com | 2,500 | 25 | 1.0% |
www.linkedin.com | 300 | 21 | 7.0% |
direct | 900 | 27 | 3.0% |
What I'd take from it:
- Rate and volume tell different stories. Instagram brings more people and converts worse. Google brings fewer and converts three times better. Cutting Instagram would still cost you 25 customers this month — the real question is what each one costs.
- The small channel with a high rate deserves more traffic. LinkedIn at 7% is a clear sign to post more there (and to test ads).
- Direct (
directin the report) is a mix. It includes people who typed your address, but also messaging apps, other apps, QR codes and some email clients. The bigger direct is, the more it pays to tag your links with UTMs. - If your goals have values, compare value per session, not just the rate. A channel with a lower rate may bring higher-value customers.
Traps that lead to the wrong conclusion
Small samples
Three signups out of 40 sessions is 7.5%, but with so few people the 95% confidence range runs from about 2.6% to almost 20%. One good or bad week changes everything. Before making a decision, put the numbers into the conversion rate calculator, which shows the confidence range. If you're testing a change, the A/B test sample size calculator tells you how many visits each version needs — and how many days that takes with your traffic.
Periods that don't compare
Comparing a week with a public holiday against one without, or the campaign month against the month before, mixes seasonality with the channel's effect. Compare full weeks and, when possible, the same period of the previous year.
A goal that counts too much
A thank-you page you can reach without buying, an event fired on click instead of on confirmation, reloading the page and counting again. The Goals screen separates conversions (every event) from unique sessions that converted — if those two numbers are far apart, investigate.
Conversions that happen off the site
If the sale closes over the phone or in a chat app, the site only sees the click. Measure the click as a micro-conversion (call_click, whatsapp_click) and, if you can, cross-check with what your sales team records.
Changing everything at once
You changed the ad, the page and the price in the same week and conversion went up? Great, but you don't know why. One change at a time, or a proper A/B test.
Checklist
- Define one main conversion and measure the confirmation, not the click.
- Create the goal (event or page), with a value if it makes sense.
- Read Channels that convert on the Dashboard, comparing rate and volume.
- Build a funnel with the steps up to the conversion to find where people drop off.
- Tag every link you control with UTMs, especially messaging apps, email and QR codes.
- Before concluding anything, check that the sample can support the conclusion.
Sources
- Get started with attribution — Google Analytics Help
- Google is removing 4 attribution models for advertisers — Search Engine Journal
- Referrer-Policy — MDN Web Docs
See where your customers come from — without cookies
Analisa shows where each visit comes from (referrer and UTM), how many convert and where your funnel leaks, with IPs anonymized at ingest. Free up to 10K events a month.
Try first: Conversion rate calculator
Related tools and pages
- Conversion rate calculatorVisitors and conversions in, conversion rate out — with a confidence range and value per visitor.
- A/B test sample sizeVisitors needed per variant — and how many days that takes — for a conclusive A/B test.
- Getting startedSign up, create your first app, and start sending events to Analisa in under 5 minutes.

About the author
Rafael Coelho
Full-stack developer and creator of Analisa. Writes about programming, product and data — and measures everything with Analisa itself.
See all articles