The Airbridge Web SDK not only tracks web to app conversion data, but also attribution data for the web application itself. This gives you a more extensive insight on your users' journey, especially if you are running applications on both web and mobile. Data collected from the Web SDK is then aggregated and shown on the Airbridge dashboard, where comprehensive analytics for both your web and app are provided. Raw data can also be exported in CSV format for your convenience.
Use one of the three following options to install the SDK.
Add the following code at the end of the head element.
<script>
(function(a_,i_,r_,_b,_r,_i,_d,_g,_e){if(!a_[_b]){var n=function(){var c=i_.createElement(r_);c.onerror=function(){g.queue.filter(function(a){return 0<=_d.indexOf(a[0])}).forEach(function(a){a=a[1];a=a[a.length-1];"function"===typeof a&&a("error occur when load airbridge")})};c.async=1;c.src=_r;"complete"===i_.readyState?i_.head.appendChild(c):a_.addEventListener("load",function h(){a_.removeEventListener("load",h);i_.head.appendChild(c)})},g={queue:[],get isSDKEnabled(){return!1}};_i.concat(_d).forEach(function(c){var a=c.split("."),h=a.pop();a.reduce(function(p,q){return p[q]=p[q]||{}},g)[h]=function(){g.queue.push([c,arguments])}});a_[_b]=g;0<_g?(_b=new (a_.XDomainRequest||a_.XMLHttpRequest),_i=function(){},_b.open("GET",_r),_b.timeout=_g,_b.onload=function(){n()},_b.onerror=_i,_b.onprogress=_i,_b.ontimeout=_i,_b.send()):n()}})(window,document,"script","airbridge","//static.airbridge.io/sdk/latest/airbridge.min.js","init startTracking fetchResource setBanner setDownload setDownloads openDeeplink setDeeplinks sendWeb setUserAgent setUserAlias addUserAlias setMobileAppData setUserId setUserEmail setUserPhone setUserAttributes clearUser setDeviceAlias removeDeviceAlias clearDeviceAlias setDeviceIFV setDeviceIFA setDeviceGAID events.send events.signIn events.signUp events.signOut events.purchased events.addedToCart events.productDetailsViewEvent events.homeViewEvent events.productListViewEvent events.searchResultViewEvent".split(" "),["events.wait","createTouchpoint"],0);
airbridge.init({
app: '<YOUR_APP_NAME>',
webToken: '<YOUR_WEB_TOKEN>',
})
</script>
App Name
and Web SDK Token
can be found at the Airbridge dashboard → Settings → Tokens
.
It is recommended to configure protected attribution windows when measuring web to app contributions. Please refer to this guide for more information.
Install the Airbridge NPM module.
npm install airbridge-web-sdk-loader
Import airbridge
and call the airbridge.init
function.
import airbridge from 'airbridge-web-sdk-loader'
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
})
Please refer to Install SDK Using Google Tag Manager
The Airbridge web SDK works on all browsers that support ES5.
Chrome | Firefox | Safari | Internet Explorer |
---|---|---|---|
✔️ | ✔️ | ✔️ | IE 9 and above |
button.onclick = () => {
console.log(airbridge.isSDKEnabled)
}
Go to the web page where the SDK is installed, and see if airbridge.isSDKEnabled
is "true" at the developer tools console.
If you get a proper output, go to "Airbridge dashboard → Raw Data → Web Real-time Log" and make sure that "open" events are being shown.
Attention
The value of
airbridge.isSDKEnabled
will change from "false" to "true" once the web SDK is completely done loading.
User information is automatically sent upon the initialization of the SDK. User information will be stored on the browser's local storage and all subsequent events on the website will be sent with the user's information until signOut is called
.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
user: {
externalUserID: 'personID',
externalUserEmail: 'persondoe@airbridge.io',
externalUserPhone: '1(123)123-1234',
attributes: {
age_group: 30,
gender: 'Female'
},
alias: {
amplitude_device_id: '83587901-2726-4E29-ACEB-A90B0F7E75F6',
},
},
})
Attribute | Type | Description |
---|---|---|
| String | User ID |
| String | User Email |
| String | User phone number |
| Object | Custom user attributes (Custom key-value pair) |
| Object | User alias |
Use the following method to setup your own user identifiers as opposed to external identifiers. It will be stored on the browser's local storage and all subsequent events on the website will be sent with the user's information until signOut is called
.
airbridge.setUserId('654321');
airbridge.setUserEmail('user@example.com');
You may also setup user aliases that will help identity matching with third party tools (e.g. Amplitude, Braze).
airbridge.setUserAlias({
"amplitude_id": "12345678",
"braze_ext_id": "87654321"
})
airbridge.addUserAlias("amplitude_id", "12345678")
airbridge.addUserAlias("braze_ext_id", "87654321")
Additional user attributes can be used for a more accurate Multi-Touch Attribution (MTA) analysis, additional internal data analysis, and linking third-party solutions.
airbridge.setUserAttributes({
"age": 45,
"gender": "male",
"name": "Gildong Hong"
// ...
});
Make sure that your user information settings are being properly sent through the SDK.
Configure user identifier information.
Send an event using the SDK.
Click the event at "Airbridge dashboard → Raw Data → Web Real-time Logs"
Check if the user information is correctly sent under the user
block.
Setup a device alias through the Airbridge SDK. The alias will be sustained even after the website closes, unless otherwise deleted.
airbridge.setDeviceAlias('YOUR_KEY', 'YOUR_VALUE')
airbridge.removeDeviceAlias('YOUR_KEY')
airbridge.clearDeviceAlias()
Method | Description |
---|---|
| Add the key value pair to the device identifier. |
| Delete the corresponding device alias. |
| Delete all device aliases. |
Attention
Depending on the cookie's max storage time, iOS will sustain the device alias for a maximum of 7 days.
When important user actions occur, in-app events can be sent to measure the performance of each channel.
All event parameters are optional. However, more information about the event will help provide more accurate statistics.
Name: send
Field | Type | Detailed Parameter Field Name | Type | Description of Parameter |
---|---|---|---|---|
category | String | - | - | Event Name (required) |
info | Object | label | String | Event sub attribute 1 |
info | Object | action | String | Event sub attribute 2 |
value | Object | value | Number | Custom event value |
info | Object | semanticAttributes | Object | |
info | Object | customAttributes | Object | Custom event attributes |
airbridge.events.send("category", {
label: "label",
action: "action",
value: 10,
semanticAttributes: {
transactionID: "transaction_123",
},
customAttributes: {
key: "value",
}
});
Name | Field | Type | Description of Parameter |
---|---|---|---|
homeViewEvent | - | - | - |
airbridge.events.send('airbridge.ecommerce.home.viewed');
Field | Type | Description |
---|---|---|
userID | String | User's ID |
userEmail | string | User's Email |
userPhone | string | User's Phone |
attributes | object | User's Attributes |
alias | object | User's Alias |
airbridge.setUserId('ab180');
airbridge.setUserEmail('user@example.com');
airbridge.events.send('airbridge.user.signup');
Field | Type | Description |
---|---|---|
userID | String | User ID |
userEmail | String | User Email |
userPhone | String | User Phone |
attributes | Object | User Attributes |
alias | Object | User Alias |
airbridge.setUserId('ab180');
airbridge.setUserEmail('user@example.com');
airbridge.events.send('airbridge.user.signin');
Name | Field | Type | Description of Parameter |
---|---|---|---|
signOut | - | - | - |
airbridge.events.send('airbridge.user.signout');
airbridge.clearUser();
Field | Type | Detailed Parameter Field Name | Type | Description of Parameter |
---|---|---|---|---|
productListID | string | - | - | product list ID |
products | Array<Product> | - | - | product array |
products | Array<Product> | productID | string | product ID |
products | Array<Product> | name | string | product name |
products | Array<Product> | price | number | product price |
products | Array<Product> | currency | string | product currency |
products | Array<Product> | quantity | number | product quantity |
products | Array<Product> | position | number | product position |
airbridge.events.send('airbridge.ecommerce.productList.viewed', {
semanticAttributes: {
productListID: 'food',
products: [
{
productID: 'coke_zero',
name: 'Coke Zero',
price: 1.99,
currency: 'USD',
position: 1
},
{
productID: 'burger_cheese_double',
name: 'Double Cheeseburger',
price: 3.99,
currency: 'USD',
position: 2
}
]
}
});
Name: products
Type: Array<Object>
Field | Type | Description of Parameter |
---|---|---|
- | - | Product object array |
productID | string | product ID |
name | string | product name |
price | number | product price |
currency | string | product currency |
quantity | number | product quantity |
position | number | product position |
airbridge.events.send('airbridge.ecommerce.product.viewed', {
semanticAttributes: {
products: [{
productID: 'coke_zero',
name: 'Coke Zero',
price: 1.99,
currency: 'USD',
position: 1
}]
}
});
Field | Type | Detailed Parameter Field Name | Type | Description of Parameter |
---|---|---|---|---|
query | string | - | - | Search Query |
products | Array<Product> | - | - | Product Array |
products | Array<Product> | productID | string | Product ID |
products | Array<Product> | name | string | Product Name |
products | Array<Product> | price | number | Product Price |
products | Array<Product> | currency | string | Product Currency |
products | Array<Product> | quantity | number | Product Quantity |
products | Array<Product> | Position | number | Product Position |
airbridge.events.send('airbridge.ecommerce.searchResults.viewed', {
semanticAttributes: {
products: [
{
productID: 'coke_zero',
name: 'Coke Zero',
price: 1.99,
currency: 'USD',
position: 1
},
{
productID: 'burger_cheese_double',
name: 'Double Cheeseburger',
price: 3.99,
currency: 'USD',
position: 2
}
],
query: 'Search Query'
}
});
Field | Type | Detailed Parameter Field Name | Type | Description of Parameter |
---|---|---|---|---|
cartID | string | - | - | Product Cart ID |
totalValue | number | - | - | Product Total Value |
currency | string | - | - | Product Currency |
products | Array<Product> | - | - | Product Array |
productID | Array<Product> | productID | string | Product ID |
productID | Array<Product> | name | string | Product Name |
productID | Array<Product> | price | number | Product Price |
productID | Array<Product> | currency | string | Product Currency |
productID | Array<Product> | quantity | number | Product Quantity |
productID | Array<Product> | position | number | Product Position |
airbridge.events.send('airbridge.ecommerce.product.addedToCart', {
value: 13.95,
semanticAttributes: {
products: [
{
productID: 'coke_zero',
name: 'Coke Zero',
price: 1.99,
currency: 'USD',
quantity: 3,
position: 1
},
{
productID: 'burger_cheese_double',
name: 'Double Cheeseburger',
price: 3.99,
currency: 'USD',
quantity: 2,
position: 2
}
],
cartID: '73926365',
currency: 'USD'
}
});
Field | Type | Detailed Parameter Field Name | Type | Description of Parameter |
---|---|---|---|---|
inAppPurchased | boolean | - | - | Product In-App Purchased |
totalValue | number | - | - | Product Total Value |
currency | string | - | - | Product Currency |
transactionID | string | - | - | Transaction ID |
products | Array<Product> | - | - | Product Array |
products | Array<Product> | productID | string | Product ID |
products | Array<Product> | name | string | Product Name |
products | Array<Product> | price | number | Product Price |
products | Array<Product> | currency | string | Product Currency |
products | Array<Product> | quantity | number | Product Quantity |
products | Array<Product> | position | number | Product Position |
airbridge.events.send('airbridge.ecommerce.order.completed', {
value: 13.95,
semanticAttributes: {
products: [
{
productID: 'coke_zero',
name: 'Coke Zero',
price: 1.99,
currency: 'USD',
quantity: 3,
position: 1
},
{
productID: 'burger_cheese_double',
name: 'Double Cheeseburger',
price: 3.99,
currency: 'USD',
quantity: 2,
position: 2
}
],
inAppPurchased: true,
currency: 'USD',
transactionID: '16874326'
}
});
Make sure that the events are being properly sent through the SDK.
Send an event with the SDK.
Check if the event shows up at "Airbridge dashboard → Raw Data → Web Real-time Logs".
The Airbridge Web SDK enables you to provide a seamless web to app experience for your users. The below method saves developers from having to code each button separately and also makes sure that your buttons work with all major browsers.
Use the id value of your buttons to add a download function and track it's performance.
// html
<button id="app_download">Go to app</button>
// javascript
airbridge.setDownloads({
buttonID: "app_download",
// or ["app_download_1", "app_download_2", ...]
defaultParams: {
campaign: 'example_campaign',
medium: 'example_medium',
term: 'example_term',
content: 'example_content'
},
ctaParams: {
cta_param_1: '1',
cta_param_2: '2',
cta_param_3: '3',
}
});
Required
buttonID
: Values of the id
attribute of a button. Can be an array.
Optional
defaultParams
: Campaign parameters
If set, defaultParams
will be sent when the button is clicked.
Attention
Since the SDK should be responsible for sending the user to the app market, do not use
<a>
tags or theonclick
function.
Use the id value of your buttons to embed deep links and track it's performance.
setDeeplinks
allows you to customize actions for each button. Not only can you setup redirections to your deep links for each platform (OS) separately, you can override fallbacks and campaign parameters too. This allows web attributions to be properly tracked, and saves you from creating separate deep links for all the buttons on your website.
airbridge.setDeeplinks({
buttonID: "deeplinking-button-1",
// or ["deeplink-button-1", "deeplink-button-2", ...]
deeplinks: {
ios: "ablog://main",
android: "ablog://main",
desktop: "https://www.airbridge.io/blog"
},
fallbacks: {
ios: "itunes-appstore",
// itunes-appstore(default), google-play, url
android: "google-play"
// google-play(default), itunes-appstore, url
},
defaultParams: {
campaign: 'example_campaign',
medium: 'example_medium',
term: 'example_term',
content: 'example_content'
},
desktopPopUp: true
});
Required
deeplinks.ios
: The deep link to run when the button is clicked in an iOS environment. (Only deep links using schemes are allowed)
deeplinks.android
: The deep link to run when the button is clicked in an Android environment. (Only deep links using schemes are allowed)
deeplinks.desktop
: The deep link to run when the button is clicked in a desktop environment.
fallbacks.ios
: The destination for when the deep link fails in iOS.
fallbacks.android
: The destination for when the deep link fails in Android.
itunes-appstore: App's Apple AppStore page
google-play : App's Android PlayStore page
url : A http/https scheme URL
buttonID
: Values of the id
attribute of a button. Can be an array.
Optional
defaultParams
: Campaign parameters
desktopPopUp
: If set to true, deep links will run in a new window when in a desktop environment.
Caution : Since the SDK should be responsible for sending the user to the app market, do not use <a>
tags or the onclick
function.
If redirect: true
is set, the deep link will run automatically for all incoming requests that try to access the webpage.
airbridge.setDeeplinks({
buttonID: "deeplinking-button-1",
deeplinks: {
ios: "example://detail?id=1",
android: "example://detail?id=1",
desktop: "https://example.com/detail?id=1"
},
fallbacks: {
// itunes-appstore(default), google-play, url
ios: "itunes-appstore",
// google-play(default), itunes-appstore, url
android: "google-play"
},
redirect: true
});
You can open the app by calling openDeeplink
function.
airbridge.openDeeplink({
type: "redirect",
deeplinks: {
ios: "example://detail?id=1",
android: "example://detail?id=1",
desktop: "https://example.com/detail?id=1"
},
fallbacks: {
ios: "itunes-appstore",
android: "google-play"
},
});
Please use
type: "click"
when calling in a function executed through user’s action, as in onclick. Usetype: "redirect"
when opening the app directly without user’s action.
The web to app banner
is a banner that encourages web users to install apps.
airbridge.setBanner({
title: 'AirStyle',
description: 'Find your perfect style!!',
keyColor: '#00a0c6',
position: 1
});
You can change the title, description, button color and other properties of the banner.
If your ad's landing page is a website, you can use several parameters to add additional information to the URL. The parameters can be used to track the user journey to your website.
Parameter analysis can be either automatic or manual.
When the airbridge.init
method is called with the utmParsing: true
option, UTM
values are automatically stored as Airbridge campaign parameters and can be seen in the Airbridge Actuals report.
URL Parameter | Airbridge Campaign Parameter |
---|---|
utm_source | Channel ( |
utm_campaign | Campaign ( |
utm_medium | Sub Publisher ( |
utm_term | Term ( |
utm_content | Content ( |
Other UTM parameters will not be parsed if
utm_source
is missing.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
utmParsing: true,
})
The URL is the window.location.href
value.
When the init
method is called with the utmParsing: true
option, UTM
values are automatically stored as Airbridge campaign parameters and can be seen in the Airbridge Actuals report.
You can use urlQueryMapping
to automatically store other parameters. Insert key-value
pairs for urlQueryMapping
when the airbridge.init
method is called. Below are the keys you can use with Airbridge.
Parameter Name | Description |
---|---|
channel | Channel |
campaign | Campaign |
ad_group | Advertising group |
ad_creative | Advertising creative |
content | Content |
term | Keyword |
sub_id | Sub publisher |
sub_id_1 | Sub sub publisher 1 |
sub_id_2 | Sub sub publisher 2 |
sub_id_3 | Sub sub publisher 3 |
campaign_id | Campaign ID |
ad_group_id | Advertising group ID |
ad_creative_id | Advertising creative ID |
term_id | Keyword ID |
If a custom parameter such as internal_code
is used with utm_source
and utm_campaign
, the URL will be structured as below.
https://example.com/?utm_source=google&utm_campaign=jan_ua_campaign&internal_code=ABC
Below is an example of how you can map each parameter so that it shows on the Airbridge dashboard.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
urlQueryMapping: {
channel: 'utm_source',
campaign: 'utm_campaign',
sub_id_1: 'internal_code',
},
})
If a conversion happens through the above URL, the data for internal_code
will be available at "Airbridge dashboard → Actuals Report → Configuration → GroupBy → Sub Sub Publisher 1".
Attention
channel
is required for usingURLQueryMapping
. It is not working properly ifchannel
is not set.
Below is an example of how you can manually parse parameters.
Extract information from the params
object and register the information when calling the init
function.
function queryStringToJSON(url) {
if (url.search.slice !== undefined) {
var pairs = url.search.slice(1).split('&');
} else {
var pairs = url.split('?')[1].split('&');
}
var result = {};
pairs.forEach(function(pair) {
pair = pair.split('=');
result[pair[0]] = decodeURIComponent(pair[1] || '');
});
return JSON.parse(JSON.stringify(result));
}
var url = window.location.href;
var params = queryStringToJSON(url);
// initialize
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
defaultChannel: params['utm_source'],
defaultParams: {
campaign: params['utm_campaign'],
medium: params['utm_medium'],
content: params['utm_content'],
term: params['utm_term']
}
});
Name | Description |
---|---|
defaultChannel | Name of the advertiser to be recorded in all events on the web page |
defaultParams.campaign | Name of the campaign to be recorded in all events occurring on the web page |
defaultParams.medium | Advertising media to be recorded in all events occurring on the web page |
defaultParams.content | The content of the ad to be recorded in all events occurring on the web page |
defaultParams.term | The ad query that will be recorded for all events on the web page. |
Use the clearUser
method to delete User ID, email, phone, alias and attributes of a user.
airbridge.clearUser()
Hash (SHA256) user.externalUserEmail
and user.externalUserPhone
at the client level. This option will not affect user.externalUserID
and it will not be hashed.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
userHash: true, // Default false
})
Data could be lost if a redirection occurs before the event is completely sent (e.g. sending an event from a relay page). Use events.wait
to make sure the events are sent before being redirected.
Parameter | Type | Description |
---|---|---|
timeout | Number | Maximum wait time (milliseconds) |
callback | (error: string) => void | Callback for when the event is sent |
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
})
airbridge.events.send('category')
airbridge.events.wait(3000, function (error) {
location.href = 'url'
})
Use cookieWindow
to adjust your attribution window.
// Set attribution window to 1 day
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
cookieWindow: 1,
})
// Set attribution window to 720 minutes (12 hours)
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
cookieWindowInMinutes: 720,
})
If both
cookieWindow
andcookieWindowInMinutes
are set,cookieWindowInMinutes
is applied.
User tracking is done through browser cookies, which are shared between subdomains.
Set shareCookieSubdomain
as false
to stop sharing cookies between subdomains.
// initialize
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
shareCookieSubdomain: false,
})
Default value of shareCookieSubdomain is true
.
If one service uses several subdomains, true
is recommended.
If several services use several subdomains, false
is recommended.
Campaign A Tracking Link
→ https://airbridge.io
→ https://blog.airbridge.io
,
shareCookieSubdomain: true
Event on https://airbridge.io
→ Attributed to Campaign A
Event on https://blog.airbridge.io
→ Attributed to Campaign A
shareCookieSubdomain: false
Event on https://airbridge.io
→ Attributed to Campaign A
Event on http://blog.airbridge.io
→ Attributed to Default Campaign
Attention
It is not an essential setting function. Please set it up after confirming if it's a necessary function.
Opt-In is a policy that does not use user information until the user agrees.
After setting autoStartTrackingEnabled
to false
, the startTracking
function is called when you can collect events. Events are collected from the moment the startTracking
function is called.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
autoStartTrackingEnabled: false,
})
airbridge.startTracking()
The default value of autoStartTrackingEnabled
is true
.
Attention
It is not an essential setting function. Please set it up after confirming if it's a necessary function.
Opt-Out is a policy that uses user information until the user refuses.
After setting autoStartTrackingEnabled
to true
, call the stopTracking
function when events can be collected. No events are collected from the moment the stopTracking
function is called.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
autoStartTrackingEnabled: true,
})
airbridge.stopTracking()
Attention
If you want to include a custom channel tracking link to a CTA button, you cannot use the setDeeplinks function. Conversely, if you use the setDeeplinks function to create a CTA button, you cannot embed a custom channel tracking link to it.
If you are using the setDeeplinks function to implement web-to-app tracking via call-to-action buttons, such as a button that says “View in our app,” you can configure the Protected Attribution Window (PAW) to suit your needs.
The PAW is the timeframe in which the touchpoints collected by the Airbridge Web SDK are excluded from the attribution starting from the website launch. To learn more about the attribution process with different PAW configurations, refer to this article.
The default value for useProtectedAttributionWindow
is 30 minutes. If you want to customize it, set the useProtectedAttributionWindow
in the airbridge.init()
to true
and input the PAW you want in minutes. The useProtectedAttributionWindow
can be set to a maximum of 4320 (3 days).
If you don’t want to use the PAW, set the useProtectedAttributionWindow
to false
.
airbridge.init({
app: 'YOUR_APP_NAME',
webToken: 'YOUR_WEB_TOKEN',
// ...
useProtectedAttributionWindow: true,
protectedAttributionWindowInMinutes: 60,
});
Use the sendWeb
method when the user is moving to another website. If the user moves to a website that has the Airbridge Web SDK installed, Airbridge can connect the attributions for analysis.
useProtectedAttributionWindow
must be set astrue
when initializing the Airbridge SDK to connect the attributions. Please refer to Protected Attribution Window.
// Open in same window
airbridge.sendWeb("https://www.airbridge.io/blog")
// Open in new window
airbridge.sendWeb("https://www.airbridge.io/blog", function(err, res) {
window.open(res.targetUrl)
})
The Airbridge SDK can be installed using Google Tag Manager.
Follow the below steps to install the Airbridge SDK using Google Tag Manager.
Click on "New Tag" in "Workspace Overview", or select "Tag → New" in the container.
Select "Custom HTML" at "Tag Configuration → Custom Settings".
Insert the Airbridge SDK code code in the "HTML" section as shown in the picture below.
Go to "Tag Configuration → Advanced Settings → Tag firing priority" and enter a number greater than 0 (e.g. 9999).
Select "Once per page" at "Tag Configuration → Advanced Settings → Tag firing Options"
Set "Trigger" to "Pageview - DOM Ready".
Complete the tag creation and press the submit button.
Check the Airbridge dashboard under real-time logs to verify that the SDK logs are logged properly.
Follow these steps to track events using Google Tag Manager.
Click on "New Tag" in "Workspace Overview", or select "Tag → New" in the container.
Select "Custom HTML" at "Tag Configuration → Custom Settings".
Insert the code for the events you want to track in the "HTML" section as shown in the picture below.
Depending on the event, select "Unlimited", "Once per event" or "Once per page" at "Advancded Settings > Tag firing options".
Set the appropriate trigger for the event.
Complete the tag creation and press the submit button.
Check the Airbridge dashboard under real-time logs to verify that the SDK logs are logged properly.
Was this page helpful?