Send events from your site or systems (track API)
Last updated 14 October 2026
The track API records what people do, from anywhere that can make an HTTP request: your app, your backend, a Segment or RudderStack destination. Each event goes on the contact it is about, and counts toward anything built on events.
1. Create an API key
In Settings ▸ API & webhooks, create a key that can write. Send it with every request as Authorization: Bearer <key>.
2. Send a track call
POST /api/v1/events with a JSON body such as {"type": "track", "event": "Trial Started", "userId": "u_42", "properties": {"plan": "growth"}, "messageId": "…"}. Send up to 100 messages at once as {"batch": [ … ]}. A message you send twice with the same messageId is recognised and counted once.
3. Say who it is
Every message needs at least one of: userId (your own id for the person), anonymousId (a browser or device), an email (at the top level or in context.traits), or externalIds such as [{"source": "shopify", "id": "4412"}]. Solstral looks for the contact by the most specific one first. It never creates a contact from an event.
4. Identify people when you learn who they are
Send {"type": "identify", "anonymousId": "…", "userId": "…", "traits": {"email": "…"}} when someone signs in or signs up. Their earlier events under that browser or id then join their contact, and later ones go straight there. If nobody in the CRM matches yet, the events wait and join the contact once one is added with that address.
5. Look after your event types
Each event name appears in Settings ▸ Tracked events the first time it arrives. There you can describe it, mark which details hold personal data, say what kind of value each detail should be (a message that disagrees is refused and says which detail), and block an event you no longer want.
6. Read the answer
The response lists every message with ok, the record it was filed on (or null while the person is unknown), and for a refused one a code and a sentence saying why. One bad message never stops the rest of a batch. Tracked events count toward your plan's monthly allowance; when it is used up the whole request is refused with a 402 before anything is written.