virling Pricing Self-host Demo Changelog Agencies GitHub Start free trial
Open sourceWritten in RustSelf-host or hosted

See the post, search or AI answer behind every payment.

Virling ties every visit to the payment that followed, so you see revenue per channel, including which AI assistants send buyers.

Works with
StripePaddleShopifyWooCommerceDodo PaymentsPolarLemonSqueezyCreemRevenueCat

14-day free trial. $19/mo hosted, or $9/mo for life for the first 50 customers. Self-host free forever.

vyoursite.comExample dataLast 30 days
Revenue
$8,412+18%
96 payments from 81 customers
Sep 15Sep 30Oct 14
SourceVisitorsRevenuePer visitor
google.com4,120$3,708$0.90
chatgpt.com310$1,488$4.80
news.ycombinator.com2,050$1,230$0.60
x.com5,840$1,168$0.20
reddit.com1,460$438$0.30

A ChatGPT visitor is worth 24x an X visitor.

01/AI visibility

See which AI assistants read you, name you and send buyers.

Three views, side by side: visitors and revenue from each assistant, the AI crawlers that fetch your pages, and how often assistants name you when asked what your buyers ask. See it in the demo

Visits
Visitors, payments and revenue per assistant. In the demo, AI sends 21% of visitors and 29% of revenue over 90 days.
Crawls
Which AI companies' bots read your pages, and how many. In the demo, OpenAI's bots read 5,004 pages.
Answers
Every week, your buyer questions asked to ChatGPT, Claude, Perplexity and Gemini with web search on. In the demo, Claude names the site in 47 of 72 answers. How AI answers work
Plan
Visits and crawls on every plan. Answers are included on paid hosted plans; self-hosting uses your own provider keys.
02/retention by channel

Know which channel brings customers who stay.

Retention groups customers by the channel of their first payment, and renewals keep that channel. A channel that wins the first sale can still lose on who keeps paying. See it in the demo

Still paying
Customers per first channel who still pay. In the demo, 48 of 57 customers who came from AI.
30-day churn
Per first channel. In the demo, 5% for AI and 36% for Email.
Lifetime value
Net of refunds, by first channel and first source. In the demo, $52.23 per Organic search customer and $27.23 per Social one.
Path to purchase
How many days and visits customers took before paying. How retention is counted
03/payment trail

Every payment has a path. Virling draws it.

Click any payment and see the visits before it: where the person first came from, what they read, and the visit that made them buy. Credit goes to the last channel that was not direct.

  • Renewals keep the source of the first payment
  • First touch or last touch, your choice
Pencil drawing: a road from a phone past a signpost, a door and a price tag, to a cash register with an orange receipt
How it looks in Virling
How it looks in Virling
04/channels that pay

Your busiest channel is not your best one.

Visitor counts reward whatever is loud. Put revenue next to traffic and the picture flips: the channel that fills your graph can be the one that pays the least.

  • Revenue per visitor for every channel, page and country
  • Tracked links: tag each post with a Virling link and see what it earned. How tracked links work
How it compares

CountersCount visits. Often open source and self-hostable.

HostedTie visits to revenue. Hosted only.

VirlingTies visits to payments. Self-host it or let us host it.

See side-by-side comparisons
05/runs on your box

One binary. Your server. Your data stays put.

Download it, start it, add the tag. Your events and settings sit right next to the binary, and a backup is copying one folder.

Binary
One Rust binary. Linux x86_64 and arm64, macOS, Docker.
Storage
Embedded DuckDB for events, SQLite for settings. No Postgres, no ClickHouse, no Redis.
Script
About 1.4 KB gzipped, one tag in your head.
License
AGPLv3
Payments
Stripe, Paddle, Shopify, WooCommerce, Dodo Payments, Polar, LemonSqueezy, Creem and RevenueCat. Read-only keys where the provider allows. LemonSqueezy, Creem and RevenueCat add a webhook.

HostedAdd this tag to your site's head.

<script defer src="https://app.virling.com/v.js" data-site="yoursite.com"></script>
How to install

Cookieless mode sets no cookie, but then payments cannot be linked to visits.

06/for agencies

Send every client the number they care about.

A weekly report under your brand, every Monday, showing which channels brought paying customers. One account for all your clients. See Virling for agencies

Pencil drawing: client folders, an envelope with an orange wax seal and a calendar with Monday circled
07/a note from the founders

Day one, in public.

We're Deven and Rahul. Virling is early, and we're building it in public: the code is on GitHub from the first commit, and we post what we shipped on X every day, including what broke.

The goal is small and stubborn: one honest number for every channel, the money it brought. If that's what you want too, start a free trial.

Questions? Write to hello@virling.com. We read every email.

08/questions

Questions people ask.

How do I see which marketing channel brings paying customers?

Give every visitor an ID, pass that ID into checkout, and join each payment back to the visits before it. Virling does all three. Add one script tag, connect your payment provider with a read-only key, and the dashboard shows revenue and revenue per visitor for every channel, page and country.

Is there an open-source way to attribute Stripe revenue to traffic sources?

Yes. Virling is open source under AGPLv3 and runs on your own server. It reads Stripe with a restricted, read-only key and credits each payment to the visit that led to it. Dodo Payments and Polar work the same way, and LemonSqueezy, Creem and RevenueCat do too through a webhook once Virling has an https address.

Which traffic source makes money, and which only brings visitors?

Compare revenue per visitor, not visitor counts. A channel with a small share of traffic can bring most of the money. Virling puts revenue next to traffic for each source, so a launch, a post or a newsletter is judged by what it earned.

How does Virling decide which channel gets the credit?

By default, the last visit in the lookback window that was not direct. You can switch to first touch, and set the window to 30, 60, 90 or 365 days. Renewals keep the channel of the customer's first payment.

Can I self-host revenue analytics?

Yes. Virling is one Rust binary with embedded storage, for Linux, macOS or Docker. There is no Postgres, ClickHouse or Redis to run, and a backup is copying one folder. Self-hosting is free.

Do I need a cookie banner?

Virling sets one first-party cookie, and that cookie is what links a payment to the visit before it. Whether it needs a banner depends on where you and your visitors are. Cookieless mode sets no cookie, but then new payments cannot be linked to visits: they still count toward revenue, as Unattributed.

How long does switching from another tool take?

Already using a revenue analytics script? Virling accepts the same goal calls, goal attributes and visitor ID, so you swap the tag and keep your code. See Switch in two minutes.

Can I use it today?

Releases are on GitHub and run on your own server now. Hosted plans start with a 14-day free trial at app.virling.com.

Stop posting where it feels busy.
Post where buyers come from.

Start free trial

Self-hosting is free forever.