Getting started
Create a RevKlik account, add your site, and paste one script tag: stats start flowing on the first visit.
1. Create an account
Sign up at app.revklik.com/register with an email address and password, or continue with Google. Every new account starts with a 7-day free trial of Growth, no card required. The dashboard is available in English and Bahasa Indonesia (switch with the ID/EN toggle).
2. Add your site
On the Sites page, click Add site (on a site’s dashboard, open the site picker in the top bar and choose Manage sites). Fill in:
- Name: anything that helps you recognise the site, e.g.
My blog. - Domain: e.g.
example.com. You can paste a full URL: the scheme, path, and trailing slash are stripped and the domain is lowercased. Each domain can only be added once.
Click Add site and the tracking snippet opens straight away.
3. Install the tracking snippet
The snippet is one script tag. Replace YOUR_SITE_ID with the id of your site:
<script defer data-site-id="YOUR_SITE_ID" src="https://app.revklik.com/klikapa.js"></script>The modal titled Tracking snippet · your-domain shows this tag with your site id already filled in, so copy it from there with Copy snippet. To open the modal again later, click Snippet on the site’s row in Manage sites, or Install snippet on a site card marked Not installed.
Put the tag once on every page you want to measure. The tracker follows single-page apps on its own: route changes count as pageviews.
Paste it inside the <head> of your layout or template:
<head>
<!-- ... -->
<script defer data-site-id="YOUR_SITE_ID" src="https://app.revklik.com/klikapa.js"></script>
</head>In the App Router, load it from the root layout with next/script:
import Script from "next/script";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://app.revklik.com/klikapa.js"
data-site-id="YOUR_SITE_ID"
strategy="afterInteractive"
/>
</body>
</html>
);
}Add it to the <head> of your base layout. is:inline stops Astro from
bundling the tag, so it is rendered exactly as written:
<head>
<!-- ... -->
<script is:inline defer data-site-id="YOUR_SITE_ID" src="https://app.revklik.com/klikapa.js"></script>
</head>Without editing theme files, add this to a code-snippets plugin or to your
child theme’s functions.php:
add_action('wp_head', function () {
echo '<script defer data-site-id="YOUR_SITE_ID" src="https://app.revklik.com/klikapa.js"></script>';
});In the admin, open Online Store → Themes, click the three dots on your
theme, choose Edit code, open layout/theme.liquid, and paste the tag just
before </head>:
<script defer data-site-id="YOUR_SITE_ID" src="https://app.revklik.com/klikapa.js"></script>
</head>Open Site settings → Custom code, paste the tag into Head code, save, and publish the site. Webflow only runs custom code on a Site plan that includes it.
<script defer data-site-id="YOUR_SITE_ID" src="https://app.revklik.com/klikapa.js"></script>Create a Custom HTML tag that fires on All Pages. Tag Manager runs the tag’s script itself, so the tracker is added with a small loader that sets the attributes before it starts:
<script>
(function () {
var s = document.createElement("script");
s.defer = true;
s.src = "https://app.revklik.com/klikapa.js";
s.setAttribute("data-site-id", "YOUR_SITE_ID");
document.head.appendChild(s);
})();
</script>Verify it works
Keep the modal open and visit your site in another tab. The modal shows Waiting for the first pageview… and switches to First pageview received once the first event arrives.
Content Security Policy
If your site sends a Content-Security-Policy header, allow RevKlik to load the
script and receive events:
script-src https://app.revklik.com;
connect-src https://app.revklik.com;Add the origin to the directives you already have instead of replacing them.
On a self-hosted install, use the origin that serves klikapa.js.
No data? Check
- Ad blocker or privacy extension. Some block analytics scripts. Open the site in a private window with extensions off.
- Content Security Policy. The browser console shows a blocked script or
blocked request when a CSP rule is the cause. Allow
app.revklik.comas above. - Wrong site id. The tracker does nothing without
data-site-id, and data lands in whichever site the id belongs to. Compare the id in your page source with the one in the snippet modal. - Domain mismatch. A snippet copied from another site sends its data to that site. Each domain in Manage sites has its own snippet.
- Local development. The tracker ignores
localhostand other local addresses. Adddata-track-localhost="true"to the tag to test there. - Consent gate. With
data-consent="required"set, nothing is stored or sent until your page callsklikapa.consent(true). See consent below. - Global Privacy Control or Do Not Track. The tracker honours both: a visitor whose browser sends either signal is not recorded. Your own browser may have one switched on.
Still stuck? The FAQ covers what the script collects and how data retention works.
4. Track more than pageviews
Pageviews, clicks, and scroll depth are collected automatically. For the rest:
- Goals on elements. Add
data-revklik-goal="signup"to a button or link. Extradata-revklik-goal-*attributes become properties of the goal, anddata-revklik-goal-value="19"attaches revenue. - Custom events from code.
klikapa.track("pricing_viewed", { plan: "growth" })records an event, andklikapa.conversion("purchase", 19, { plan: "growth" })records a conversion with revenue. - Funnels. Mark page sections with
data-section; see funnels. - Known visitors.
klikapa.identify({ ... })attaches contact details to a visitor. Only call it with the visitor’s consent.
5. Consent
By default the tracker starts as soon as it loads. If your audience includes residents of Indonesia, the EU, or the UK, ask first and start tracking only after the visitor agrees:
<script
defer
data-site-id="YOUR_SITE_ID"
data-consent="required"
src="https://app.revklik.com/klikapa.js"
></script>// when the visitor accepts your banner
klikapa.consent(true);
// when the visitor declines or withdraws
klikapa.consent(false);Until klikapa.consent(true) runs, nothing is stored in the browser and nothing
is sent. The grant is remembered, so later page loads resume without calling it
again. klikapa.consent(false) clears the visitor ID and stops sending. Read the
full guidance on privacy and consent.
6. Exclude your own devices
Inside Manage sites, expand a site to find its exclusions:
- Exclude this device: stops tracking on the browser you develop from (it is matched by a keyed hash of IP, browser, and language). Run this once on every device you work from.
- Purge my past visits: deletes events, sessions, and visitor profiles already recorded for this device.