{"id":8473,"date":"2025-06-30T14:41:06","date_gmt":"2025-06-30T14:41:06","guid":{"rendered":"https:\/\/pros.com\/learn\/?p=8473"},"modified":"2025-08-01T16:34:44","modified_gmt":"2025-08-01T16:34:44","slug":"implement-event-tracking-for-airmodules-airtrfx","status":"publish","type":"post","link":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/","title":{"rendered":"How to implement event tracking for airModules and airTRFX"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div><p><strong>Guide for Custom Data Layer + Event Tracking<\/strong><\/p>\n<p>Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript.<\/p>\n<p>There are two data layers:<\/p>\n<ul>\n<li>airTRFX dataLayer<\/li>\n<li>airModules dataLayer<\/li>\n<\/ul>\n<p>For airModules embedded in iframes, the EM.context can be utilized to create custom data layers and trigger events.<\/p>\n<p>In this guide:<\/p>\n<ul>\n<li><a href=\"#heading-0\">airTRFX dataLayer<\/a><\/li>\n<ul class=\"toc\">\n<li><a href=\"#heading-1\">How to find the EM dataLayer<\/a><\/li>\n<\/ul>\n<li><a href=\"#heading-2\">airModules dataLayer<\/a><\/li>\n<ul class=\"toc\">\n<li><a href=\"#heading-3\">Events included in the airModules dataLayer<\/a><\/li>\n<li><a href=\"#heading-4\">How to find the airModules dataLayer<\/a><\/li>\n<\/ul>\n<li><a href=\"#heading-5\">EM.context<\/a><\/li>\n<ul class=\"toc\">\n<li><a href=\"#heading-6\">How to find the EM.context<\/a><\/li>\n<\/ul>\n<li><a href=\"#heading-7\">Implementing Event Tracking in GTM<\/a><\/li>\n<ul class=\"toc\">\n<li><a href=\"#heading-8\">Browser Extension to Review the Custom Data Layer<\/a><\/li>\n<li><a href=\"#heading-9\">Analyze your events in GA4<\/a><\/li>\n<\/ul>\n<li><a href=\"#heading-10\">Creating a new dataLayer object using the EM.dataLayer<\/a><\/li>\n<\/ul>\n<h2 id=\"heading-0\">airTRFX dataLayer<\/h2>\n<p>The\u202fairTRFX dataLayer\u202fincludes page information on every airTRFX page.<\/p>\n<ul>\n<li style=\"font-weight: bold;\"><strong><a href=\"https:\/\/github.com\/EveryMundo\/emDataStandards\/blob\/master\/dataLayer\/airtrfx.datalayer.json\" target=\"_blank\">Airlines<\/a><\/strong><\/li>\n<li style=\"font-weight: bold;\"><strong><a href=\"https:\/\/github.com\/EveryMundo\/emDataStandards\/blob\/master\/dataLayer\/airtrfx.property.datalayer.json\" target=\"_blank\">Hospitality<\/a><\/strong><\/li>\n<\/ul>\n<h3 id=\"heading-1\">How to find the EM dataLayer<\/h3>\n<p>Type <em>EM.dataLayer<\/em> in the Console on any airTRFX page:<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png\" width=\"870\" height=\"431\" alt=\"EM.dataLayer image\"><\/p>\n<p>The variable values within the EM.dataLayer will vary based on the airTRFX page viewed. These variables are dynamically populated to ensure the data corresponds to the page currently being accessed.<\/p>\n<h2 id=\"heading-2\">airModules dataLayer<\/h2>\n<p>The <strong>airModules dataLayer<\/strong>\u202fis a data structure that gets updated with every viewable impression and module interaction.\u202fThis means that each airModule will fire a dataLayer with relevant information to the interaction in an event format.<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/EveryMundo\/emDataStandards\/blob\/master\/dataLayer\/airmodules.datalayer.js\" target=\"_blank\">Airlines<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/EveryMundo\/emDataStandards\/blob\/master\/dataLayer\/airmodules.property.datalayer.js\" target=\"_blank\">Hospitality<\/a><\/li>\n<\/ul>\n<p>Please reference the Open Source Github Project <a href=\"https:\/\/github.com\/EveryMundo\/emDataStandards\" target=\"_blank\">emDataStandards<\/a> for more details about the meaning of each field. <\/p>\n<h3 id=\"heading-3\">Events included in the airModules dataLayer<\/h3>\n<p>Review the types of events being tracked for each airModule in the <a href=\"https:\/\/www.npmjs.com\/package\/@everymundo\/airmodules-event-datalayer#types-of-events\" target=\"_blank\" rel=\"noopener\">developer documentation<\/a> as the list is every growing with new products and features released all the time.<\/p>\n<h3 id=\"heading-4\">How to find the airModules dataLayer<\/h3>\n<p><strong>1. Interact with any airModule<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/2._find_airModules_dataLayer_image_1_1_kniprn-14.png\" width=\"870\" height=\"410\" alt=\"airModules datalayer image\"><\/p>\n<p><strong>2.\u202fOpen developer tools and type\u202fdataLayer in Console on any airTRFX Page<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/3._Find_airModules_data_Layer_image_2_1_qwf0hg-14.png\" width=\"870\" height=\"273\" alt=\"airModules datalayer image\"><\/p>\n<p><strong>3. Every dataLayer will be displayed. The airModules dataLayer scripts have an event format.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/4._Find_airModules_dataLayer_image_3_1_bsq7ut-14.png\" width=\"870\" height=\"450\" alt=\"airModules datalayer image\"><\/p>\n<p><strong>4. (Optional) To check FSI events dataLayer<\/strong><\/p>\n<p>FSI events will redirect the user to the Internet Booking Engine making it harder to see the FSI dataLayer. So, in addition to the steps above, before doing the FSI, run this in the console:<\/p>\n<p><code>window.onbeforeunload = function (e) { e = e || window.event; return ''; }<\/code><\/p>\n<p>That&#8217;ll prompt a popup to appear asking if you want to change pages. Just click &#8220;Cancel&#8221; and you should be able to see the details.<\/p>\n<h2 id=\"heading-5\">EM.context<\/h2>\n<p>All the available parameters of the EM.context can be found in the following link: https:\/\/github.com\/EveryMundo\/emDataStandards\/blob\/master\/dataLayer\/EM.context.json<\/p>\n<h3 id=\"heading-6\">How to find the EM.context<\/h3>\n<p><strong>1. Go to the URL where the iframed module is placed and open \u2018Console\u2019 from Google Developer Tools.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/5._Find_EM.context_image_1_1_jypdnj-12-scaled.png\" width=\"870\" height=\"329\" alt=\"Finding EM.context image\"><\/p>\n<p><strong>2. In \u2018Console&#8217; access the iFrame using the \u2018JavaScript context\u2019:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/6._Find_EM.context_image_2_1_urwhjk-9-scaled.png\" width=\"870\" height=\"482\" alt=\"Finding EM.context image\"><\/p>\n<p><strong>3. Once the iFrame has been accessed, type \u2018EM.context\u2019:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/7.-Find-EM.jpg\" width=\"870\" height=\"477\" alt=\"Finding EM.context Image\"><\/p>\n<h2 id=\"heading-7\">Implementing Event Tracking in GTM<\/h2>\n<p>Event tracking has to be done through a TMS. In this example, we will use GTM and GA4 implementation. GTM is the most used TMS in the airline industry and GA4 is the newest version of Google Analytics.<\/p>\n<p><strong>1. Create a \u2018Custom Event\u2019 trigger<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/8.-event-tracking-image-1-1.png\" width=\"870\" height=\"1192\" alt=\"Create a \u2018Custom Event\u2019 trigger\"><\/p>\n<p>Once the \u2018Custom Event\u2019 trigger type is selected, type the name of the event in the \u2018Event name\u2019 field. For this example, we will use the \u2018fsi\u2019 event. The trigger must fire in all custom events.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/9.-event-tracking-image-1.2-1.png\" width=\"870\" height=\"287\" alt=\"Event Tracking Image\"><\/p>\n<p><strong>2. Create a GA4 event tag<\/strong><\/p>\n<p><strong><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/10.-event-tracking-image-2-1.png\" width=\"870\" height=\"1091\" alt=\"Event Tracking Image\"><\/strong><\/p>\n<ul>\n<li>Select your GA4 Configuration Tag and name it \u2018fsi\u2019<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/11.-event-tracking-image-2.2-1.png\" width=\"870\" height=\"337\" alt=\"Event Tracking Image\"><\/p>\n<ul>\n<li>Finally, add the \u2018fsi\u2019 trigger to the tag<\/li>\n<\/ul>\n<p><strong><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/12.-Event-tracking-image-2.3-1.png\" width=\"870\" height=\"155\" alt=\"Event Tracking Image\"><\/strong><\/p>\n<p><strong>3. (Optional) Add the airModules dataLayer\u2019s variables to the \u2018Event Parameters\u2019 list as dataLayer variables to implement custom dimensions in your GA4 account<\/strong><\/p>\n<p><strong><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/13.-event-tracking-image-3-1.png\" width=\"870\" height=\"725\" alt=\"Event Tacking image\"><\/strong><\/p>\n<ul>\n<li style=\"font-weight: bold;\"><strong>Create a \u2018Custom JavaScript\u2019 Variable<\/strong><\/li>\n<\/ul>\n<p>The naming convention of the variables in GTM can be defined by the Analytics Manager but we recommend the following naming convention:<\/p>\n<p style=\"color: #0000ff;\">EM dataLayer &#8211; {{section}} &#8211; {{variable}}<\/p>\n<p><strong>Example:<\/strong> EM dataLayer &#8211; page &#8211; typeName<\/p>\n<p>The intention of this naming convention is to have order in GTM and avoid confusion when using the variables across tags.<\/p>\n<ul>\n<li style=\"font-weight: bold;\"><strong>Select \u2018Custom JavaScript\u2019 as variable type<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/14.-event-tracking-image-3.2-1-scaled.png\" width=\"870\" height=\"445\" alt=\"Event Tracking Image\"><\/p>\n<ul>\n<li style=\"font-weight: bold;\"><strong>Insert JavaScript Function<\/strong><\/li>\n<\/ul>\n<p>Insert the following function in the empty space (in this example we will target the pageType variable):<\/p>\n<p><code>function(){return EM.dataLayer[0].page.typeName;}<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/15.-event-tracking-image-3.3-1-scaled.png\" width=\"870\" height=\"436\" alt=\"Event Tracking Image 3\"><\/p>\n<ul>\n<li>Add the Custom Javascript variables as parameter values to the custom event<\/li>\n<\/ul>\n<h3 id=\"heading-8\">Browser Extension to Review the Custom Data Layer<\/h3>\n<p><a href=\"https:\/\/chromewebstore.google.com\/detail\/adswerve-datalayer-inspec\/kmcbdogdandhihllalknlcjfpdjcleom\" target=\"_blank\" rel=\"noopener\">Adswerve &#8211; dataLayer Inspector+ (google.com)<\/a><\/p>\n<h3 id=\"heading-9\">Analyze your events in GA4<\/h3>\n<p>Access your GA4 account and go to Reports &gt; Engagement &gt; Events<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/16.-analyze-events-image-1-1-scaled.png\" width=\"870\" height=\"1604\" alt=\"GA4 Events\"><\/p>\n<p>Select the \u2018fsi\u2019 event to analyze the data collection<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/17.-analyze-events-image-2-1-scaled.png\" width=\"870\" height=\"1608\" alt=\"\u2018fsi\u2019 event\"><\/p>\n<p>(Optional) If \u2018Event Paramters\u2019 were added to the tag in GTM the Custom Dimensions will have to be set up in GA4 as well. To do this go to Configure &gt; Custom Dimensions. In this section click on \u2018Create custom dimension\u2019 and name the parameter you wish to start tracking.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/18.-analyze-events-image-3-1-scaled.png\" width=\"870\" height=\"402\" alt=\"GA4 Custom Dimensions\"><\/p>\n<h2><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/20.-analyze-events-image-3.1-1-1.png\" width=\"870\" height=\"340\" alt=\"Analyze Events Image 3.1\"><\/h2>\n<h2 id=\"heading-10\">Creating a new dataLayer object using the EM.dataLayer<\/h2>\n<p>For this example, we will use the EM.dataLayer to populate Tealium\u2019s utag_data object.<\/p>\n<p><strong>1. Identify the parameters needed in the script<\/strong><\/p>\n<p>The parameters that will use JavaScript will be those that need dynamic values. For example:<\/p>\n<p><code><br \/>\n&lt;script&gt;<br \/>\nvar utag_data = {<br \/>\ndevice_category: \"\",<br \/>\nsite_edition: \"\",<br \/>\nsite_language: \"\",<br \/>\nsite_market: \"\"<br \/>\n};<br \/>\n&lt;\/script&gt;<br \/>\n<\/code><\/p>\n<p><strong>2. Use JavaScript to map the parameters from the EM.dataLayer<\/strong><\/p>\n<p>The variables in the EM.dataLayer can be accessed using JavaScript paths:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/21.-create-new-dataLayer-image-1-1.png\" width=\"870\" height=\"471\" alt=\"variables in the EM.dataLayer\"><\/p>\n<table style=\"width: 103.452%;\">\n<tbody>\n<tr>\n<th style=\"width: 16.9083%;\">Data Element<\/th>\n<th style=\"width: 39.7778%;\">EM.dataLayer JavaScript<\/th>\n<th style=\"width: 43.2462%;\">EM.context JavaScript<\/th>\n<\/tr>\n<tr>\n<td style=\"width: 16.9083%;\">device_category<\/td>\n<td style=\"width: 39.7778%;\">EM.dataLayer[0].device.category<\/td>\n<td style=\"width: 43.2462%;\">EM.context.audience.device_category<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 16.9083%;\">site_edition<\/td>\n<td style=\"width: 39.7778%;\">EM.dataLayer[0].page.siteEdition<\/td>\n<td style=\"width: 43.2462%;\">EM.context.geo.language.site_edition<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 16.9083%;\">site_language<\/td>\n<td style=\"width: 39.7778%;\">EM.dataLayer[0].page.languageIsoCode<\/td>\n<td style=\"width: 43.2462%;\">EM.context.geo.language.lang<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 16.9083%;\">site_market<\/td>\n<td style=\"width: 39.7778%;\">EM.dataLayer[0].page.countryIsoCode<\/td>\n<td style=\"width: 43.2462%;\">EM.context.geo.language.siteEditionMarket<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>3. Insert the JavaScript paths to the TMS dataLayer object<\/strong><\/p>\n<p>Add the JavaScript paths to the corresponding variables:<\/p>\n<p><code><br \/>\n&lt;script&gt;<br \/>\nvar utag_data = {<br \/>\ndevice_category: EM.dataLayer[0].device.category,<br \/>\nsite_edition: EM.dataLayer[0].page.siteEdition,<br \/>\nsite_language: EM.dataLayer[0].page.languageIsoCode,<br \/>\nsite_market: EM.dataLayer[0].page.countryIsoCode<br \/>\n};<br \/>\n&lt;\/script&gt;<br \/>\n<\/code><\/p>\n<h3>TMS Tag Example<\/h3>\n<p>In GTM, the dataLayer script will be added to a Custom HTML tag. The tag should look like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/22.-create-new-dataLayer-image-2-1.png\" width=\"870\" height=\"494\" alt=\"dataLayer script added to Custom HTML Tag\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Guide for Custom Data Layer + Event Tracking Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript. There are two data layers: airTRFX dataLayer airModules dataLayer For airModules embedded in iframes, the EM.context can be [&hellip;]<\/p>\n","protected":false},"author":85,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":true,"footnotes":""},"categories":[10],"tags":[195,46],"class_list":["post-8473","post","type-post","status-publish","format-standard","hentry","category-product-solution-information","tag-hide-date","tag-language-english"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to implement event tracking for airModules and airTRFX | AI-powered airline retailing and offer management platform<\/title>\n<meta name=\"description\" content=\"Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript.\" \/>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to implement event tracking for airModules and airTRFX | AI-powered airline retailing and offer management platform\" \/>\n<meta property=\"og:description\" content=\"Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/\" \/>\n<meta property=\"og:site_name\" content=\"PROS Resources Center\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/PROSInc\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-30T14:41:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-01T16:34:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png\" \/>\n<meta name=\"author\" content=\"Hidden\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to implement event tracking for airModules and airTRFX | AI-powered airline retailing and offer management platform","description":"Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript.","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"en_US","og_type":"article","og_title":"How to implement event tracking for airModules and airTRFX | AI-powered airline retailing and offer management platform","og_description":"Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript.","og_url":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/","og_site_name":"PROS Resources Center","article_publisher":"https:\/\/www.facebook.com\/PROSInc","article_published_time":"2025-06-30T14:41:06+00:00","article_modified_time":"2025-08-01T16:34:44+00:00","og_image":[{"url":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png","type":"","width":"","height":""}],"author":"Hidden","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#article","isPartOf":{"@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/"},"author":{"name":"Hidden","@id":"https:\/\/pros.com\/learn\/#\/schema\/person\/375d6374ebf0c426293fd00b02b7c4aa"},"headline":"How to implement event tracking for airModules and airTRFX","datePublished":"2025-06-30T14:41:06+00:00","dateModified":"2025-08-01T16:34:44+00:00","mainEntityOfPage":{"@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/"},"wordCount":936,"publisher":{"@id":"https:\/\/pros.com\/learn\/#organization"},"image":{"@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#primaryimage"},"thumbnailUrl":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png","keywords":["Hide Date","language-english"],"articleSection":["Product Solution Information"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/","url":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/","name":"How to implement event tracking for airModules and airTRFX | AI-powered airline retailing and offer management platform","isPartOf":{"@id":"https:\/\/pros.com\/learn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#primaryimage"},"image":{"@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#primaryimage"},"thumbnailUrl":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png","datePublished":"2025-06-30T14:41:06+00:00","dateModified":"2025-08-01T16:34:44+00:00","description":"Customers can implement their own custom data layers and events using any tag manager and reference the fields in the standard dataLayers made available by our products using JavaScript.","breadcrumb":{"@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#primaryimage","url":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png","contentUrl":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/1._EM_dataLayer_1_qabekw-14.png","width":2560,"height":1268},{"@type":"BreadcrumbList","@id":"https:\/\/pros.com\/learn\/product-solution-information\/implement-event-tracking-for-airmodules-airtrfx\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Resources","item":"https:\/\/pros.com\/learn\/"},{"@type":"ListItem","position":2,"name":"Product Solution Information","item":"https:\/\/pros.com\/learn\/product-solution-information\/"},{"@type":"ListItem","position":3,"name":"How to implement event tracking for airModules and airTRFX"}]},{"@type":"WebSite","@id":"https:\/\/pros.com\/learn\/#website","url":"https:\/\/pros.com\/learn\/","name":"PROS Resources Center","description":"AI-powered airline retailing and offer management platform","publisher":{"@id":"https:\/\/pros.com\/learn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pros.com\/learn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/pros.com\/learn\/#organization","name":"PROS, Inc.","url":"https:\/\/pros.com\/learn\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pros.com\/learn\/#\/schema\/logo\/image\/","url":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/social-default.png","contentUrl":"https:\/\/pros.com\/learn\/wp-content\/uploads\/2025\/06\/social-default.png","width":1200,"height":675,"caption":"PROS, Inc."},"image":{"@id":"https:\/\/pros.com\/learn\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/PROSInc","https:\/\/www.instagram.com\/pros.inc\/","https:\/\/www.linkedin.com\/company\/pros\/","https:\/\/www.youtube.com\/user\/PROSpricing"]},{"@type":"Person","@id":"https:\/\/pros.com\/learn\/#\/schema\/person\/375d6374ebf0c426293fd00b02b7c4aa","name":"Hidden","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/cc39e124a9a2ab23c52f2e50209ff857d8512da38f572d0025c25556c452e0cb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/cc39e124a9a2ab23c52f2e50209ff857d8512da38f572d0025c25556c452e0cb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc39e124a9a2ab23c52f2e50209ff857d8512da38f572d0025c25556c452e0cb?s=96&d=mm&r=g","caption":"Hidden"},"url":"https:\/\/pros.com\/learn\/author\/hidden\/"}]}},"_links":{"self":[{"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/posts\/8473","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/comments?post=8473"}],"version-history":[{"count":0,"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/posts\/8473\/revisions"}],"wp:attachment":[{"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/media?parent=8473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/categories?post=8473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pros.com\/learn\/wp-json\/wp\/v2\/tags?post=8473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}