In collaboration with the PROS team, EveryMundo has developed a dataLayer to help airlines migrate to GA4 in a structure that will allow tracking of every possible ancillary product.

The dataLayer presented in this article is quite comprehensive; not all fields will apply to every airline. The final dataLayer structure will depend on which ancillaries the airline offers.

dataLayer Example

dataLayer Structure

The EveryMundo Ecommerce dataLayer follows the standard GA4 ‘purchase’ event structure and it includes several extra parameters that are not provided by GA4. These parameters can be tracked as Custom Dimensions.

To get further reference on the GA4 purchase dataLayer visit this link:

Custom Dimensions

Product Parameters

With the purpose of optimizing the number of Custom Dimensions used in GA4, we will use the predefined product parameters. GA4 has multi-level product categories which allow further segmentation in the reports.

Product item_id

The item_id will be populated by the name of the product so will provide the highest level of product segmentation. Here is the list of possible values:

Product item_name

As shown in the dataLayer example, the item_name will have the name of the product that was purchased by the user. This can be the route, hotel name, car rental company, type or service, etc. In some cases, the item_name can have the same value as the item_id in case there is no data available. item_name should always have a value to avoid having empty values in the reports.

Other Product Dimensions

price will always report the unitary price of the product (including taxes) and quantity will have the total of products. item_list_id will have the SSR code of the product when available.

FLIGHT is the only item_id that will have item_variant. The value will be the full route including connections. In case the booking is a flight from Miami to Paris and there is a connection in New York, the value would be MIA>JFK>PAR.

item_category[n] will vary from product to product, but FLIGHT will be the only item_id that will use multiple item categories:

The rest of the products can use item_category as a resource for extra segmentation like car model, hotel room type, property rental name, etc. In case this information is not available, we suggest keeping the same value as the item_name as sown in the dataLayer example above to avoid having empty values in the item_category reports.


The Ecommerce dataLayer will always vary from airline to airline as it is subject to how the data is stored in the servers and what data is available. This suggested structure can provide best practices guidelines from our experience in helping airlines fix their Ecommerce tracking through the years.

In the end, the best structure will be defined by the airline’s data analytics department depending on which products the airline offers and which information will support the business decision-making in the company.