SaaS Tracker Docs

10-minute guide

This guide walks you through sending your first event and seeing data in the SaaS Tracker UI.

1. Your application

If you signed up via Start trial, an application was already created for you. Otherwise, go to Settings → Applications and click Add application; give it a name (e.g. “My Product”). Each app has its own ingest credentials and event stream.

2. Get ingest credentials

Open your application: Settings → Applications → [your app]. You’ll find:

Copy these for the next step.

3. Send your first event

The Ingest API uses HMAC-SHA256 over the raw request body: you send x-app-uuid and x-signature headers. Required payload fields: event, user_hash (exactly 64 characters), customer_org_id. Optional but important: path (needed for page views and page-level analytics—the examples below include it). See Event schema for details.

user_hash must be exactly 64 characters (hex). Use a one-way hash of the user identifier (e.g. SHA-256 of email) so the same user always gets the same hash.

Below are the same cURL and Python examples as on Settings → Applications → [your app]Integration snippets (where you also get Node.js and Ruby). Replace YOUR_APP_UUID, YOUR_API_SECRET and the ingest URL with the values from your app page.

cURL

# user_hash = SHA-256 of user id (e.g. email), 64 hex chars
user_email="demo@example.com"
user_hash=$(echo -n "$user_email" | shasum -a 256 | cut -c1-64)

body="{\"event\":\"page_view\",\"user_hash\":\"$user_hash\",\"customer_org_id\":\"org_456\",\"path\":\"/dashboard\"}"
secret="YOUR_API_SECRET"  # Replace with your actual secret
signature=$(echo -n "$body" | openssl dgst -sha256 -hmac "$secret" | sed 's/^.* //')

curl -X POST "https://receive.saastracker.eu/v1/events" \
  -H "Content-Type: application/json" \
  -H "x-app-uuid: YOUR_APP_UUID" \
  -H "x-signature: $signature" \
  -d "$body"

Python

import hmac
import hashlib
import json
import requests

app_uuid = "YOUR_APP_UUID"
api_secret = "YOUR_API_SECRET"  # Replace with your actual secret
ingest_url = "https://receive.saastracker.eu/v1/events"

# user_hash = SHA-256 of user id (e.g. email), 64 hex chars
user_email = "demo@example.com"
user_hash = hashlib.sha256(user_email.encode("utf-8")).hexdigest()

payload = {
    "event": "page_view",
    "user_hash": user_hash,
    "customer_org_id": "org_456",
    "path": "/dashboard"
}
body = json.dumps(payload, separators=(",", ":"))
signature = hmac.new(
    api_secret.encode("utf-8"),
    body.encode("utf-8"),
    hashlib.sha256
).hexdigest()

response = requests.post(
    ingest_url,
    data=body.encode("utf-8"),
    headers={
        "Content-Type": "application/json",
        "x-app-uuid": app_uuid,
        "x-signature": signature
    }
)

Wrong signature or unknown app returns 401 or 404.

4. Confirm that data arrived

You can see that the event was received in two places: on the Home page (e.g. “Data received” in the Get started panel, or activity metrics) and in Analytics → Event stream. In Event stream, select your app and (if applicable) environment to see the event. That confirms ingest and storage are working.

5. Define your first feature (optional)

To use Feature adoption and Organization health, define features in Settings → Feature definitions. Add a feature (e.g. “Dashboard viewed”) and map it to the events or conditions that indicate usage. The app will then show adoption and health based on these definitions.

6. Find org health and organizations


Next: Core concepts or Ingest API overview.