Event and visitor functions V2
This article provides information on event and visitor functions that use the V2 runtime.
Existing event and visitor functions use the V2 runtime, which is deprecated. New functions use the V3 runtime by default. For information on functions that use the V3 runtime and converting a V2 function to V3, see Event and Visitor Functions V3 and Migrate a V2 function to the V3 runtime.
Named exports
The Tealium module exports five named exports for event and visitor functions: auth
, event
, visitor
, store
, and tealium
. Functions import these named exports as follows:
import { auth, visitor, event, store, tealium } from "tealium";
Event object
The event
object is available when a function is triggered by the event feed and contains the event data.
Property | Data Type | Description |
---|---|---|
event.id |
string | Tealium Event ID. |
event.visitor_id |
string | Tealium Visitor ID. |
event.account |
string | Tealium Account. |
event.profile |
string | Tealium Profile. |
event.data |
object | An object that contains event attribute data, such as event.data.udo.page_category or event.data.udo.order_id . |
Event object example
The following shows an example of event object data:
{
"account": "your-account",
"profile": "main",
"event_id": "run-test-event-id",
"visitor_id": "run-test-visitor-id",
"data": {
"dom": {
"viewport_height": 766,
"referrer": "",
"viewport_width": 1440,
"domain": "www.example.com",
"title": "Home Page",
"query_string": "q=help",
"hash": "",
"url": "https://www.example.com/?q=help",
"pathname": "/"
},
"udo": {
"tealium_event": "page_view",
"ut.account": "your-account",
"ut.visitor_id": "0176cb4f3482110a5ba4702e147b0006d005a065104f2",
"page_name": "Home Page",
"ut.event": "view",
"search_keyword": "help",
"ut.domain": "example.com",
"tealium_profile": "main",
"ut.version": "ut4.46.202006020705",
"tealium_session_id": "1609910608323",
"tealium_account": "your-account",
"ut.profile": "main",
},
"firstparty_tealium_cookies": {
"utag_main__sn": "12",
"utag_main_dc_visit": "12",
"utag_main_ses_id": "1609910610822",
"utag_main_dc_region": "us-east-1",
"utag_main__st": "1609913306118",
"utag_main_v_id": "0176cb4f3482110a5ba4702e147b0006d005a065104f2",
"utag_main__se": "66",
"utag_main__ss": "0",
"utag_main_dc_event": "60",
"utag_main__pn": "5"
}
},
"env": "prod",
"post_time": 1537305808000
}
Event data can be accessed in a function as follows:
const data = {};
// DOM variables are stored in event.dom
data.current_url = event?.dom?.url;
// Standard UDO event variables are stored in event.data.udo
data.session_id = event?.data?.udo?.tealium_session_id;
// First Party cookies are stored in event.firstparty_tealium_cookies
data.trace_id = event?.firstparty_tealium_cookies?.trace_id;
// Meta variables are stored in event.meta
data.meta_description = event?.meta?.description;
data.tealium_event = event?.data?.udo?.tealium_event;
data.tealium_account = event?.data?.udo?.tealium_account;
data.tealium_profile = event?.data?.udo?.tealium_profile;
Visitor object
The visitor
object is available when a function is triggered by the audience feed and contains the visitor data.
Property | Data Type | Description |
---|---|---|
visitor.metrics |
Record<string, number> | Visitor metrics. |
visitor.metrics_sets |
Tally<string, number> | |
visitor.dates |
Record<string, number> | Visitor dates. |
visitor.audiences_joined_at |
Record<string, number> | Timestamp when the visitor joined audiences. |
visitor.properties |
Record<string, any> | Visitor properties. |
visitor.properties.account |
string | Tealium Account. |
visitor.properties.profile |
string | Tealium Profile. |
visitor.properties.visitor_id |
string | Tealium Visitor ID. |
visitor.property_sets |
Set<string, any> | |
visitor.audiences |
string[] | List of joined audiences. |
visitor.badges |
string[] | List of badges. |
visitor.creation_ts |
number | Visitor creation timestamp. |
visitor.flags |
Map<string, Boolean> | |
visitor.current_visit |
Record<string, any> | Current visit object. |
visitor.current_visit.metrics |
Record<string, number> | Current visit metrics. |
visitor.current_visit.metrics_sets |
Tally<string, number> | |
visitor.current_visit.dates |
Record<string, number> | Current visit dates. |
visitor.current_visit.properties |
Record<string, any> | Current visit properties. |
visitor.current_visit.flags |
Map<string, Boolean> | Current visit flags. |
visitor.current_visit.property_sets |
Set<string, any> | Current visit property sets. |
visitor.current_visit.creation_ts |
number | Current visit creation timestamp. |
visitor.current_visit.total_event_count |
number | Current visit total event count. |
visitor.current_visit.events_compressed |
boolean | Current visit events compressed. |
Visitor object example
The following is an example of visitor object data:
{
"metrics": {
"Metric 1": 1,
"Metric 2": 2
},
"dates": {
"Date 1": 1603373790000,
"Date 2": 1603373522000,
},
"properties": {
"profile": "username",
"visitor_id": "017560818b67001bc185a07f1cd703078003405000b7e",
"account": "user-account",
},
"audiences": [
"Audience 1",
"Audience 2"
],
"badges": [
"Badge 1",
"Badge 2"
],
"creation_ts": 1603373522000,
"current_visit": {
"metrics": {
"Metric 1": 1.3,
"Metric 2": 6,
},
"dates": {
"Date 1": 1603373868000,
"Date 2": 1603373790000,
},
"properties": {
"Property 1": "Chrome",
"Property 2": "https://URL-for-website ",
},
"flags": {
"Flag 1": true,
"Flag 2": false
},
"property_sets": {
"Property Set 1": [
"Mac desktop"
],
"Property Set 2": [
"Chrome"
]
},
"creation_ts": 1603373790000,
"total_event_count": 2,
"events_compressed": false
},
"audiences_joined_at": {
"Audience 1": 1603363523014,
"Audience 2": 1603363523014
}
}
Auth object: auth.get()
Functions require authentication to access some service providers, such as Facebook or Google. For more information, see Adding an Authentication to a Function. When you add an authentication, an access token is returned.
The auth.get()
method returns a string that contains a unique auto-generated ID for the authentication token. When a function makes an HTTP request using this token ID, it is automatically replaced with the token before the request is sent.
Parameter | Data Type | Description |
---|---|---|
authName | string | Specifies the name of the authentication, which is the name entered when the authentication was added to the function. |
The following example shows how to use auth.get()
to get the token ID:
console.log(auth.get("TEST_AUTH"));
Tealium object: sendCollectEvent()
The sendCollectEvent()
method sends an event to Tealium Collect HTTP API and returns a string.
Parameter | Data Type | Description |
---|---|---|
event | EventsClientEventObject | An event object to send to Tealium Collect HTTP API. |
account | string | Optional. If specified, replaces the value of event.tealium_account. |
profile | string | Optional. If specified, replaces the value of event.tealium_profile. |
dataSourceId | string | Optional. If specified, replaces the value of event.tealium_datasource. |
The Response
interface of the Tealium Collect HTTP API represents the response to a request. The Response
model is the same as for fetch
API, except that the URL is not available in the result from the collect client.
Sending an event to Tealium Collect
The following example shows how to send an event to the Tealium Collect HTTP API.
import {event, tealium} from 'tealium';
var newEvent = {‘key’: ‘value’};
tealium.sendCollectEvent(newEvent, 'newAccount', 'newProfile', 'datasourceId')
.then(response => {
if (!response.ok) {
throw new Error(`Network response was not ok. Status code: ${response.status}.`);
}
console.log('Status code:', response.status);
return response.text();
})
.then(data => console.log('Result:', data))
.catch(error => console.error('Error:', error.message));
Store object: store.get()
The store
object contains key/value pairs, referred to as global variables, that specify variables or constants that can be used in multiple functions. Global variables can be added, edited, and deleted from the Code tab of the functions code editor. Functions can retrieve the value of a global variable, but cannot modify it.
Functions can retrieve a value for a key by calling the store.get()
method and passing the key as the parameter. For more information on adding and editing global variables, see Manage global variables.
Parameter | Data Type | Description |
---|---|---|
globalParameterKey | string | Specifies the key of the global variable to get. |
For example, if you create a global variable with a key named date
, a function would retrieve the value for date
as follows:
store.get('date')
Getting an attribute name or attribute value by attribute ID
Attribute names can be changed, which can cause problems when code references attributes by name. To avoid problems with attribute names changing, you can reference attributes by ID. Event and visitor objects have a getAttributeNameById()
method that you can use to get an attribute name based on its ID. You can also get the value of an attribute using the getAttributeValueById()
method. The following example shows how this works.
If you enter the following in the code editor, when you enter the opening parenthesis, a list of attributes and associated IDs is displayed:
You can enter part of the attribute name to filter the list. When you select an attribute, its ID is added to your code after the parenthesis. The list of attributes works the same way for getAttributeValueById()
.
Using the fetch() API to make HTTP requests
The fetch API is available for functions to make HTTP requests, as shown in the following example. For more information, see Fetch.
fetch('https://restcountries.eu/rest/v2/name/usa')
.then(response => {
if (!response.ok) {
throw new Error(`Network response was not ok. Status code: ${response.status}.`);
}
return response.json();
})
.then(data => console.log('Capital:', data[0].capital))
.catch(error => console.log('Error:', error.message));
The following example shows fetching a resource from the network, returning a promise that is fulfilled when the response is available.
const fetchResponsePromise = fetch(resource [, init])
The Request interface of the Fetch API represents a resource request and is defined as follows:
const myRequest = new Request(input[, init]);
Functions can use the Headers interface of the Fetch API to perform various actions on HTTP request and response headers. Headers() is defined as follows:
const myHeaders = new Headers(init);
The Response interface of the Fetch API represents the response to a request and is defined as follows:
const myResponse = new Response(body, init);
The following browser-specific functionality is not supported:
- cache
- credentials
- referrer
- referrerPolicy
- signal
- keepalive
- redirect
- mode
Using URLSearchParams methods to build a URL query string
The URLSearchParams interface defines utility methods to work with the query string of a URL. This example shows using URLSearchParams to build a query string for a URL.
function jsonToURLSearchParams(data) { const params = new URLSearchParams(); buildURLSearchParams(params, data); return params;}function buildURLSearchParams(params, data, parentKey) {
if (data && typeof data === 'object' && !(data instanceof Date)) {
Object.keys(data).forEach(key => {
buildURLSearchParams(params, data[key], parentKey ? `${parentKey}[${key}]` : key);
});
} else {
const value = data == null ? '' : data;
params.append(parentKey, value);
}
}
This page was last updated: July 21, 2023