Skip to content

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. 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. 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 endpoints
    Stripe          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. 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. 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

  1. Visit from Google, reads the comparison pageOct 18
  2. Visit from the LinkedIn webinar campaignOct 23
  3. 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. 1

    Checkout metadata

    The visitor and session identifiers passed to checkout, or added by the script to a supported payment link.

  2. 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. 3

    Returning customer

    An earlier matched payment can link a renewal or repeat purchase to the same visitor.

  4. 4

    Identified email

    The payment email matches a visitor you identified with revfaro("identify").

  5. 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.

Visits

The customer's visits

Switch visits on or off. The last one is where they pay $249.

Where the $249 is credited

  1. GoogleOct 18
  2. LinkedIn webinarOct 23Credited $249
  3. 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.