Florian S. Kluge

Blog

Is SEO bringing you paying customers? How to tell

A payment terminal with a curling blank receipt on a warm yellow surface.
Photo: Towfiqu barbhuiya / Unsplash

You're paying for SEO, or spending your own evenings on it, and the report says traffic is up. What you want to know is whether Google and ChatGPT bring people who pay. Start by joining your search, analytics, signup and billing data, page by page, and list what you can't trace instead of guessing it.

Key takeaways

  • Measure the whole chain: found, visited, signed up, paid, stayed. Traffic is the second step of five.
  • Each step lives in a different system: Search Console, analytics, your product database and billing. The work is joining them.
  • GA4 now has an AI Assistant channel by default. Check that Perplexity lands there in your property before you trust the number.
  • Ask every new signup how they heard about you, and report those answers next to tracked visits. Never add the two together.
  • Keep a "can't trace" row. AI answers that send no click are real, and they don't belong in anyone's win column.

What does "SEO is working" mean for a SaaS?

For a company with revenue, it means search brings people who pay and keep paying. Everything before that is a leading signal.

I think of it as a chain: found (you appear in a Google result or an AI answer), visited (someone clicks), signed up (a trial, free account or demo request), paid (the first invoice), stayed (still paying a few months later). Rankings and traffic sit at the first two links. A report that stops there can't tell a page that sells from one that doesn't.

I've seen this go wrong in a way a traffic report hides completely. Two pages with similar traffic: one brought no paying customers, the other brought a steady stream. In the traffic report they looked like twins. A billing join is how I'd tell them apart in a report.

Where does each number live?

First check which parts of the chain your setup records. Here is where to look and who usually holds access at a 30-person company.

Step The question it answers Where it lives Who usually has access
Found Do we show up for the searches and prompts buyers use? Search Console for Google; Bing Webmaster Tools for Copilot citations; a fixed prompt list or a tracker for ChatGPT and the rest Marketing, or nobody
Visited Which page did they land on, from which source? GA4 (landing page plus channel) Marketing
Signed up Did the visit become an account? Your product database, plus a GA4 event Engineering
Paid Did that account pay? Billing, for example Stripe Founder or finance
Stayed Are they still paying after three months? Billing Founder or finance

Two things on the first row are worth knowing. Google says clicks from AI Overviews and AI Mode are included in the overall search traffic in Search Console, inside the "Web" search type, so they show up there with the rest of your Google numbers. Microsoft added an AI Performance report to Bing Webmaster Tools in February 2026, in public preview, which shows how often Copilot and Bing's AI summaries cite your pages. For ChatGPT and the others, "found" means asking a fixed list of buyer prompts every month or paying for a tool that does; that is what AI visibility measures. It tells you whether you're named. It doesn't tell you who paid.

How do I see visits from ChatGPT, Perplexity, Gemini and Copilot in GA4?

GA4 handles most of this by default now. Google's What's new page dates the change to May 13, 2026: a new AI Assistant channel in the Default Channel Group. When the referrer matches a recognized AI assistant, GA4 sets the medium to ai-assistant and the campaign to (ai-assistant).

The Default channel group page describes the channel as visits "from sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok", and says it excludes Google's AI Overviews and AI Mode. Those count as Organic Search. So a click from an AI Overview and a click from a classic blue link look the same in GA4.

Perplexity is not named on that page. It may well be on Google's internal list, but the list isn't published there, so check your own data: open Traffic acquisition, switch the dimension to session source, and look for perplexity.ai. If it sits under Referral, create a custom channel group. Google's own example on that page uses a regex that includes Perplexity, says to order the new channel above Referral, and notes that custom channel groups apply to your reports retroactively.

What GA4 can't do: see a buyer who reads an answer and types your URL a day later. Google's page on (direct) / (none) traffic lists visits typed straight into the browser as direct. That buyer exists. GA4 just has no way to credit the answer.

How do I join a signup to its first payment?

Start with the data you already have before buying another tool. A developer needs to check the signup and billing records; the time depends on how they're stored.

At signup, write four fields onto the user record in your own database: the first landing page, the referrer or channel, any UTM tags, and the answer to your "how did you hear about us?" question. Capture the landing page on the first visit and carry it to signup; otherwise you may credit the signup page instead of the page that brought the buyer.

Then put your user ID on the billing record. Stripe's metadata docs describe exactly this use: storing your own user's unique identifier on a Stripe Customer object. Once both sides share an ID and the signup and payment data are in one queryable place, you can group signups, first payments and customers still paying by first landing page.

Decide one rule for credit and write it down. First landing page is the simplest for a self-serve product. The rule matters less than keeping it fixed from month to month. The glossary entry on revenue attribution covers the trade-offs. And keep the claim modest: a customer whose first visit was a comparison page came through that page. It doesn't prove they wouldn't have found you anyway.

Should I ask "How did you hear about us?"

Yes. It adds a signal from buyers whose first discovery never produced a tracked click. Put it on the signup form or the first onboarding screen, as a short list with "ChatGPT or another AI assistant" as its own option, plus a free-text box. That is self-reported attribution: what the customer remembers, which is useful and imperfect.

