Server-side events API
Send pageviews and events from your server or app backend: pages without JavaScript, APIs, feeds and background jobs.


What it does
POST /api/v1/events with a “Send events” key that belongs to one site. Each request carries one event or up to 20, each with the page address and, for a custom event, its name and a short property. They appear in the same dashboard, goals and funnels as browser hits.
Why it matters
Some things never run a browser script: an API call, an RSS feed, a server-rendered page for visitors who block scripts, an order confirmed in a background job. The API counts them with the same privacy rules as the tracker.
How to use it
- In Settings → API keys, choose “Send events only”, pick the site and create the key. Keep it on your server.
- POST JSON to /api/v1/events with Authorization: Bearer and your key: {"url": "/pricing"} for a pageview, or add "name" and "prop" for an event. Send {"events": [...]} for up to 20 at once.
- To join the visitor’s browser visit, add their "ip" and "user_agent"; neither is stored. Read the reply: each event is counted, dropped (bot, dnt, over_limit) or rejected with a message.
curl -X POST https://quietstats.co.uk/api/v1/events \
-H "Authorization: Bearer qs_…" -H "Content-Type: application/json" \
-d '{"url": "/api/orders", "name": "Order placed", "prop": "plan: large"}'Replace YOUR_SITE_ID with the ID shown on your site’s Manage page.
How it works
- Create a “Send events” key for one site in Settings → API keys. It can send but can’t read any stats.
- Send url (an address on your site or a path) and, for a custom event, name and prop. Leave name out for a pageview.
- To join the same visit as the browser, pass the visitor’s ip and user_agent: quietstats makes the same daily hash the tracker makes and stores neither. Or pass a visitor_key of your own (hashed with the day’s salt), or nothing to count totals only.
- Bots, Do Not Track and Global Privacy Control (dnt: true), personal data in names or props, and addresses on other domains are dropped. The reply lists what happened to each event.
Privacy
- Collected: Page path and utm_* tags, referrer host, country (if you send it), device, browser and OS (worked out from the user agent, which is not kept)
- Collected: Never the IP address, the user agent, query strings or your visitor_key
- No cookies, and nothing stored on the visitor’s device.
- Reports show totals only: never a visitor list, IP address or single visit.
Limits
- Up to 20 events and 32 KB per request; normal API rate limits apply
- Pageviews count towards your plan like browser pageviews
- Without ip + user_agent or a visitor_key, all server hits of a day count as one visitor
- Rows: 1 per counted event, plus 1 usage update per pageview; 0 reads of your stats
Plans
Every plan, including Free. quietstats is free during launch: the Free plan covers 1 site and 5,000 pageviews a month, and no card is needed. See pricing.
Questions
Is it the same key as the Stats API?
No. A “Send events” key can only send, and a read key can only read.
Can I backfill old data?
No. Events are counted at the time you send them. Use the import tool for history.
Will my server’s address show up as a visitor?
Only if you pass your server’s own ip and user agent. Pass the visitor’s, or a visitor_key, or nothing.