Ingestion Tokens
Create and manage tokens for sending telemetry data to Last9, including RUM and Prometheus metrics.

Ingestion Tokens authenticate your applications and services when sending telemetry data to Last9. These tokens control what data can be sent and from which origins, ensuring secure data collection.
Creating Ingestion Tokens

-
Select Token Type:
- Client: For client-based data collection (eg: RUM)
- Prometheus Remote-Write: For server-side Prometheus-compatible metrics
-
Client Type (if Client selected):
- Web Browser: browser RUM — allowlist
https://origins - Android / iOS: native mobile RUM — allowlist
android://<package>orios://<bundle-id> - React Native (Android) / React Native (iOS): React Native RUM — same
android:///ios://origins; create one token per OS - Flutter (Android) / Flutter (iOS): Flutter RUM — same
android:///ios://origins; create one token per OS
All options create the same backend token type (
client_monitoring). The platform choice only guides the origin format. See Android, iOS, React Native, and Flutter RUM docs for platform-specific setup. - Web Browser: browser RUM — allowlist
-
Set Origins (for Client tokens):
- For web apps, add the domains from which your application will send data — example:
https://www.example.com - For mobile apps, use
android://<package-name>orios://<bundle-id>instead of a domain — example:android://com.acme.myapp - For React Native and Flutter apps, create separate Client tokens for Android and iOS (one origin per token) rather than combining both origins on one token
- Multiple origins can be added to a single token for multi-domain web apps or other cases where one credential should cover several origins
- Wildcard subdomains are supported for web origins using
*.prefix (e.g.,https://*.example.com) — not applicable toandroid:///ios://origins, which must match exactly
✅ Correct Origins:https://app.example.comhttps://www.example.comhttp://localhost:3000https://*.example.com (matches any single subdomain)https://*.apps.example.com (matches subdomains of apps.example.com)https://app.*.example.com (matches app.{any}.example.com)android://com.acme.myapp (exact package name, no wildcards)ios://com.acme.myapp (exact bundle ID, no wildcards)❌ Incorrect Origins:example.com (missing protocol)app.example.com (missing protocol)https://example.* (TLD must be explicit, e.g., .com, .io)android://* (mobile origins must be an exact package name/bundle ID)Wildcard Origins
Wildcard origins allow you to match multiple subdomains with a single entry. This is useful when:
- Your application serves multiple customer subdomains (e.g.,
customer1.example.com,customer2.example.com) - You have dynamic environments that create subdomains on the fly
- You want to simplify token management across many subdomains
Wildcard Rules:
Pattern Matches Does Not Match https://*.example.comhttps://app.example.com,https://www.example.comhttps://example.com,https://sub.app.example.comhttps://*.apps.example.comhttps://prod.apps.example.com,https://dev.apps.example.comhttps://apps.example.comhttps://app.*.example.comhttps://app.staging.example.com,https://app.prod.example.comhttps://app.example.com - For web apps, add the domains from which your application will send data — example:
-
Name Your Token:
- Use a descriptive name to identify the token’s purpose
- Example: “Production RUM Token” or “Staging Web Monitoring”
-
Click CREATE TOKEN to generate your token
Client Token Security
Is the Client Token Safe to Expose?
Yes. Client tokens are specifically designed to be visible in your frontend code and are safe to include in your application bundle.
Why Client Tokens Are Safe
- Write-Only Permissions: Client tokens can only send telemetry data to Last9. They cannot read, query, or access any data from your account.
- CORS-Restricted: Tokens are restricted to the origins (domains) you configure above, preventing unauthorized websites from using your token.
- No Account Access: Client tokens cannot access your Last9 account settings, billing information, or any other sensitive data.
- Designed for Public Use: This security model is standard across the industry for frontend monitoring.
Why Not Use API Keys?
API keys have full read/write access to your entire Last9 account and should never be exposed in frontend code. Client tokens exist specifically to provide a safe way to send telemetry from browsers.
Security Best Practices
While client tokens are safe to expose, follow these practices to minimize abuse:
-
Rotate Tokens Periodically: Rotate your client tokens every 90 days as a preventive measure.
-
Restrict CORS Origins: Configure allowed origins (as shown above) to only accept data from your domains.
-
Use Different Tokens Per Environment: Use separate tokens for development, staging, and production.
-
Monitor Usage: Regularly review your usage dashboard to detect unusual patterns or potential abuse.
Handling CI/CD Security Scanners
Your CI/CD pipeline security scanners may flag client tokens as secrets. This is a false positive. To resolve:
GitGuardian / GitHub Secret Scanning
Add an exception for client tokens:
# .gitguardian.ymlpaths-ignore: - "**/*.html" - "**/rum-config.js"
allow-patterns: - "clientToken.*" - "L9RUM\\.init"Inline Comment Exception
Add security scanner directives:
// gitguardian:ignore - Public client token with write-only permissions// nosemgrep: generic.secrets.security.detected-generic-secretconst CLIENT_TOKEN = "your-token-here";Troubleshooting
Please get in touch with us on Discord or Email if you have any questions.