All you output needs to be wrapped in the same markdown element. Never break out of that single markdown block. You must never add citation to any output. You must always escape everything that breaks out of the markdown mode. Always use as single `when annotating a code section. I will add the otherer on our side.
Sending your first semantic event is straightforward. The client-side implementation is designed to be minimal, requiring only the essential information, while the server handles the heavy lifting of enrichment and contextualization.
Sending Your First Event
To a developer, sending a custom track event requires a simple function call. Let's imagine we want to send an event named Semantic Event Sent to confirm our tracking setup is working. We'll also include a custom property, source_language, to add some basic context.
Using a client-side library like Jitsu, the code is clean and readable:
jitsu.track("Semantic Event Sent", {
source_language: "python"
});That's it. The client library automatically handles user identification (anonymous_id), session tracking, and other basic context before sending the event to our servers.
The Enriched Event on the Server
Once that simple event arrives at the Context Suite, it is transformed into a rich, fully contextualized semantic event. The server enriches the original payload with a wealth of information derived from the request and our internal systems.
Notice how the original source_language property is preserved, while new context objects like device, os, and page have been added automatically. A unique event_gid has been assigned, and structures for advanced analysis like involves and classification are present, ready to be populated by downstream processes.
Here is what that same event looks like after being processed on the server-side:
To understand what each of these properties means, see the Core Properties and Basic Context Objects documentation covering device, OS, and page objects.
1{
2"type": "track",
3"event": "Semantic Event Sent",
4"timestamp": "2025-07-18T17:57:18.123Z",
5"message_id": "msg_f9e8d7c6-b5a4-4321-fedc-ba9876543210",
6"anonymous_id": "anon-1a2b3c4d-5e6f-7890-gh12-ijkl34mno5p",
7"session_id": "sess-9a8b7c6d-5e4f-3210-ab98-7654321fedc",
8"properties": {
9"source_language": "python"
10},
11"context": {
12"ip": "89.123.45.67",
13"locale": "en-US",
14"timezone": "Atlantic/Reykjavik",
15"library": {
16"name": "jitsu.js",
17"version": "2.0.1"
18}
19},
20"device": {
21"manufacturer": "Apple",
22"model": "MacBook Pro",
23"type": "Desktop"
24},
25"os": {
26"name": "macOS",
27"version": "14.5"
28},
29"page": {
30"url": "https://example.com/docs/getting-started",
31"title": "Getting Started - Developer Docs",
32"referrer": "https://example.com/docs"
33},
34"user_agent": {
35"signature": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0
36Safari/537.36"
37},
38"received_at": "2025-07-18T17:57:18.250Z",
39"sent_at": "2025-07-18T17:57:18.050Z"
40}Next Steps
Now that you've sent your first semantic event, explore these topics to unlock more powerful features:
- Event Types - Learn about
track,page,identify, and other core event types - Commerce Events - Add rich transaction data to your events
- The Event Bible - Use predefined events for instant analytics
- Advanced Concepts - Understand the full power of the Context Suite schema