POST /public/events takes the same payload and follows the same rules as POST /v1/events. The difference is that it also accepts a tracking token, so a web page can call it. Unlike /v1/events, email and contactId are optional here. An event without either is stored anonymously.
- CORS is open (
Access-Control-Allow-Origin: *).
- If a token has allowed domains, a browser request from any other
Origin answers 403. Subdomains of an allowed domain pass. A request with no Origin header, such as one from a server, is accepted.
- The limit is 100 requests/minute per workspace, and bodies are capped at 64 KB.
- The response is
{ id, status }, where status is "recorded" (201) or "duplicate" (200).
With track.js
After identify(), track.js adds email to every event and goal it sends from that page. A goal can name its own contact with { email }, and ICTrack.reset() stops sending the email. Nothing is stored between pages, so call identify() on each page load.
Direct call
track.js also sends anonymous pageview and time-on-page beacons for web analytics. The endpoint behind those beacons is part of the script’s own protocol and is not a public API. Use track.js for page analytics, and use this endpoint for events.