One line to start
Add t.js with your site’s publishable key. Page views, navigation in single-page apps and Web Vitals are counted from there.
- Visitors and pages, liveWho is on the site now, where they came from and what they read.
- Custom eventsSend add_to_cart or signup with one track() call.
- Real-user Web VitalsLCP, INP, CLS, FCP and TTFB at the 75th percentile.
Live now aurora.coffee
37visitors now
/shop/ethiopia-guji-hambela9Web Vitalsp75, real visitors
- LCP1.9 sGood
- INP96 msGood
- CLS0.03Good
Custom eventsthis week
add_to_cart1,184newsletter_signup312order_click86
Demo data from aurora.coffee
Track what matters
with one call
Send any event with up to 10 simple properties. Calls made before the script loads wait in a queue and are sent too.
- Do Not Track respectedDo Not Track and Global Privacy Control turn collection off. Bots are filtered on the server.
- No IP storedVisitors are counted with a hash that changes every day. The IP and the browser string are never written down.
index.html
<script defer src="https://api.manifolio.com/t.js"
data-key="mf_pk_live_your_key"></script>
<button onclick="manifolio.track('add_to_cart', { bean: 'ethiopia-guji' })">
Add to cart
</button>Forms without
a backend
Point any HTML form at Manifolio. Submissions land in an inbox for your team and can trigger a webhook.
- Spam protectionA hidden trap field, rate limits and optional Cloudflare Turnstile.
- An inbox for the teamRead, unread and spam, with the page and device each submission came from.
- CSV exportExport up to 10,000 submissions, safe to open in a spreadsheet.

A plain form
is enough
No server code and no plugin. The form appears in the admin with its first submission.
- Back to your siteAdd _redirect to send people to a thank-you page after they submit.
- A webhook per submissionForward each submission to your CRM or email tool with form.submitted.
contact.html
<form method="post"
action="https://api.manifolio.com/v1/forms/contact?key=mf_pk_live_your_key">
<input name="email" type="email" required>
<textarea name="message" required></textarea>
<input name="_gotcha" type="text" hidden>
<button>Send</button>
</form>