From website visits to attributed revenue
Install the script, connect your payment provider and pass visitor details to checkout. Revfaro uses those signals to connect recorded payments to visits.
Set up in four steps
- 1
Add the script to your website
Paste one line into the <head> of every page. Page views, single-page navigation, outbound links and engaged time are tracked from then on.
index.html<script defer data-website-id="YOUR_SITE_ID" src="https://revfaro.com/js/script.js"></script> - 2
Connect your payment provider
Connect a Stripe, Lemon Squeezy, Polar or Dodo Payments webhook, or forward payment updates from your Telegram bot server. Other providers can send payments through the Payments API, on plans with API access.
Webhook endpointsStripe https://revfaro.com/api/webhooks/stripe/YOUR_SITE_ID Lemon Squeezy https://revfaro.com/api/webhooks/lemonsqueezy/YOUR_SITE_ID Polar https://revfaro.com/api/webhooks/polar/YOUR_SITE_ID Dodo Payments https://revfaro.com/api/webhooks/dodo/YOUR_SITE_ID Telegram relay https://revfaro.com/api/webhooks/telegram/YOUR_SITE_ID - 3
Pass the visitor to your checkout
Pass the visitor and session identifiers to checkout for matching. The script tags supported payment links automatically; configured return pages provide another matching signal.
Stripe Checkout (Node.js)await stripe.checkout.sessions.create({ // ...your options success_url: 'https://example.com/thanks?session_id={CHECKOUT_SESSION_ID}', metadata: { rf_visitor_id: cookies.get('rf_vid'), rf_session_id: cookies.get('rf_sid'), }, }); - 4
Read your revenue by source
Recorded payments appear with their matching status. Matched payments are credited to a recorded visit; unmatched payments can be checked again after you improve the setup. Add goals and funnels whenever you are ready.
Last non-direct touch attribution
For a matched payment, credit goes to the buyer's latest recorded non-direct visit. If all recorded visits are direct, the latest one receives credit.
Example
- Visit from Google, reads the comparison pageOct 18
- Visit from the LinkedIn webinar campaignOct 23
- Direct visit, pays $249Oct 27
The $249 is credited to the LinkedIn webinar campaign.
How a payment finds its visitor
Revfaro tries these signals in order. Matched payments show the method used; payments without enough evidence remain unmatched.
- 1
Checkout metadata
The visitor and session identifiers passed to checkout, or added by the script to a supported payment link.
- 2
Return page
A configured thank-you page carries a provider identifier, such as ?session_id=, ?checkout_id=, ?order_identifier= or ?payment_id=. The script records it to help match the payment.
- 3
Returning customer
An earlier matched payment can link a renewal or repeat purchase to the same visitor.
- 4
Identified email
The payment email matches a visitor you identified with revfaro("identify").
- 5
Checkout timing
Exactly one visitor clicked a checkout link shortly before the payment. Used only when the evidence points to one person.
Try the attribution model
Choose which visits the customer made before paying $249 and see which one receives the credit.
Where the $249 is credited
- GoogleOct 18
- LinkedIn webinarOct 23Credited $249
- DirectOct 27Pays $249
The payment happened on a direct visit, so the $249 goes to LinkedIn webinar: the last visit that came from a real source.
What counts as an event
Plans are measured in monthly events: page views, goals and outbound link clicks. Engaged-time pings and identify calls are free. Quota warning emails notify owners and admins as usage approaches the limit.
Ad blockers and proxies
An authenticated proxy on your own domain can reduce blocking. Provider webhooks run independently of the browser script, but attribution still depends on the visitor data available.
Accuracy you can explain
Known bots and automation signals are filtered. Browser restrictions can shorten cookie lifetimes; an email you explicitly identify can help match a returning customer when their cookie is unavailable.
Start measuring what every channel earns
Add your website, connect your payments and start understanding the path to a customer.