To set up Real-Time notifications with an Elasticsearch instance, select Elasticsearch Notification driver on the dropdown box and click on the add button.
Fields marked with * are mandatory

Configure the following parameters according to your elasticsearch set up:
When you are done, click on the create button to validate and store the configured elasticsearch integration.
At any time, you can make changes or remove the elasticsearch integrations.
To set up Real-Time notifications with a Webhook, select Webhook Notification driver on the dropdown box and click on the add button.
Fields marked with * are mandatory

Configure the following parameters according to your SIEM (should be capable of receiving http(s) requests):
When you are done, click on the create button to validate and store the configured webhook integration.
At any time, you can make changes or remove the webhook integrations.
Your endpoint receives an HTTP POST with Content-Type: application/json. The body is a single JSON object.
Top-level fields
| Field | Description |
|---|---|
message | Notification content and metadata (see below). |
client, externId, uuid, driverInstance | Internal fields. Jscrambler may use them for debugging and operational purposes; you do not need to rely on their meaning for normal integrations. |
timestamp | Unix time in milliseconds when Jscrambler delivered this notification to your endpoint (server-side). This is not the same as message.body["1"]. |
message object
| Field | Description |
|---|---|
title | Notification title (e.g. Real time notification). |
description | Human-readable text with a brief description of the problem. |
body | Object whose keys are numeric strings ("0", "1", … in JSON). Values are collected on the client side in the protected application (see payload fields below). |
clientIp | Approximate IP address associated with the client-side environment when the notification was sent. |
referer | HTTP Referer header from that request, if present; otherwise null. |
protectionId | Present when the notification is tied to a specific protection in your Jscrambler configuration. |
customLabels | Optional labels you configured for the protection, when defined; arbitrary key/value map for your own tagging. |
protectionId and customLabels appear in webhook payloads starting with Jscrambler 8.6.
These keys (0–8) are produced by the client-side application. Omitted keys are normal when the runtime has no value (for example, Node typically has no page URL; browsers often have no process version or argv).
| Key | Name (logical) | Meaning |
|---|---|---|
0 | code | Technical value Jscrambler uses for debugging and support; it has no particular meaning you need to rely on for day-to-day use. |
1 | timestamp | Client-side event time as milliseconds since Unix epoch (when the client-side application built the payload). |
2 | timezoneOffset | Local timezone offset in minutes (same semantics as JavaScript Date.prototype.getTimezoneOffset()). |
3 | platform | process.platform in Node.js, or navigator.platform in browsers when available. |
4 | userAgent | navigator.userAgent when available. |
5 | href | Current page URL (location.href) when running in a browser context. |
6 | nodeVersion | Node.js process.version when process is available. |
7 | argv | Node.js process.argv when process is available. |
8 | product | navigator.product, or a NativeScript-style hint when applicable; otherwise may be absent. |
Example (illustrative; keys depend on environment):
{
"message": {
"title": "Real time notification",
"description": "We've detected that your application ran after the allowed time period",
"body": {
"0": "j-002-00004",
"1": 1775138344451,
"2": -60,
"3": "Linux x86_64",
"4": "Node.js/22",
"6": "v22.21.1",
"7": ["/home/user/bin/node", "/home/user/app/script.js"]
},
"clientIp": "172.30.0.3",
"referer": null,
"protectionId": "<protectionId>",
"customLabels": {
"env": "prod"
}
},
"client": "<clientId>",
"externId": "<externId>",
"uuid": "<uuid>",
"driverInstance": "<driverInstanceId>",
"timestamp": 1775138345176
}