Asynchronous Variables
Asynchronous Variables
Asynchronous Variables are a special type of client-side variable in JENTIS that gather information asynchronously, typically from third-party sources such as APIs or tracking pixels.
Key Characteristics
Execution is asynchronous and may take up to 2 seconds.
The entire state execution is paused until all asynchronous variables either:
Return a value via callback, or
Hit the timeout limit.
Client-Tags that rely on asynchronous variables are also paused until those variables are resolved.
When to Use
Use asynchronous variables when you need to fetch data dynamically from external sources before continuing the tracking execution.
Potential Use Cases:
Retrieve a third-party cookie value or identifier from a pixel.
Wait for external data before sending it to the JENTIS Environment.
How It Works
To define an asynchronous variable, your variable function must include a call to:
this.sendHTTPRequest(...)
When this function is detected, the variable is automatically treated as asynchronous.
To complete the variable evaluation, you must call:
args.callback(returnValue);
This returns the value and resumes state and tag execution.
Function: sendHTTPRequest
sendHTTPRequest
Signature
this.sendHTTPRequest(config: {
url: string;
method: string;
contentType?: string;
withCredentials?: boolean;
data?: string | object;
}, callback: (response: any) => void): void
Parameters
url
(string
, required): The endpoint to which the HTTP request will be sent.method
(string
, required): The HTTP method (e.g.,"GET"
,"POST"
).contentType
(string
, optional): MIME type of the request body (e.g.,"application/json"
or"text/plain"
).withCredentials
(boolean
, optional): Whether or not to send credentials like cookies.data
(string | JSON
, optional): Payload to be sent with the request (forPOST
, etc.).
Return Value
The callback function receives the parsed HTTP response as its parameter.
Example: Asynchronous Variable Fetching a Third-Party ID
function(args) {
this.sendHTTPRequest({
url: "https://track.adform.net/Serving/Cookie/?adfaction=getjs;adfcookname=uid",
method: "GET",
contentType: "text/plain",
withCredentials: true
},
function(res) {
args.callback(res.adform_id); // Return the ID from Adform
}
);
}
In this example:
The Adform pixel is queried for a user ID.
Once the ID is retrieved, it’s returned via
args.callback
.The variable resolves, and JENTIS continues state and tag processing.
Execution Flow
Website (with JENTIS)
↓
Trigger fires state with async variable
↓
State execution pauses
↓
Asynchronous variable sends request via `sendHTTPRequest`
↓
Waits up to 2 seconds for response
↓
Callback received (or timeout)
↓
State and client-tags resume
↓
Data is sent to JENTIS Environment
Notes
Always ensure that
args.callback(...)
is called; otherwise, the variable will timeout.Avoid long-running operations to maintain performance.
Only use asynchronous variables when absolutely necessary, as they delay the full data submission process.
Asynchronous variables are powerful tools that let you enrich your tracking setup with dynamic, external data—while still ensuring proper execution flow and consent handling through the JENTIS system.
Last updated
Was this helpful?