Event and visitor functions are invoked after the event or visitor is processed. You can use event and visitor functions to retrieve data from other systems, augment Tealium data, or send data to other endpoints.
This article provides details on the named exports provided for event and visitor functions, as well as information on sending an event to Tealium Collect and using the fetch API to make HTTP requests.
For information on adding authentication for an event or visitor function, see Adding an Authentication to a Function.
In this article:
Named Exports
The Tealium module exports five named exports for event and visitor functions: auth , event , visitor , store , and tealium . A function imports the 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
{ [dataKey:string]: { [attributeName:string]: string } }
An object that contains event attribute data, such as event.data.properties.page_category or event.data.dates.signup_date.
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.
Example Visitor Object Data
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
tokenKey
string
Specifies the token to get, which is the name entered when the authentication provider was added.
Tealium Object: sendCollectEvent()
The sendCollectEvent() method sends an event to Tealium Collect HTTP API and returns a string.
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 of the Tealium Collect HTTP API.
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.
Store Object: store.get()
The store.get() method fetches a global parameter value by its key.
Parameter
Data Type
Description
globalParameterKey
string
Specifies the global parameter to get.
getAttributeNameById and getAttributeValueById Methods
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() .
Sending an Event to Tealium Collect
The following example shows how to send an event to the Tealium Collect HTTP API. The response interface of the Tealium Collect HTTP API represents the response to a request. The response model is the same as for the fetch API, except that the URL is not accessible in the result from the collect client.
Example
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));
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
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);
}
}
Additional Information
About Functions
Managing Functions
Writing Functions
Data Transformation Functions
Adding an Authentication to a Function
Functions Example Code
... View more