Tally, the form builder, is the clearest public example I know. In a June 2025 founder update they wrote that they saw over 2,000 new users signing up via AI tools, "and those are just the ones we could track. Our onboarding survey (where we ask how users find Tally) shows that the actual number is a lot higher." Their September 2026 update says, "Our onboarding survey confirms it every week", followed by what customers tell them about AI discovery. The same post is honest about control: "a model update could still reshuffle recommendations overnight."

One detail from that post is worth copying. The 43% figure Tally reports is the share of new users who discover Tally through AI assistants, not the share of paying customers. Keep that distinction in your own report.

To reconcile the two signals, sort every new paying customer into one of three groups: tracked AI visit, said "AI" at signup with no tracked AI visit, or neither. Report the groups side by side. If you add tracked and self-reported counts together, you count the same customer twice.

A sample monthly report, from page to paying customer

This is the format I'd ask for, expanded from the short version on my homepage. The company is invented: a 30-person company selling a webhooks API with a self-serve plan. Every page and number below is invented to show the format.

Monthly read, October (invented example)

Visits are October sessions, not unique buyers. The signup and paying columns follow October signups, with first payments counted through month-end.

Page or source Visits Signups Paying
/blog/what-is-a-webhook 2,310 15 0
/vs/competitor-a (comparison page) 1,480 41 7
/docs/retries 890 26 3
/use-cases/payments 360 12 2
Other Google organic landing pages 3,050 20 2
Clicks from AI assistants (GA4 AI Assistant channel) 210 14 3
AI answers without a click can't trace

Separate survey view, not added to the table: 9 signups said "ChatGPT or another AI" without a tracked AI visit; 2 paid. They may already appear in a Google row above, or have arrived through direct or another channel.

Stayed: of the 11 customers search brought in July, 10 still pay in October.

Next month: a second comparison page, because the first one sells. The webhook explainer ranks and gets the most traffic but has brought no paying customer in three months; it gets a section on how the product handles retries, or it gets cut. Docs pages convert better than the blog, so two more docs gaps go to engineering.

How to read it. The page rows cover Google organic search by landing page; the AI assistant row covers referred visits from assistants. Credit each signup and paying customer once, using the first source and landing page you captured. The survey view can overlap those rows, so don't add it to the table's totals. The last row stays empty on purpose: an answer without a click isn't a tracked visit or a credited customer.

Setup checklist

  1. Verify your domain in Search Console, so Google impressions and clicks per page are visible.
  2. In GA4, confirm the AI Assistant channel shows traffic. Look for perplexity.ai as a source and add a custom channel group if it lands in Referral.
  3. Capture first landing page, referrer and UTM tags on the first visit and save them on the user record at signup.
  4. Add the "how did you hear about us?" question with an AI assistant option and free text.
  5. Store your user ID on the billing customer (in Stripe, as metadata).
  6. Write one monthly query: signups, first payments and customers still paying, by first landing page.
  7. Keep a fixed list of 20 to 30 buyer prompts and check them monthly, so the "found" step has a number.
  8. Write down the credit rule and don't change it without saying so in the report.

When isn't this worth setting up yet?

If you don't have paying customers yet, the question is why signups don't pay, and attribution won't answer it. Fix that first.

If search brings a handful of signups a month, skip the query and talk to each new customer. You'll learn more from ten conversations than from a dashboard with ten rows. And if you sell through demos, the chain is the same but ends in your CRM's closed deals instead of billing; the join is the same idea.

A tracker alone is enough if all you need is to know whether AI answers name you. If you need someone to act on what the report shows, that's a different purchase; I compare the two in Peec AI or someone to run SEO. And if the real gap is that nobody owns this report, start with who should own SEO at your SaaS.

If you want to know where your own setup stands, the free AI search check includes whether you measure AI referrals as their own channel.

Frequently asked questions

How do I check ChatGPT traffic in GA4?

Open the Traffic acquisition report and look at the AI Assistant channel, which Google added to the Default Channel Group in May 2026. Then switch to session source to see ChatGPT, Gemini, Copilot and others separately, and check where Perplexity lands in your property.

Does Search Console show traffic from AI Overviews and AI Mode?

Yes. Google says sites appearing in AI Overviews and AI Mode are included in the overall search traffic in Search Console, in the Performance report under the "Web" search type. In GA4 those clicks count as Organic Search, not AI Assistant.

How do I measure SEO ROI for a B2B SaaS?

Start with paying customers by first landing page, from the join between your product database and billing. Then compare the revenue from those customers with what search cost you, including your own time. Treat it as credited revenue, not proof that the customers wouldn't have come anyway.

Is self-reported attribution reliable?

It is reliable enough to show what tracking misses, and not reliable enough to use alone. People forget, pick the first option, or name the last thing they saw. Report it next to tracked visits, never added to them.

What if AI answers mention us but nobody clicks?

The mention itself won't appear in site analytics. Click data alone can't connect it to a paying customer. Watch the signals that remain: self-reported answers at signup, branded searches in Search Console, and direct signups. Report the rest as "can't trace".

Sources

Free AI search check

Send me your domain. Get 15 checks back.

Pass, fail or check yourself, filled in for your site with the evidence. By email within 2 working days.

Get your free AI search check