Conversion

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.

Rafael Coelho

By · 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 siteMain conversionHow to measure it
SaaSSignup or trial startsignup event
Online storeCompleted purchasepurchase event or /thank-you page
Local serviceQuote request or call/WhatsApp clickform_submit or call_click event
Course or digital productList signup or purchase/signup-confirmed page
Blog / contentNewsletter signupnewsletter_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:

  1. Day 1: arrives from a Google search, reads an article and leaves.
  2. Day 4: sees a LinkedIn post, clicks, looks at the pricing page and leaves.
  3. Day 6: types the site's address and signs up.

Who gets credit for the signup? It depends on the attribution model:

ModelWho gets the creditWhat it values
First touchGoogle (day 1)Channels that bring in new people
Last touchDirect (day 6)Whatever happened right before
Last non-direct clickLinkedIn (day 4)The last "real" channel before the conversion
Multi-touch / data-drivenSplit across all threeTries 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 as direct). 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:

After the signup is confirmedjs
// "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:

On the order confirmationjs
// "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:

  1. Name: how you want to read it in the report (Signup, Purchase).
  2. Type: event (the exact event name, such as signup) or page (path) (the exact path, such as /thank-you).
  3. 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:

  1. Give it a name (Home → Pricing → Signup).
  2. Add the steps, each one as a page (path) or an event. You need at least two.
  3. Example: step 1 = page /, step 2 = page /pricing, step 3 = event signup.

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):

ChannelSessionsSessions that convertedRate
www.google.com1,200363.0%
l.instagram.com2,500251.0%
www.linkedin.com300217.0%
direct900273.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 (direct in 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

  1. Define one main conversion and measure the confirmation, not the click.
  2. Create the goal (event or page), with a value if it makes sense.
  3. Read Channels that convert on the Dashboard, comparing rate and volume.
  4. Build a funnel with the steps up to the conversion to find where people drop off.
  5. Tag every link you control with UTMs, especially messaging apps, email and QR codes.
  6. Before concluding anything, check that the sample can support the conclusion.

Sources

  1. Get started with attribution — Google Analytics Help
  2. Google is removing 4 attribution models for advertisers — Search Engine Journal
  3. 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.

Related tools and pages

Rafael Coelho

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

Keep reading

Conversion by channel: where your customers come from · Analisa