Use case · SaaS
Analytics for SaaS: from first visit to paying customer
Updated
A SaaS marketing site is a funnel with a long middle. Someone reads a comparison post in March, comes back from a newsletter in April, starts a trial in May and pays in June. A tool that only counts sessions sees four unrelated visits; a tool built for SaaS sees one customer and credits the channel that found them.
VisitTrack is built around that path. One script tag records visits and signups, a webhook from your billing provider (Stripe, Polar, Lemon Squeezy, Paddle or Razorpay) records payments, and the Revenue tab shows which referrer, campaign and landing page each dollar came from. There's no tag manager and no data warehouse to set up.
The SaaS metrics that matter on your marketing site
1.Visitor-to-signup conversion rate by channel
The share of visitors from each source who create an account. Search traffic that converts at 3% and social traffic at 0.4% are different businesses, and the blended average hides it. See the conversion rate definition.
2.Revenue per visitor by source
Attributed revenue divided by visitors, per referrer or campaign. It's the single number that lets you compare a Hacker News spike with a slow-burning SEO page on equal terms. Try the revenue per visitor calculator.
3.Days and visits to convert
VisitTrack records how many days and how many visits each paying customer took. If the median is 9 days and 4 visits, last-click reports are systematically crediting the wrong channel.
4.Pricing-page reach and pricing-to-signup rate
How many visitors ever see /pricing, and how many of those sign up. A low reach means the site doesn't make the case; a low pricing-to-signup rate means the price or the plan layout does the damage.
5.Signups and revenue by landing page
Which blog posts, docs pages and comparison pages start journeys that end in a payment. This is how content teams prove ROI instead of reporting traffic.
6.Trial-to-paid by acquisition channel
Combine the signup event with payment_completed in a funnel to see whether, say, Product Hunt trials pay at the same rate as organic ones. They rarely do.
Questions SaaS teams ask their analytics
- Which channel brought our last 20 paying customers?
- The Revenue tab lists each payment with the referrer, UTM campaign and landing page of the visitor's first touch, plus a breakdown by source.
- Is the blog worth the money?
- Filter revenue by landing page. Posts that start paying journeys show up with real dollar amounts next to them, not just pageviews.
- Where do trials drop off before they pay?
- Build a funnel from the homepage to /pricing to the signup event to payment_completed. Each step shows its conversion and drop-off.
- Did last week's launch bring customers or just tourists?
- Filter the dashboard by the launch's referrer or UTM campaign and compare signups and revenue against the same window for organic search.
- Which AI assistants send us traffic?
- Referrals from ChatGPT, Perplexity, Claude, Gemini and Copilot are grouped into their own AI channel, separate from search and social.
How to set up SaaS analytics with VisitTrack
Plan on about 15 minutes, most of it in your billing provider's dashboard.
Add the script to your marketing site and app
Put the tag in the shared layout of both the marketing site and the app. If they're on subdomains (example.com and app.example.com) they share visitors automatically; for separate domains use
data-cross-domain. Usedata-exclude="/app/*"if you don't want in-app pageviews counted. Framework guides: Next.js, React.<head> of every page <script defer data-site="SITE_ID" src="https://visitrack.app/tracker.js"></script>Record signups where the account is created
Signups aren't detected automatically — call the event after your signup request succeeds, and identify the user so the People tab can show their plan. For OAuth flows, send it from the server instead (custom events docs).
// after your signup request succeeds window.visitrack?.("signup", { plan: "free" }); window.visitrack?.identify?.(user.id, { plan: "free" });Connect your billing provider
In Settings → Revenue, connect Stripe (or Polar, Lemon Squeezy, Paddle, Razorpay), then pass the visitor id into checkout. Refunds are subtracted automatically if you subscribe to the refund event. Full guide: Stripe revenue attribution.
// server: create the Checkout Session with the visitor id const session = await stripe.checkout.sessions.create({ mode: "subscription", line_items: [{ price: PRICE_ID, quantity: 1 }], client_reference_id: visitorId, // window.visitrack.visitorId() from the browser success_url: "https://example.com/welcome", });Create a primary goal and a trial funnel
Make the signup event your primary goal so it shows on the Overview, then add a funnel: / → /pricing → signup → payment_completed, with a 14-day window to match your trial.
Tag your campaigns
Add utm_source, utm_medium and utm_campaign to every link you control — newsletters, ads, partner posts. Google, Meta, Microsoft, TikTok and LinkedIn ad click ids are recognized and labeled as paid automatically. Build links with the UTM builder.
Example: what a SaaS dashboard tells you after 30 days
A B2B tool with a 14-day trial, about 12,000 monthly visitors and Stripe connected.
| Metric | Value | What it tells you |
|---|---|---|
| Visitors | 12,140 | Up 8% on the previous 30 days |
| Trial signups | 286 | 2.4% of visitors |
| Paid conversions | 41 | 14% of trials, $3,690 attributed revenue |
| Top source by visitors | Google (organic), 4,980 | 41% of traffic, 52% of revenue |
| Top source by revenue per visitor | Newsletter sponsorship, $0.94 | Only 610 visitors, but $575 in payments |
| Median time to convert | 6 days, 3 visits | Last-click reports undercount first-touch channels |
Illustrative numbers for a typical site of this kind, not real customer data.
Read that way, the newsletter sponsorship is the best channel per visitor even though it sits sixth by traffic, and organic search earns more than its share. Switching the Revenue tab from first-touch to last-touch moves about $400 from search to direct — returning visitors typing the URL — which tells you search is where these customers were found, not where they closed.
VisitTrack vs GA4, Plausible and PostHog for SaaS
All four can count visitors. They differ on how much work it takes to see revenue by channel, and on cookies. Third-party details are as of October 2026.
| VisitTrack | Google Analytics 4 | Plausible | PostHog | |
|---|---|---|---|---|
| Revenue by source | Built in, from Stripe/Polar/Lemon Squeezy/Paddle/Razorpay webhooks | Requires sending purchase events yourself; no native Stripe link | Revenue goals on the Business plan, sent as custom events | Possible via events or its data warehouse; you build the reports |
| Cookies / consent banner | Cookieless or hybrid mode available | Uses cookies; EU consent expected | Cookieless | Stores an identifier by default |
| Attribution models | First, last, linear, time-decay, position, side by side | Data-driven and last-click | Not offered as a model comparison | Build your own |
| Setup effort | Script + one webhook | Tag + event design + consent mode | Script + goals | SDK + event design |
| Starting price | $5/mo, all features | Free | $9/mo (funnels and revenue from the $19 Business plan) | Free tier, 1M events/mo |
If you need product analytics inside the app — feature flags, experiments, per-feature retention — PostHog or Mixpanel go deeper than VisitTrack, and many SaaS teams run one of them alongside a marketing-site tool. If the question is which channel pays, VisitTrack answers it on one screen. See VisitTrack vs Google Analytics, vs Plausible and vs PostHog.
What VisitTrack costs for a SaaS site
Estimate events as monthly visitors × pages per visit, plus signups and payments. Typical SaaS marketing sites see 2.5–3.5 pages per visit.
| Profile | Events / month | Plan | Price | Notes |
|---|---|---|---|---|
| Pre-launch / early beta | ~8,000 | Up to 10k events/mo | $5/mo or $50/yr | A few thousand visitors, landing page plus docs |
| Early traction | ~40,000 | Up to 50k events/mo | $14/mo or $140/yr | ~12k visitors, blog and pricing page |
| Growing B2B SaaS | ~220,000 | Up to 250k events/mo | $29/mo or $290/yr | ~60k visitors, marketing site + app tracked |
| Scale-up | ~900,000 | Up to 1M events/mo | $59/mo or $590/yr | Several sites and a busy docs portal |
Every feature is on every plan; the price only follows monthly events (pageviews, custom events and payments, counted across all your sites). Bot and AI-crawler hits and session replays are never billed. Yearly billing is ten months' price for twelve, every plan starts with a 14-day free trial with no card, and there's a one-time lifetime deal from $59.
Frequently asked questions
What is the best analytics tool for a SaaS website?
The best one is the tool that connects visits to payments. For most early and mid-stage SaaS companies that means a privacy-friendly web analytics tool with built-in revenue attribution, such as VisitTrack, optionally paired with a product analytics tool like PostHog for in-app behavior.
How do I see revenue by marketing channel?
Connect your billing provider's webhook and pass the visitor id into checkout. VisitTrack then credits each checkout payment to the first referrer, campaign and landing page of that customer. Subscription renewals billed outside Checkout aren't attributed automatically — the first payment is the one the channel earned; send later ones through the server events API if you want them counted. See revenue attribution.
Do I still need Google Analytics for a SaaS site?
Only if you rely on Google Ads conversion imports or GA4-specific reporting. Most SaaS teams get what they need — sources, conversions, revenue by channel, Search Console keywords — without it, and avoid the consent banner GA4 typically requires in the EU.
Should I track the app as well as the marketing site?
Track both with the same script so the visitor id carries from the first blog visit into the app. Exclude private app routes with data-exclude if you only want marketing pages counted, or keep them to see activation paths in Journeys.
Does VisitTrack work with Stripe Payment Links and subscriptions?
Yes. Stripe Checkout Sessions and Payment Links are attributed through client_reference_id, and refunds are subtracted when you subscribe to charge.refunded. PaymentIntents created outside Checkout aren't attributed automatically. Details in the Stripe guide.
How is SaaS attribution affected by cookieless mode?
In cookieless mode the visitor id rotates every 24 hours, so a signup days after the first visit would be credited to that day's source. Your app can store visitrack.attribution() at signup and send it back as the first touch to keep cross-day attribution. See cookieless mode.
Related
- Analytics for indie hackersThe same setup for one-person products.
- Analytics for B2B lead generationWhen the conversion is a demo request, not a card.
- Stripe revenue attributionPass the visitor id and connect the webhook.
- VisitTrack vs Google AnalyticsWhere GA4 is still the better fit.
- MRR calculatorTurn plan counts into monthly recurring revenue.
- First-touch attributionWhat it credits and what it misses.
See which channels actually bring paying customers
VisitTrack is cookie-free analytics with revenue attribution built in. One script tag, no consent banner, live in two minutes. 14 days free, no card required.