# See which channel brings trials that pay.

> SaaS analytics from first visit to first paid invoice, for people who consent: which channel brings paying customers, and what each cost on Google Ads.

URL: https://mirafive.io/solutions/saas  
Updated: 2026-09-28

MIRA FIVE follows each consenting person from first visit to paid invoice, with Google Ads cost per paying customer.

Sample conversion journeys: 8 buyers came direct, 7 via paid search and then direct, 5 via organic search, 4 via paid social, email and then direct, and 3 via an AI assistant and then organic search. Buyers bought after a median of 10 days.

## What you want to know

- Which channel brings trials that convert to paid?
- What did a paying customer cost on Google Ads?
- Where do sign-ups stall before the first payment?
- Does a pricing page change bring more paying customers?

## Which channel brings trials that turn into paid plans?

Mark the trial start as a Conversion goal and the first payment as your Purchase goal. The trial goal shows where its people first came from; Acquisition shows which channels brought the ones who paid. Conversion journeys list every channel a customer came through before paying.

- Nine channels, by first or last touch
- Stages from Visitor to Known and Customer
- Time from first visit to first payment
- AI assistants such as ChatGPT as a channel of their own

## What did a paying customer cost on Google Ads?

Connect Google Ads, and spend arrives daily, joined to the visits it paid for. With the payment as your Purchase goal, each campaign's cost per buyer counts paying customers, not sign-ups. Campaigns that spend without matched visits are flagged, with the tag to add.

- Cost per visit, cost per buyer and ROAS per campaign
- First touch credits the campaign that found them
- Google Search Console: brand and other searches
- Meta Ads is next

## Where do sign-ups stall?

A funnel from pricing page to sign-up to first payment shows where people stop, counted by person over up to 30 days. Each step opens the people who stopped there, with every visit and event. An Intent goal on the pricing page lists who looked and has not paid yet.

- 2 to 6 steps, each an action or a goal
- High intent: people close to buying, in one list
- A/B test a change, decided by the goal you pick
- Feature flags roll a change out to a share of people

## Honest about consent, hosted in Germany

The default script counts visits, pages and sign-ups without cookies. Following a person from first visit to paid plan needs their consent, and the dashboard shows the share who agreed. Hosting is one part of compliance; the rest depends on what you collect and why.

- After consent, ids live in localStorage
- Server events use a secret key that stays on your server
- Run by Cloo GmbH in Auerbach, Germany
- Analytics data stored and processed in Germany

## What does setup take?

Three pieces: the script in the head of your site and app, the consent line from your banner, and the payment event from your backend. The [setup page](https://mirafive.io/setup) lists who does what, ready to send to your developer. Each source's Install tab also offers “Let your coding agent install it”, a prompt for Claude Code, Cursor or Codex.

- Script tag, or the SDK for React, Next.js, Vue, Nuxt or Astro
- Consent line: only to follow people who agree
- `identify` on sign-in, `reset` on sign-out
- Payment event from your webhook handler

## Send the payment from your webhook handler

When your payment provider reports a paid invoice, your own webhook handler sends the event with the secret key of a server source. Use the id your app passes to `identify` at sign-in, so the payment lands on that person. The invoice id as idempotency key makes a repeated webhook count once.

```
import { Mira } from '@mirafive/sdk-server'

const mira = new Mira({ key: process.env.MIRAFIVE_SECRET_KEY })

// in the handler for a paid invoice
await mira.send(
  [{ name: 'subscription_paid', userId: customer.id, properties: { revenue: 49, currency: 'EUR' } }],
  { idempotencyKey: invoice.id },
)
```

[Setup, step by step](https://mirafive.io/setup)

## From first visit to first invoice

A typical path, as MIRA FIVE records it. Someone finds your product through a Google search and reads the pricing page. A week later they come back through your newsletter and start a trial. Two weeks after that, the first invoice is paid.

Their page under **People** follows the stages: Visitor on the first visit, Returning on the second, Known after signing in, Customer with the first payment. Because your app calls `identify` at sign-in, the earlier visits in that browser join the account. The payment your server sends carries the same id, so it lands on the same person, next to the search that first brought them.

## Reading it by channel

Acquisition counts that person as a buyer for Organic search by first touch, or for Email by last touch. The Purchase goal adds time to purchase, from first visit to first payment, as a median across all paying customers. [How to set up a purchase goal](https://mirafive.io/learn/from-first-visit-to-paid-plan) walks through the goal itself.

## Tests and flags on the same script

When you change onboarding or pricing, a feature flag rolls the change out to a share of people and turns it off with one switch. An A/B test measures it against the original, decided by the goal you pick. Both use the same people and the same goals, so paid plans can decide a pricing page test, not clicks.

## Questions and answers

### Does MIRA FIVE connect to Stripe or Mollie?

No, payment providers are not imported. The webhook handler in your own backend sends each paid invoice as an event, with the SDK for Node.js, PHP or Laravel, or over HTTP.

### Do I need a developer?

Yes, for the webhook handler and the `identify` call. The rest is the script and a consent line. The [setup page](https://mirafive.io/setup) lists every step, and the Install tab has a prompt for Claude Code, Cursor or Codex.

### Can I test a pricing page change?

Yes. A page experiment shows the original or one change, split 50/50, and your purchase goal can decide it. You plan 2, 3, 4, 6 or 8 weeks up front, and it counts people who consented.

### What about visitors who decline the banner?

With a Full source, each page can count them as visits without cookies and switch to full mode only for people who agree; the tag alone sends nothing for them. Paying customers per channel cover the people who agreed, and the dashboard shows their share.

## Read next

### [How to set up a purchase goal](https://mirafive.io/learn/from-first-visit-to-paid-plan)

Set up conversion tracking with a purchase goal, revenue read from your events, one total per currency, and the time from first visit to paid plan.

### [Which channel brings the customers who pay?](https://mirafive.io/learn/which-channel-brings-paying-customers)

Rank marketing channels by the buyers they bring instead of visits, with first or last touch, revenue per channel, campaigns and Google Ads cost per buyer.

### [How to find where buyers drop out](https://mirafive.io/learn/find-where-buyers-drop-out)

Build a conversion funnel of two to six steps, see where buyers drop out between them, and open the people who stopped. Counted by person or by visit.

### Related terms

- [Funnel](https://mirafive.io/glossary/funnel)
- [Identity stitching](https://mirafive.io/glossary/identity-stitching)
- [A/B test](https://mirafive.io/glossary/ab-test)

## Other kinds of business

- [Online shops](https://mirafive.io/solutions/online-shops)
- [Courses and coaching](https://mirafive.io/solutions/courses-and-coaching)
- [Services and bookings](https://mirafive.io/solutions/services-and-bookings)

## See which channel brings buyers

Free for 25,000 events a month. No card needed.

[Start free](https://app.mirafive.io/register)[See pricing](https://mirafive.io/pricing)
