Docs
Docs
Install the first-party script on your origin. Cashline stores a visitor ID in localStorage — the snippet does not set cookies.
Install
Two calls. Amount is rand, not cents. Full walkthroughs: HTML · Next.js. Hub: all install guides.
<script src="https://YOUR_DOMAIN/cashline.js" data-site="cl_your_site_id"></script>
<script>
cashline('pageview');
cashline('purchase', {
amount: 199,
currency: 'ZAR',
reference: 'ORD-1042'
});
</script>Other hosts (paste the same snippet; there is no official WordPress plugin): WordPress · Webflow · Shopify · Google Tag Manager.
Pageview
Call on each view you care about. First referrer, landing page, and UTM are attached from the first visit. Last referrer and last UTM are sent from the current page.
cashline('pageview');Goal
Fire after a real signup (or any named action). The default funnel treats signup as step two. See goals and funnels.
cashline('goal', { name: 'signup' });Purchase
Fire after your store confirms an order. Amount is in major units (rand, not cents).
cashline('purchase', {
amount: 199,
currency: 'ZAR',
reference: 'ORD-1042'
});Paystack metadata
A South African SaaS should put visitor_id on Paystack initialize. Full walkthrough: Paystack visitor_id. Peach and Yoco are text notes only.
What is stored
- visitor_id — first-party, cookieless, reused across sessions
- session_id — one tab session
- first_referrer, landing_page, first UTM
- last_referrer, last UTM — current hit
Billing
Subscriptions use Paystack TEST. Starter is R149 (PLN_su9arwmqh854pjm), Growth is R299 (PLN_eizhuzd8dckw0pm). The server initializes with email + plan + attribution metadata, then verifies the reference. Configure the webhook to /api/paystack/webhook for charge.success, subscription.create, invoice.payment_failed, and subscription.disable.
Dummy R99 on /test · Subscribe · Cookieless notes · RPV · Best channel · Launch · Contact
Compare: Google Analytics · Plausible · DataFast · Simple Analytics · Umami · Pirsch