Travel – QProtocol events

This is for:

Developer

trView

CEH Core

The trView event reports a page view and is a special event because it is required by smartserve.js for data collection and processing. It’s therefore essential that every page emits an trView event and that it is emitted before any other event.

Warning

Any CEH events emitted before the first trView event are considered invalid. Web and mobile applications emit CEH view events whenever a view is rendered.

Example schema

Field (JS Data Type) Description Required for

type (String)

The type of view. Can be one of home, category, search, product, basket, checkout, confirmation, help, contact, registration, content, account, or other. Custom names can be used for unique page types that are not covered by this specification. All types must be lowercase.

CEH Core

subtypes (String[])

An unordered list of subtypes to describe the view.

Optional

environment (String)

Reports the environment (for example, development, staging, or production)

Optional

language (String)

The language used in this view. Must be an IETF language code.

Optional

country (String)

The selected country for the view. Must be an ISO 3166-1 alpha-2 code.

Optional

siteVersion (String)

The selected site version for the view (for example, desktop, mobile, tablet)

Optional

currency (String)

The ISO 4217 currency code for the user (for example, GBP, USD)

Optional

Example JavaScript

uv.emit('trView', {
  type: null,
  subtypes: [
    'Holidays',
    'All Inclusive',
    'Luxury'
  ],
  environment: 'production',
  language: 'en-us',
  country: 'US',
  siteVersion: 'desktop',
  currency: 'USD'
})

trPackageTransactionSummary

CEH Core

Should be emitted for every package the user has transacted.

Example schema

Field (JS Data Type) Description Required for

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

CEH Core

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

CEH Core

transaction.id (String)

An Id unique to the transaction

CEH Core

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

transaction.firstTransaction (Boolean)

True only if this is the first ever transaction for the user

Optional

transaction.paymentType (String)

The type of payment

Optional

transaction.billingAddress.addressee (String)

Full name of the person for whom the address is for

Optional

transaction.billingAddress.company (String)

The name of the company

Optional

transaction.billingAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

transaction.billingAddress.locality (String)

The town or city

Optional

transaction.billingAddress.region (String)

E.g state in the US, county in the UK

Optional

transaction.billingAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

transaction.billingAddress.country (String)

The name of the country

Optional

transaction.billingAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

transaction.parentId (String)

If the transaction is an amendment to a previous transaction, should be the Id of the parent transaction

Optional

Example JavaScript

uv.emit('trPackageTransactionSummary', {
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  },
  transaction: {
    id: '83748372',
    firstTransaction: true,
    paymentType: 'paypal',
    billingAddress: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    parentId: '83748371'
  }
})

trUser

Optional

User events report metadata associated with a user.

Example schema

Field (JS Data Type) Description Required for

user.id (String)

A unique user Id. Can also be a hash of the username and/or email address

Optional

user.title (String)

The user’s title

Optional

user.firstName (String)

The user’s first name

Optional

user.lastName (String)

The user’s last name

Optional

user.gender (String)

The user’s gender. Can be male, female, or other

Optional

user.username (String)

The username for the user

Optional

user.email (String)

The user’s primary email address

Optional

user.firstSession (Boolean)

True if it’s the user’s first session

Optional

user.hasTransacted (Boolean)

True if the user has completed 1 or more transactions

Optional

user.loyalty.id (String)

Loyalty program membership number

Optional

user.loyalty.tier (String)

The level of the loyalty program this user holds

Optional

user.loyalty.tierPoints (Number)

The number of tier points

Optional

user.loyalty.membershipType (String)

The type of loyalty membership

Optional

user.loyalty.membershipPoints (Number)

The number of points from this membership

Optional

user.address.addressee (String)

Full name of the person for whom the address is for

Optional

user.address.company (String)

The name of the company

Optional

user.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

user.address.locality (String)

The town or city

Optional

user.address.region (String)

E.g state in the US, county in the UK

Optional

user.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

user.address.country (String)

The name of the country

Optional

user.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

user.isGuest (String)

True if the user is a guest user without a registered account

Optional

user.age (Number)

The user’s age in years

Optional

user.phoneNumber (String)

The user’s phone number. Should be formatted without spaces, braces, or hyphens

Optional

user.countryCallingCode (String)

The country calling code for the given phone number, formatted to include the + prefix, as per ITU-T standard E.123

Optional

user.device (String)

Device the user is browsing on - for example kiosk.

Optional

Example JavaScript

uv.emit('trUser', {
  user: {
    id: '2861102bace6e6620948564f0ce0a7cd',
    title: 'Mr',
    firstName: 'John',
    lastName: 'Smith',
    gender: 'Male',
    username: 'JohnSmith',
    email: 'john@johnsmith.com',
    firstSession: null,
    hasTransacted: true,
    loyalty: {
      id: '8989752-223',
      tier: 'silver',
      tierPoints: null,
      membershipType: 'Clearsky Rewards',
      membershipPoints: null
    },
    address: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    isGuest: 'true',
    age: 42,
    phoneNumber: '2121234567',
    countryCallingCode: '1',
    device: 'kiosk'
  }
})

trCheckIn

Optional

Emitted when a user checks in.

Example schema

Field (JS Data Type) Description Required for

bookingId (String)

Booking ID for this check in, usually a PNR.

Optional

numberOfAdults (Number)

The number of adults.

Optional

numberOfChildren (Number)

The number of children.

Optional

numberOfInfants (Number)

The number of infants.

Optional

numberOfStudents (Number)

The number of students.

Optional

numberOfTeenagers (Number)

The number of Teenagers.

Optional

totalNumber (Number)

The total number of travellers.

Optional

seats (String[])

The seats selected during check in.

Optional

journey.id (String)

Should be an ID unique to the journey.

Optional

journey.journeyType (String)

The type of a journey, whether it’s in or outbound.

Optional

journey.journeyLeg (Number)

The order of the journey leg. If only one leg in this journey it should be 1.

Optional

journey.originName (String)

The origin location name.

Optional

journey.originCode (String)

The origin code, IATA for airports.

Optional

journey.destinationName (String)

The destination location name.

Optional

journey.destinationCode (String)

The destination code, IATA for airports.

Optional

journey.operator (String)

The operator the journey is with.

Optional

journey.departureTs (Epochtimems)

The departure epoch time in milliseconds.

Optional

journey.departureTimezoneOffset (Number)

The departure timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120)

Optional

journey.arrivalTs (Epochtimems)

The arrival epoch time in milliseconds.

Optional

journey.arrivalTimezoneOffset (Number)

The arrival timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120).

Optional

journey.travelTime (Number)

The total time to get from origin to destination in minutes.

Optional

journey.stops (Number)

The number of stops required to get to the destination. 0 for direct flights.

Optional

journey.isFinalLeg (Boolean)

Whether this part of the journey is the final leg.

Optional

journey.fare (String)

The fare class chosen for this journey.

Optional

journey.originCountry (String)

The origin location country.

Optional

journey.destinationCountry (String)

The destination country.

Optional

journey.stopCodes (String[])

The destination codes of the stopovers.

Optional

journey.stopOperators (String[])

The operators of the journeys between the stopovers.

Optional

journey.vesselType (String)

Indicates the journey leg’s vessel type.

Optional

journey.availableSeats (Number)

Indicates the number of available seats on the journey leg, at the time of the event.

Optional

Example JavaScript

uv.emit('trCheckIn', {
  bookingId: 'PK1E8U',
  numberOfAdults: 2,
  numberOfChildren: 5,
  numberOfInfants: 2,
  numberOfStudents: 2,
  numberOfTeenagers: 2,
  totalNumber: 9,
  seats: [
    '11E',
    '11F'
  ],
  journey: {
    id: 'FL0989',
    journeyType: 'inbound',
    journeyLeg: 2,
    originName: 'John F. Kennedy International',
    originCode: 'JFK',
    destinationName: 'Los Angeles International',
    destinationCode: 'LAX',
    operator: 'American Airlines',
    departureTs: 1454585859331,
    departureTimezoneOffset: -120,
    arrivalTs: 1454595869331,
    arrivalTimezoneOffset: -420,
    travelTime: 360,
    stops: 2,
    isFinalLeg: true,
    fare: 'Premium Cabin',
    originCountry: 'France',
    destinationCountry: 'Brazil',
    stopCodes: [
      'JFK',
      'LHR'
    ],
    stopOperators: [
      'Amazing Airlines',
      'Cool Airways',
      'Flying Airlines'
    ],
    vesselType: 'A321',
    availableSeats: 45
  }
})

trError

Optional

Emitted for every error.

Example schema

Field (JS Data Type) Description Required for

code (String)

The error code.

Optional

message (String)

The error message.

Optional

Example JavaScript

uv.emit('trError', {
  code: null,
  message: null
})

trFilterCriteria

Optional

Emitted once or more on listing and search result views in order to report the filters applied and the sorting. On search views, the event is emitted with the name search, operator equal and value as the search query. On category views, for each category the view falls under, the event is emitted with the name category, operator equal and value the category name for each category. Ranges are modeled by emitting the upper and lower bound as separate filter criteria events, setting the operator as greater than or less than. When visitors add, remove or change a filter, a new view event is emitted followed by all FilterCriteria that are still active after the change.

Example schema

Field (JS Data Type) Description Required for

summary.pagination (Number)

The number of items shown per page to the visitor.

Optional

summary.resultCount (Number)

The number of items that match the current query and/or filters. Should be more than or equal to the number of items shown to the visitor.

Optional

summary.layout (String)

The user’s chosen visual layout of the listing (for example, list, grid or map)

Optional

summary.sortBy (String)

The sort column.

Optional

summary.sortDirection (String)

The sort direction, that is, ascending or descending.

Optional

name (String)

The name of criteria (for example, shoe size, price, brands, airlines). Should be category on category pages.

Optional

operator (String)

Can be equal, not equal, greater than or less than.

Optional

value.boolean (Boolean)

Should only be populated if the type is 'Boolean'.

Optional

value.integer (String)

Should only be populated if the type is 'Integer'.

Optional

value.long (Long)

Should only be populated if the type is 'Long'.

Optional

value.float (Number)

Should only be populated if the type is 'Float'.

Optional

value.timestamp (Epochtimems)

Should only be populated if the type is 'EpochTimeMs'.

Optional

value.money (Number)

Should only be populated if the type is 'Money'.

Optional

value.currency (String)

Should only be populated if the type is 'Currency'.

Optional

value.email (String)

Should only be populated if the type is 'Email'.

Optional

value.url (String)

Should only be populated if the type is 'URL'.

Optional

value.string (String)

Should only be populated if the type is 'String'.

Optional

value.text (String)

Should only be populated if the type is 'Text'.

Optional

value.date (Date)

Should only be populated if the type is 'Date'.

Optional

value.json (Json)

Should only be populated if the type is 'JSON'.

Optional

Example JavaScript

uv.emit('trFilterCriteria', {
  summary: {
    pagination: 20,
    resultCount: 65,
    layout: 'grid',
    sortBy: 'price',
    sortDirection: 'descending'
  },
  name: 'airlines',
  operator: 'equal',
  value: {
    'boolean': true,
    integer: '10',
    'long': 1238902625,
    'float': 5.5,
    timestamp: 1455748626070,
    money: 9.99,
    currency: 'USD',
    email: 'john.smith@gmail.com',
    url: 'http://demo.qubitproducts.com',
    string: 'This is some text',
    text: 'This is some longer text',
    date: '2016-05-20T17:33:45+00:00',
    json: '{"key":"value","anotherKey":123,"yetAnotherKey":{"subKey":true}}'
  }
})

trFormSubmission

Optional

Should be emitted when a user submits a form.

Example schema

Field (JS Data Type) Description Required for

submissionId (String)

A unique Id to identify the form submission.

Optional

name (String)

The name of the form.

Optional

Example JavaScript

uv.emit('trFormSubmission', {
  submissionId: null,
  name: 'ContactUsEnquiry'
})

trInteraction

Optional

Emitted to track visitor interaction for certain elements on the page. These events are not emitted for all interactions on all elements, only those that are of interest.

Example schema

Field (JS Data Type) Description Required for

type (String)

The interaction type (for example, click, view, hover, download, share)

Optional

name (String)

A meaningful name unique to the event.

Optional

Example JavaScript

uv.emit('trInteraction', {
  type: 'click',
  name: 'TopNavHomeButton'
})

trPackageCheckoutSummary

Optional

Should be emitted for user’s package/basket during the checkout process.

Example schema

Field (JS Data Type) Description Required for

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

step (String)

The current step of the checkout process.

Optional

Example JavaScript

uv.emit('trPackageCheckoutSummary', {
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  },
  step: 'Payment Details'
})

trPackageItem

Optional

Should be emitted for each package item shown on a listing or detail page.

Example schema

Field (JS Data Type) Description Required for

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

eventType (String)

The type of package item event (for example, 'listing', 'detail', or 'linked_product')

Optional

packageItem.id (String)

Should be an ID unique to the package item.

Optional

packageItem.price (Price)

The price of the package item after discounts.

Optional

packageItem.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

packageItem.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

packageItem.journey.id (String)

Should be an ID unique to the journey.

Optional

packageItem.journey.journeyType (String)

The type of a journey, whether it’s in or outbound.

Optional

packageItem.journey.journeyLeg (Number)

The order of the journey leg. If only one leg in this journey it should be 1.

Optional

packageItem.journey.originName (String)

The origin location name.

Optional

packageItem.journey.originCode (String)

The origin code, IATA for airports.

Optional

packageItem.journey.destinationName (String)

The destination location name.

Optional

packageItem.journey.destinationCode (String)

The destination code, IATA for airports.

Optional

packageItem.journey.operator (String)

The operator the journey is with.

Optional

packageItem.journey.departureTs (Epochtimems)

The departure epoch time in milliseconds.

Optional

packageItem.journey.departureTimezoneOffset (Number)

The departure timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120)

Optional

packageItem.journey.arrivalTs (Epochtimems)

The arrival epoch time in milliseconds.

Optional

packageItem.journey.arrivalTimezoneOffset (Number)

The arrival timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120).

Optional

packageItem.journey.travelTime (Number)

The total time to get from origin to destination in minutes.

Optional

packageItem.journey.stops (Number)

The number of stops required to get to the destination. 0 for direct flights.

Optional

packageItem.journey.isFinalLeg (Boolean)

Whether this part of the journey is the final leg.

Optional

packageItem.journey.fare (String)

The fare class chosen for this journey.

Optional

packageItem.journey.originCountry (String)

The origin location country.

Optional

packageItem.journey.destinationCountry (String)

The destination country.

Optional

packageItem.journey.stopCodes (String[])

The destination codes of the stopovers.

Optional

packageItem.journey.stopOperators (String[])

The operators of the journeys between the stopovers.

Optional

packageItem.journey.vesselType (String)

Indicates the journey leg’s vessel type.

Optional

packageItem.journey.availableSeats (Number)

Indicates the number of available seats on the journey leg, at the time of the event.

Optional

packageItem.accommodation.id (String)

Should be an ID unique to the accommodation.

Optional

packageItem.accommodation.name (String)

The name of the accommodation.

Optional

packageItem.accommodation.brand (String)

The brand of the accommodation.

Optional

packageItem.accommodation.rating (String)

The rating of the accommodation.

Optional

packageItem.accommodation.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

packageItem.accommodation.stars (Number)

The number of stars awarded to the accommodation.

Optional

packageItem.accommodation.address.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.accommodation.address.company (String)

The name of the company

Optional

packageItem.accommodation.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.accommodation.address.locality (String)

The town or city

Optional

packageItem.accommodation.address.region (String)

E.g state in the US, county in the UK

Optional

packageItem.accommodation.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.accommodation.address.country (String)

The name of the country

Optional

packageItem.accommodation.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.accommodation.boardBasis (String)

Board basis.

Optional

packageItem.accommodation.maxOccupancy (Number)

Maximum number of occupants for the accommodation.

Optional

packageItem.accommodation.travelLocation.country (String)

The country of the location.

Optional

packageItem.accommodation.travelLocation.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

packageItem.accommodation.travelLocation.region (String)

E.g state in the US, county in the UK.

Optional

packageItem.accommodation.travelLocation.locality (String)

The town or city.

Optional

packageItem.accommodation.travelLocation.name (String)

A name specific to this location (e.g airport name)

Optional

packageItem.accommodation.travelLocation.code (String)

A code specific to this location (e.g airport code)

Optional

packageItem.ancillary.ancillaryType (String)

The type of the ancillary.

Optional

packageItem.ancillary.insurance.id (String)

Should be an ID unique to the insurance ancillary.

Optional

packageItem.ancillary.insurance.type (String)

The type of the insurance.

Optional

packageItem.ancillary.insurance.coverage (Number)

The number of insurance policies booked (for example, if travel insurance policies were selected for 2 people, this would be 2)

Optional

packageItem.ancillary.luggage.id (String)

Should be an ID unique to the luggage ancillary.

Optional

packageItem.ancillary.luggage.type (String)

The type of the luggage.

Optional

packageItem.ancillary.luggage.weight (Number)

The max weight of the luggage ancillary, in kilograms.

Optional

packageItem.ancillary.meal.id (String)

Should be an ID unique to the meal ancillary.

Optional

packageItem.ancillary.meal.type (String)

The type of the meal.

Optional

packageItem.ancillary.parking.id (String)

Should be an ID unique to the parking ancillary.

Optional

packageItem.ancillary.parking.type (String)

The type of the parking booking.

Optional

packageItem.ancillary.parking.duration (Number)

The duration of the parking booking in days.

Optional

packageItem.ancillary.seats.id (String)

Should be an ID unique to the seat ancillary.

Optional

packageItem.ancillary.seats.type (String)

The type of the seat booking.

Optional

packageItem.ancillary.seats.tier (String)

The seating class.

Optional

packageItem.ancillary.seats.seatNumber (String[])

The booked seat numbers.

Optional

packageItem.ancillary.transfers.id (String)

Should be an ID unique to the transfer ancillary.

Optional

packageItem.ancillary.transfers.type (String)

The type of the transfer.

Optional

packageItem.ancillary.transfers.origin (String)

The pick up point of the transfer.

Optional

packageItem.ancillary.transfers.originTs (Epochtimems)

The pick up time of the transfer.

Optional

packageItem.ancillary.transfers.destination (String)

The drop off point of the transfer.

Optional

packageItem.ancillary.transfers.returnTime (Epochtimems)

The time of the return pick up

Optional

packageItem.ancillary.transfers.passengers (Number)

The amount of passengers that are going to use the transfer.

Optional

packageItem.ancillary.transfers.isReturnTransfer (Boolean)

Whether the transfer is return.

Optional

packageItem.ancillary.transfers.vendor (String)

The organization executing the transfer

Optional

packageItem.ancillary.vehicleRental.id (String)

Should be an ID unique to the vehicle rental ancillary.

Optional

packageItem.ancillary.vehicleRental.type (String)

The type of the rental.

Optional

packageItem.ancillary.vehicleRental.origin (String)

The pick up point of the rental.

Optional

packageItem.ancillary.vehicleRental.originTs (Epochtimems)

The pick up time of the rental.

Optional

packageItem.ancillary.vehicleRental.dropOff (Epochtimems)

The time of the return pick up.

Optional

packageItem.ancillary.vehicleRental.dropOffTs (String)

The drop off point of the rental.

Optional

packageItem.ancillary.vehicleRental.passengers (Number)

The amount of passengers that are going to use the rental.

Optional

packageItem.ancillary.vehicleRental.vendor (String)

The organization executing the transfer.

Optional

packageItem.ancillary.vehicleRental.driverAgeThreshold (Number)

The age threshold required for the driver to rent the vehicle.

Optional

packageItem.ancillary.vehicleRental.isDriverOverThreshold (Boolean)

Indicates if driver’s age is greater than driverAgeThreshold.

Optional

packageItem.ancillary.vehicleRental.originAddress.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.ancillary.vehicleRental.originAddress.company (String)

The name of the company

Optional

packageItem.ancillary.vehicleRental.originAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.ancillary.vehicleRental.originAddress.locality (String)

The town or city

Optional

packageItem.ancillary.vehicleRental.originAddress.region (String)

E.g state in the US, county in the UK

Optional

packageItem.ancillary.vehicleRental.originAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.ancillary.vehicleRental.originAddress.country (String)

The name of the country

Optional

packageItem.ancillary.vehicleRental.originAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.company (String)

The name of the company

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.locality (String)

The town or city

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.region (String)

E.g state in the US, county in the UK

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.country (String)

The name of the country

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.ancillary.pet.id (String)

Should be an ID unique to pet ancillary.

Optional

packageItem.ancillary.pet.type (String)

The type of pet.

Optional

packageItem.ancillary.lounge.id (String)

Should be an ID unique to the lounge ancillary

Optional

packageItem.ancillary.lounge.name (String)

The name of the lounge.

Optional

packageItem.ancillary.wifi.id (String)

Should be an ID unique to wifi ancillary

Optional

packageItem.ancillary.priority.id (String)

Should be an ID unique to the priority ancillary.

Optional

packageItem.ancillary.priority.type (String)

The type of priority this ancillary gives.

Optional

packageItem.ancillary.sportsEquipment.id (String)

Should be an ID unique to the sports equipment ancillary.

Optional

packageItem.ancillary.sportsEquipment.type (String)

The type of sports equipment.

Optional

packageItem.ancillary.donation.id (String)

Should be an ID unique to the donation ancillary.

Optional

packageItem.ancillary.towel.id (String)

Should be an ID unique to the towel ancillary.

Optional

packageItem.packageItemType (String)

Describes the type of package item, whether it is a journey, accommodation or ancillary item.

Optional

packageItem.originalPrice (Price)

The original price of the package item.

Optional

packageItem.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

packageItem.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

packageItem.onSale (Boolean)

Is item on sale?

Optional

packageItem.experience.id (String)

Should be an ID unique to the experience.

Optional

packageItem.experience.name (String)

The name of the experience.

Optional

packageItem.experience.location.country (String)

The country of the location.

Optional

packageItem.experience.location.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

packageItem.experience.location.region (String)

E.g state in the US, county in the UK.

Optional

packageItem.experience.location.locality (String)

The town or city.

Optional

packageItem.experience.location.name (String)

A name specific to this location (e.g airport name)

Optional

packageItem.experience.location.code (String)

A code specific to this location (e.g airport code)

Optional

packageItem.experience.startTs (Epochtimems)

The experience commencement epoch time in milliseconds.

Optional

packageItem.experience.endTs (Epochtimems)

The experience conclusion epoch time in milliseconds.

Optional

packageItem.experience.duration (Number)

The total duration of the experience in minutes.

Optional

subtotal (Price)

The price of the package item excluding tax and discounts.

Optional

subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

discount (Price)

The amount discounted from vouchers or promotions for the package item.

Optional

discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

subtotalIncludingTax (Price)

The total cost of the package item including tax, excluding discounts.

Optional

subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

index (Number)

The index of the package item as it’s positioned on the page (for example, the first package item in a listing would be 0, the next would be 1)

Optional

quantity (Number)

The number of items described by the line item.

Optional

Example JavaScript

uv.emit('trPackageItem', {
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  },
  eventType: 'detail',
  packageItem: {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    journey: {
      id: 'FL0989',
      journeyType: 'inbound',
      journeyLeg: 2,
      originName: 'John F. Kennedy International',
      originCode: 'JFK',
      destinationName: 'Los Angeles International',
      destinationCode: 'LAX',
      operator: 'American Airlines',
      departureTs: 1454585859331,
      departureTimezoneOffset: -120,
      arrivalTs: 1454595869331,
      arrivalTimezoneOffset: -420,
      travelTime: 360,
      stops: 2,
      isFinalLeg: true,
      fare: 'Premium Cabin',
      originCountry: 'France',
      destinationCountry: 'Brazil',
      stopCodes: [
        'JFK',
        'LHR'
      ],
      stopOperators: [
        'Amazing Airlines',
        'Cool Airways',
        'Flying Airlines'
      ],
      vesselType: 'A321',
      availableSeats: 45
    },
    accommodation: {
      id: 'AC221144',
      name: 'Hilton',
      brand: 'Hilton Hotels & Resorts',
      rating: '4',
      normalizedRating: 0.4,
      stars: 4,
      address: {
        addressee: 'John Smith',
        company: 'Amce Inc',
        lines: [
          'Flat 12',
          '123 High Street'
        ],
        locality: 'London',
        region: 'New York',
        postalCode: '10010',
        country: 'United States',
        countryCode: 'US'
      },
      boardBasis: 'All Inclusive',
      maxOccupancy: 4,
      travelLocation: {
        country: 'Austria',
        countryCode: 'AT',
        region: 'Carinthia',
        locality: 'Villefranche sur saone',
        name: 'Ouagadougou Airport',
        code: 'LYS'
      }
    },
    ancillary: {
      ancillaryType: 'insurance',
      insurance: {
        id: 'INS1234',
        type: 'Travel Insurance',
        coverage: 2
      },
      luggage: {
        id: 'LUG123',
        type: 'Carry on',
        weight: 32
      },
      meal: {
        id: 'MEAL123',
        type: 'Child Menu'
      },
      parking: {
        id: 'PARK123',
        type: 'Valet parking',
        duration: 10
      },
      seats: {
        id: 'SEAT123',
        type: 'Free upgrade',
        tier: 'Economy Plus',
        seatNumber: [
          '1A',
          '35D',
          '35E'
        ]
      },
      transfers: {
        id: 'TRAN123',
        type: 'Coach',
        origin: 'Busstation A',
        originTs: 1456936145007,
        destination: 'Hotel New York',
        returnTime: 1456936164233,
        passengers: 3,
        isReturnTransfer: true,
        vendor: 'NY Cab company'
      },
      vehicleRental: {
        id: 'VH123',
        type: 'SUV - Class 1',
        origin: 'JFK Rent-A-Car',
        originTs: 1456936145007,
        dropOff: 1456936164233,
        dropOffTs: 'O\'Hare Rent-A-Car',
        passengers: 3,
        vendor: 'NYC Cab company',
        driverAgeThreshold: 25,
        isDriverOverThreshold: true,
        originAddress: {
          addressee: 'John Smith',
          company: 'Amce Inc',
          lines: [
            'Flat 12',
            '123 High Street'
          ],
          locality: 'London',
          region: 'New York',
          postalCode: '10010',
          country: 'United States',
          countryCode: 'US'
        },
        dropoffAddress: {
          addressee: 'John Smith',
          company: 'Amce Inc',
          lines: [
            'Flat 12',
            '123 High Street'
          ],
          locality: 'London',
          region: 'New York',
          postalCode: '10010',
          country: 'United States',
          countryCode: 'US'
        }
      },
      pet: {
        id: 'DOG123',
        type: 'Dog'
      },
      lounge: {
        id: 'LOUNGE123',
        name: 'First Class Lounge'
      },
      wifi: {
        id: 'WIFI123'
      },
      priority: {
        id: 'PRIO123',
        type: 'Priority Boarding'
      },
      sportsEquipment: {
        id: 'SKI123',
        type: 'Rubber Boat'
      },
      donation: {
        id: 'DON123'
      },
      towel: {
        id: 'TOWEL123'
      }
    },
    packageItemType: 'journey',
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    onSale: null,
    experience: {
      id: 'AVVCBE',
      name: 'Top Gun Air Combat',
      location: {
        country: 'Austria',
        countryCode: 'AT',
        region: 'Carinthia',
        locality: 'Villefranche sur saone',
        name: 'Ouagadougou Airport',
        code: 'LYS'
      },
      startTs: 1454585859331,
      endTs: 1454595869331,
      duration: 240
    }
  },
  subtotal: {
    value: 9.99,
    currency: 'USD'
  },
  discount: {
    value: 9.99,
    currency: 'USD'
  },
  subtotalIncludingTax: {
    value: 9.99,
    currency: 'USD'
  },
  index: 1,
  quantity: null
})

trPackageItemCheckout

Optional

Should be emitted for every package item the user has in their package during the checkout process.

Example schema

Field (JS Data Type) Description Required for

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

eventType (String)

The type of package item event (for example, 'listing', 'detail', or 'linked_product')

Optional

packageItem.id (String)

Should be an ID unique to the package item.

Optional

packageItem.price (Price)

The price of the package item after discounts.

Optional

packageItem.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

packageItem.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

packageItem.journey.id (String)

Should be an ID unique to the journey.

Optional

packageItem.journey.journeyType (String)

The type of a journey, whether it’s in or outbound.

Optional

packageItem.journey.journeyLeg (Number)

The order of the journey leg. If only one leg in this journey it should be 1.

Optional

packageItem.journey.originName (String)

The origin location name.

Optional

packageItem.journey.originCode (String)

The origin code, IATA for airports.

Optional

packageItem.journey.destinationName (String)

The destination location name.

Optional

packageItem.journey.destinationCode (String)

The destination code, IATA for airports.

Optional

packageItem.journey.operator (String)

The operator the journey is with.

Optional

packageItem.journey.departureTs (Epochtimems)

The departure epoch time in milliseconds.

Optional

packageItem.journey.departureTimezoneOffset (Number)

The departure timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120)

Optional

packageItem.journey.arrivalTs (Epochtimems)

The arrival epoch time in milliseconds.

Optional

packageItem.journey.arrivalTimezoneOffset (Number)

The arrival timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120).

Optional

packageItem.journey.travelTime (Number)

The total time to get from origin to destination in minutes.

Optional

packageItem.journey.stops (Number)

The number of stops required to get to the destination. 0 for direct flights.

Optional

packageItem.journey.isFinalLeg (Boolean)

Whether this part of the journey is the final leg.

Optional

packageItem.journey.fare (String)

The fare class chosen for this journey.

Optional

packageItem.journey.originCountry (String)

The origin location country.

Optional

packageItem.journey.destinationCountry (String)

The destination country.

Optional

packageItem.journey.stopCodes (String[])

The destination codes of the stopovers.

Optional

packageItem.journey.stopOperators (String[])

The operators of the journeys between the stopovers.

Optional

packageItem.journey.vesselType (String)

Indicates the journey leg’s vessel type.

Optional

packageItem.journey.availableSeats (Number)

Indicates the number of available seats on the journey leg, at the time of the event.

Optional

packageItem.accommodation.id (String)

Should be an ID unique to the accommodation.

Optional

packageItem.accommodation.name (String)

The name of the accommodation.

Optional

packageItem.accommodation.brand (String)

The brand of the accommodation.

Optional

packageItem.accommodation.rating (String)

The rating of the accommodation.

Optional

packageItem.accommodation.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

packageItem.accommodation.stars (Number)

The number of stars awarded to the accommodation.

Optional

packageItem.accommodation.address.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.accommodation.address.company (String)

The name of the company

Optional

packageItem.accommodation.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.accommodation.address.locality (String)

The town or city

Optional

packageItem.accommodation.address.region (String)

E.g state in the US, county in the UK

Optional

packageItem.accommodation.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.accommodation.address.country (String)

The name of the country

Optional

packageItem.accommodation.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.accommodation.boardBasis (String)

Board basis.

Optional

packageItem.accommodation.maxOccupancy (Number)

Maximum number of occupants for the accommodation.

Optional

packageItem.accommodation.travelLocation.country (String)

The country of the location.

Optional

packageItem.accommodation.travelLocation.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

packageItem.accommodation.travelLocation.region (String)

E.g state in the US, county in the UK.

Optional

packageItem.accommodation.travelLocation.locality (String)

The town or city.

Optional

packageItem.accommodation.travelLocation.name (String)

A name specific to this location (e.g airport name)

Optional

packageItem.accommodation.travelLocation.code (String)

A code specific to this location (e.g airport code)

Optional

packageItem.ancillary.ancillaryType (String)

The type of the ancillary.

Optional

packageItem.ancillary.insurance.id (String)

Should be an ID unique to the insurance ancillary.

Optional

packageItem.ancillary.insurance.type (String)

The type of the insurance.

Optional

packageItem.ancillary.insurance.coverage (Number)

The number of insurance policies booked (for example, if travel insurance policies were selected for 2 people, this would be 2)

Optional

packageItem.ancillary.luggage.id (String)

Should be an ID unique to the luggage ancillary.

Optional

packageItem.ancillary.luggage.type (String)

The type of the luggage.

Optional

packageItem.ancillary.luggage.weight (Number)

The max weight of the luggage ancillary, in kilograms.

Optional

packageItem.ancillary.meal.id (String)

Should be an ID unique to the meal ancillary.

Optional

packageItem.ancillary.meal.type (String)

The type of the meal.

Optional

packageItem.ancillary.parking.id (String)

Should be an ID unique to the parking ancillary.

Optional

packageItem.ancillary.parking.type (String)

The type of the parking booking.

Optional

packageItem.ancillary.parking.duration (Number)

The duration of the parking booking in days.

Optional

packageItem.ancillary.seats.id (String)

Should be an ID unique to the seat ancillary.

Optional

packageItem.ancillary.seats.type (String)

The type of the seat booking.

Optional

packageItem.ancillary.seats.tier (String)

The seating class.

Optional

packageItem.ancillary.seats.seatNumber (String[])

The booked seat numbers.

Optional

packageItem.ancillary.transfers.id (String)

Should be an ID unique to the transfer ancillary.

Optional

packageItem.ancillary.transfers.type (String)

The type of the transfer.

Optional

packageItem.ancillary.transfers.origin (String)

The pick up point of the transfer.

Optional

packageItem.ancillary.transfers.originTs (Epochtimems)

The pick up time of the transfer.

Optional

packageItem.ancillary.transfers.destination (String)

The drop off point of the transfer.

Optional

packageItem.ancillary.transfers.returnTime (Epochtimems)

The time of the return pick up

Optional

packageItem.ancillary.transfers.passengers (Number)

The amount of passengers that are going to use the transfer.

Optional

packageItem.ancillary.transfers.isReturnTransfer (Boolean)

Whether the transfer is return.

Optional

packageItem.ancillary.transfers.vendor (String)

The organization executing the transfer

Optional

packageItem.ancillary.vehicleRental.id (String)

Should be an ID unique to the vehicle rental ancillary.

Optional

packageItem.ancillary.vehicleRental.type (String)

The type of the rental.

Optional

packageItem.ancillary.vehicleRental.origin (String)

The pick up point of the rental.

Optional

packageItem.ancillary.vehicleRental.originTs (Epochtimems)

The pick up time of the rental.

Optional

packageItem.ancillary.vehicleRental.dropOff (Epochtimems)

The time of the return pick up.

Optional

packageItem.ancillary.vehicleRental.dropOffTs (String)

The drop off point of the rental.

Optional

packageItem.ancillary.vehicleRental.passengers (Number)

The amount of passengers that are going to use the rental.

Optional

packageItem.ancillary.vehicleRental.vendor (String)

The organization executing the transfer.

Optional

packageItem.ancillary.vehicleRental.driverAgeThreshold (Number)

The age threshold required for the driver to rent the vehicle.

Optional

packageItem.ancillary.vehicleRental.isDriverOverThreshold (Boolean)

Indicates if driver’s age is greater than driverAgeThreshold.

Optional

packageItem.ancillary.vehicleRental.originAddress.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.ancillary.vehicleRental.originAddress.company (String)

The name of the company

Optional

packageItem.ancillary.vehicleRental.originAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.ancillary.vehicleRental.originAddress.locality (String)

The town or city

Optional

packageItem.ancillary.vehicleRental.originAddress.region (String)

E.g state in the US, county in the UK

Optional

packageItem.ancillary.vehicleRental.originAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.ancillary.vehicleRental.originAddress.country (String)

The name of the country

Optional

packageItem.ancillary.vehicleRental.originAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.company (String)

The name of the company

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.locality (String)

The town or city

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.region (String)

E.g state in the US, county in the UK

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.country (String)

The name of the country

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.ancillary.pet.id (String)

Should be an ID unique to pet ancillary.

Optional

packageItem.ancillary.pet.type (String)

The type of pet.

Optional

packageItem.ancillary.lounge.id (String)

Should be an ID unique to the lounge ancillary

Optional

packageItem.ancillary.lounge.name (String)

The name of the lounge.

Optional

packageItem.ancillary.wifi.id (String)

Should be an ID unique to wifi ancillary

Optional

packageItem.ancillary.priority.id (String)

Should be an ID unique to the priority ancillary.

Optional

packageItem.ancillary.priority.type (String)

The type of priority this ancillary gives.

Optional

packageItem.ancillary.sportsEquipment.id (String)

Should be an ID unique to the sports equipment ancillary.

Optional

packageItem.ancillary.sportsEquipment.type (String)

The type of sports equipment.

Optional

packageItem.ancillary.donation.id (String)

Should be an ID unique to the donation ancillary.

Optional

packageItem.ancillary.towel.id (String)

Should be an ID unique to the towel ancillary.

Optional

packageItem.packageItemType (String)

Describes the type of package item, whether it is a journey, accommodation or ancillary item.

Optional

packageItem.originalPrice (Price)

The original price of the package item.

Optional

packageItem.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

packageItem.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

packageItem.onSale (Boolean)

Is item on sale?

Optional

packageItem.experience.id (String)

Should be an ID unique to the experience.

Optional

packageItem.experience.name (String)

The name of the experience.

Optional

packageItem.experience.location.country (String)

The country of the location.

Optional

packageItem.experience.location.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

packageItem.experience.location.region (String)

E.g state in the US, county in the UK.

Optional

packageItem.experience.location.locality (String)

The town or city.

Optional

packageItem.experience.location.name (String)

A name specific to this location (e.g airport name)

Optional

packageItem.experience.location.code (String)

A code specific to this location (e.g airport code)

Optional

packageItem.experience.startTs (Epochtimems)

The experience commencement epoch time in milliseconds.

Optional

packageItem.experience.endTs (Epochtimems)

The experience conclusion epoch time in milliseconds.

Optional

packageItem.experience.duration (Number)

The total duration of the experience in minutes.

Optional

subtotal (Price)

The price of the package item excluding tax and discounts.

Optional

subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

discount (Price)

The amount discounted from vouchers or promotions for the package item.

Optional

discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

subtotalIncludingTax (Price)

The total cost of the package item including tax, excluding discounts.

Optional

subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

index (Number)

The index of the package item as it’s positioned on the page (for example, the first package item in a listing would be 0, the next would be 1)

Optional

quantity (Number)

The number of items described by the line item.

Optional

paymentType (String)

For example, visa, paypal, voucher.

Optional

billingAddress.addressee (String)

Full name of the person for whom the address is for

Optional

billingAddress.company (String)

The name of the company

Optional

billingAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

billingAddress.locality (String)

The town or city

Optional

billingAddress.region (String)

E.g state in the US, county in the UK

Optional

billingAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

billingAddress.country (String)

The name of the country

Optional

billingAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

deliveryAddress.addressee (String)

Full name of the person for whom the address is for

Optional

deliveryAddress.company (String)

The name of the company

Optional

deliveryAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

deliveryAddress.locality (String)

The town or city

Optional

deliveryAddress.region (String)

E.g state in the US, county in the UK

Optional

deliveryAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

deliveryAddress.country (String)

The name of the country

Optional

deliveryAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

step (String)

The current step of the checkout process.

Optional

Example JavaScript

uv.emit('trPackageItemCheckout', {
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  },
  eventType: 'detail',
  packageItem: {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    journey: {
      id: 'FL0989',
      journeyType: 'inbound',
      journeyLeg: 2,
      originName: 'John F. Kennedy International',
      originCode: 'JFK',
      destinationName: 'Los Angeles International',
      destinationCode: 'LAX',
      operator: 'American Airlines',
      departureTs: 1454585859331,
      departureTimezoneOffset: -120,
      arrivalTs: 1454595869331,
      arrivalTimezoneOffset: -420,
      travelTime: 360,
      stops: 2,
      isFinalLeg: true,
      fare: 'Premium Cabin',
      originCountry: 'France',
      destinationCountry: 'Brazil',
      stopCodes: [
        'JFK',
        'LHR'
      ],
      stopOperators: [
        'Amazing Airlines',
        'Cool Airways',
        'Flying Airlines'
      ],
      vesselType: 'A321',
      availableSeats: 45
    },
    accommodation: {
      id: 'AC221144',
      name: 'Hilton',
      brand: 'Hilton Hotels & Resorts',
      rating: '4',
      normalizedRating: 0.4,
      stars: 4,
      address: {
        addressee: 'John Smith',
        company: 'Amce Inc',
        lines: [
          'Flat 12',
          '123 High Street'
        ],
        locality: 'London',
        region: 'New York',
        postalCode: '10010',
        country: 'United States',
        countryCode: 'US'
      },
      boardBasis: 'All Inclusive',
      maxOccupancy: 4,
      travelLocation: {
        country: 'Austria',
        countryCode: 'AT',
        region: 'Carinthia',
        locality: 'Villefranche sur saone',
        name: 'Ouagadougou Airport',
        code: 'LYS'
      }
    },
    ancillary: {
      ancillaryType: 'insurance',
      insurance: {
        id: 'INS1234',
        type: 'Travel Insurance',
        coverage: 2
      },
      luggage: {
        id: 'LUG123',
        type: 'Carry on',
        weight: 32
      },
      meal: {
        id: 'MEAL123',
        type: 'Child Menu'
      },
      parking: {
        id: 'PARK123',
        type: 'Valet parking',
        duration: 10
      },
      seats: {
        id: 'SEAT123',
        type: 'Free upgrade',
        tier: 'Economy Plus',
        seatNumber: [
          '1A',
          '35D',
          '35E'
        ]
      },
      transfers: {
        id: 'TRAN123',
        type: 'Coach',
        origin: 'Busstation A',
        originTs: 1456936145007,
        destination: 'Hotel New York',
        returnTime: 1456936164233,
        passengers: 3,
        isReturnTransfer: true,
        vendor: 'NY Cab company'
      },
      vehicleRental: {
        id: 'VH123',
        type: 'SUV - Class 1',
        origin: 'JFK Rent-A-Car',
        originTs: 1456936145007,
        dropOff: 1456936164233,
        dropOffTs: 'O\'Hare Rent-A-Car',
        passengers: 3,
        vendor: 'NYC Cab company',
        driverAgeThreshold: 25,
        isDriverOverThreshold: true,
        originAddress: {
          addressee: 'John Smith',
          company: 'Amce Inc',
          lines: [
            'Flat 12',
            '123 High Street'
          ],
          locality: 'London',
          region: 'New York',
          postalCode: '10010',
          country: 'United States',
          countryCode: 'US'
        },
        dropoffAddress: {
          addressee: 'John Smith',
          company: 'Amce Inc',
          lines: [
            'Flat 12',
            '123 High Street'
          ],
          locality: 'London',
          region: 'New York',
          postalCode: '10010',
          country: 'United States',
          countryCode: 'US'
        }
      },
      pet: {
        id: 'DOG123',
        type: 'Dog'
      },
      lounge: {
        id: 'LOUNGE123',
        name: 'First Class Lounge'
      },
      wifi: {
        id: 'WIFI123'
      },
      priority: {
        id: 'PRIO123',
        type: 'Priority Boarding'
      },
      sportsEquipment: {
        id: 'SKI123',
        type: 'Rubber Boat'
      },
      donation: {
        id: 'DON123'
      },
      towel: {
        id: 'TOWEL123'
      }
    },
    packageItemType: 'journey',
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    onSale: null,
    experience: {
      id: 'AVVCBE',
      name: 'Top Gun Air Combat',
      location: {
        country: 'Austria',
        countryCode: 'AT',
        region: 'Carinthia',
        locality: 'Villefranche sur saone',
        name: 'Ouagadougou Airport',
        code: 'LYS'
      },
      startTs: 1454585859331,
      endTs: 1454595869331,
      duration: 240
    }
  },
  subtotal: {
    value: 9.99,
    currency: 'USD'
  },
  discount: {
    value: 9.99,
    currency: 'USD'
  },
  subtotalIncludingTax: {
    value: 9.99,
    currency: 'USD'
  },
  index: 1,
  quantity: null,
  paymentType: 'Visa',
  billingAddress: {
    addressee: 'John Smith',
    company: 'Amce Inc',
    lines: [
      'Flat 12',
      '123 High Street'
    ],
    locality: 'London',
    region: 'New York',
    postalCode: '10010',
    country: 'United States',
    countryCode: 'US'
  },
  deliveryAddress: {
    addressee: 'John Smith',
    company: 'Amce Inc',
    lines: [
      'Flat 12',
      '123 High Street'
    ],
    locality: 'London',
    region: 'New York',
    postalCode: '10010',
    country: 'United States',
    countryCode: 'US'
  },
  step: 'Payment Details'
})

trPackageItemTransaction

Optional

Should be emitted for every package item that has been transacted.

Example schema

Field (JS Data Type) Description Required for

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

eventType (String)

The type of package item event (for example, 'listing', 'detail', or 'linked_product')

Optional

packageItem.id (String)

Should be an ID unique to the package item.

Optional

packageItem.price (Price)

The price of the package item after discounts.

Optional

packageItem.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

packageItem.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

packageItem.journey.id (String)

Should be an ID unique to the journey.

Optional

packageItem.journey.journeyType (String)

The type of a journey, whether it’s in or outbound.

Optional

packageItem.journey.journeyLeg (Number)

The order of the journey leg. If only one leg in this journey it should be 1.

Optional

packageItem.journey.originName (String)

The origin location name.

Optional

packageItem.journey.originCode (String)

The origin code, IATA for airports.

Optional

packageItem.journey.destinationName (String)

The destination location name.

Optional

packageItem.journey.destinationCode (String)

The destination code, IATA for airports.

Optional

packageItem.journey.operator (String)

The operator the journey is with.

Optional

packageItem.journey.departureTs (Epochtimems)

The departure epoch time in milliseconds.

Optional

packageItem.journey.departureTimezoneOffset (Number)

The departure timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120)

Optional

packageItem.journey.arrivalTs (Epochtimems)

The arrival epoch time in milliseconds.

Optional

packageItem.journey.arrivalTimezoneOffset (Number)

The arrival timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120).

Optional

packageItem.journey.travelTime (Number)

The total time to get from origin to destination in minutes.

Optional

packageItem.journey.stops (Number)

The number of stops required to get to the destination. 0 for direct flights.

Optional

packageItem.journey.isFinalLeg (Boolean)

Whether this part of the journey is the final leg.

Optional

packageItem.journey.fare (String)

The fare class chosen for this journey.

Optional

packageItem.journey.originCountry (String)

The origin location country.

Optional

packageItem.journey.destinationCountry (String)

The destination country.

Optional

packageItem.journey.stopCodes (String[])

The destination codes of the stopovers.

Optional

packageItem.journey.stopOperators (String[])

The operators of the journeys between the stopovers.

Optional

packageItem.journey.vesselType (String)

Indicates the journey leg’s vessel type.

Optional

packageItem.journey.availableSeats (Number)

Indicates the number of available seats on the journey leg, at the time of the event.

Optional

packageItem.accommodation.id (String)

Should be an ID unique to the accommodation.

Optional

packageItem.accommodation.name (String)

The name of the accommodation.

Optional

packageItem.accommodation.brand (String)

The brand of the accommodation.

Optional

packageItem.accommodation.rating (String)

The rating of the accommodation.

Optional

packageItem.accommodation.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

packageItem.accommodation.stars (Number)

The number of stars awarded to the accommodation.

Optional

packageItem.accommodation.address.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.accommodation.address.company (String)

The name of the company

Optional

packageItem.accommodation.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.accommodation.address.locality (String)

The town or city

Optional

packageItem.accommodation.address.region (String)

E.g state in the US, county in the UK

Optional

packageItem.accommodation.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.accommodation.address.country (String)

The name of the country

Optional

packageItem.accommodation.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.accommodation.boardBasis (String)

Board basis.

Optional

packageItem.accommodation.maxOccupancy (Number)

Maximum number of occupants for the accommodation.

Optional

packageItem.accommodation.travelLocation.country (String)

The country of the location.

Optional

packageItem.accommodation.travelLocation.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

packageItem.accommodation.travelLocation.region (String)

E.g state in the US, county in the UK.

Optional

packageItem.accommodation.travelLocation.locality (String)

The town or city.

Optional

packageItem.accommodation.travelLocation.name (String)

A name specific to this location (e.g airport name)

Optional

packageItem.accommodation.travelLocation.code (String)

A code specific to this location (e.g airport code)

Optional

packageItem.ancillary.ancillaryType (String)

The type of the ancillary.

Optional

packageItem.ancillary.insurance.id (String)

Should be an ID unique to the insurance ancillary.

Optional

packageItem.ancillary.insurance.type (String)

The type of the insurance.

Optional

packageItem.ancillary.insurance.coverage (Number)

The number of insurance policies booked (for example, if travel insurance policies were selected for 2 people, this would be 2)

Optional

packageItem.ancillary.luggage.id (String)

Should be an ID unique to the luggage ancillary.

Optional

packageItem.ancillary.luggage.type (String)

The type of the luggage.

Optional

packageItem.ancillary.luggage.weight (Number)

The max weight of the luggage ancillary, in kilograms.

Optional

packageItem.ancillary.meal.id (String)

Should be an ID unique to the meal ancillary.

Optional

packageItem.ancillary.meal.type (String)

The type of the meal.

Optional

packageItem.ancillary.parking.id (String)

Should be an ID unique to the parking ancillary.

Optional

packageItem.ancillary.parking.type (String)

The type of the parking booking.

Optional

packageItem.ancillary.parking.duration (Number)

The duration of the parking booking in days.

Optional

packageItem.ancillary.seats.id (String)

Should be an ID unique to the seat ancillary.

Optional

packageItem.ancillary.seats.type (String)

The type of the seat booking.

Optional

packageItem.ancillary.seats.tier (String)

The seating class.

Optional

packageItem.ancillary.seats.seatNumber (String[])

The booked seat numbers.

Optional

packageItem.ancillary.transfers.id (String)

Should be an ID unique to the transfer ancillary.

Optional

packageItem.ancillary.transfers.type (String)

The type of the transfer.

Optional

packageItem.ancillary.transfers.origin (String)

The pick up point of the transfer.

Optional

packageItem.ancillary.transfers.originTs (Epochtimems)

The pick up time of the transfer.

Optional

packageItem.ancillary.transfers.destination (String)

The drop off point of the transfer.

Optional

packageItem.ancillary.transfers.returnTime (Epochtimems)

The time of the return pick up

Optional

packageItem.ancillary.transfers.passengers (Number)

The amount of passengers that are going to use the transfer.

Optional

packageItem.ancillary.transfers.isReturnTransfer (Boolean)

Whether the transfer is return.

Optional

packageItem.ancillary.transfers.vendor (String)

The organization executing the transfer

Optional

packageItem.ancillary.vehicleRental.id (String)

Should be an ID unique to the vehicle rental ancillary.

Optional

packageItem.ancillary.vehicleRental.type (String)

The type of the rental.

Optional

packageItem.ancillary.vehicleRental.origin (String)

The pick up point of the rental.

Optional

packageItem.ancillary.vehicleRental.originTs (Epochtimems)

The pick up time of the rental.

Optional

packageItem.ancillary.vehicleRental.dropOff (Epochtimems)

The time of the return pick up.

Optional

packageItem.ancillary.vehicleRental.dropOffTs (String)

The drop off point of the rental.

Optional

packageItem.ancillary.vehicleRental.passengers (Number)

The amount of passengers that are going to use the rental.

Optional

packageItem.ancillary.vehicleRental.vendor (String)

The organization executing the transfer.

Optional

packageItem.ancillary.vehicleRental.driverAgeThreshold (Number)

The age threshold required for the driver to rent the vehicle.

Optional

packageItem.ancillary.vehicleRental.isDriverOverThreshold (Boolean)

Indicates if driver’s age is greater than driverAgeThreshold.

Optional

packageItem.ancillary.vehicleRental.originAddress.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.ancillary.vehicleRental.originAddress.company (String)

The name of the company

Optional

packageItem.ancillary.vehicleRental.originAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.ancillary.vehicleRental.originAddress.locality (String)

The town or city

Optional

packageItem.ancillary.vehicleRental.originAddress.region (String)

E.g state in the US, county in the UK

Optional

packageItem.ancillary.vehicleRental.originAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.ancillary.vehicleRental.originAddress.country (String)

The name of the country

Optional

packageItem.ancillary.vehicleRental.originAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.addressee (String)

Full name of the person for whom the address is for

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.company (String)

The name of the company

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.locality (String)

The town or city

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.region (String)

E.g state in the US, county in the UK

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.country (String)

The name of the country

Optional

packageItem.ancillary.vehicleRental.dropoffAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

packageItem.ancillary.pet.id (String)

Should be an ID unique to pet ancillary.

Optional

packageItem.ancillary.pet.type (String)

The type of pet.

Optional

packageItem.ancillary.lounge.id (String)

Should be an ID unique to the lounge ancillary

Optional

packageItem.ancillary.lounge.name (String)

The name of the lounge.

Optional

packageItem.ancillary.wifi.id (String)

Should be an ID unique to wifi ancillary

Optional

packageItem.ancillary.priority.id (String)

Should be an ID unique to the priority ancillary.

Optional

packageItem.ancillary.priority.type (String)

The type of priority this ancillary gives.

Optional

packageItem.ancillary.sportsEquipment.id (String)

Should be an ID unique to the sports equipment ancillary.

Optional

packageItem.ancillary.sportsEquipment.type (String)

The type of sports equipment.

Optional

packageItem.ancillary.donation.id (String)

Should be an ID unique to the donation ancillary.

Optional

packageItem.ancillary.towel.id (String)

Should be an ID unique to the towel ancillary.

Optional

packageItem.packageItemType (String)

Describes the type of package item, whether it is a journey, accommodation or ancillary item.

Optional

packageItem.originalPrice (Price)

The original price of the package item.

Optional

packageItem.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

packageItem.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

packageItem.onSale (Boolean)

Is item on sale?

Optional

packageItem.experience.id (String)

Should be an ID unique to the experience.

Optional

packageItem.experience.name (String)

The name of the experience.

Optional

packageItem.experience.location.country (String)

The country of the location.

Optional

packageItem.experience.location.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

packageItem.experience.location.region (String)

E.g state in the US, county in the UK.

Optional

packageItem.experience.location.locality (String)

The town or city.

Optional

packageItem.experience.location.name (String)

A name specific to this location (e.g airport name)

Optional

packageItem.experience.location.code (String)

A code specific to this location (e.g airport code)

Optional

packageItem.experience.startTs (Epochtimems)

The experience commencement epoch time in milliseconds.

Optional

packageItem.experience.endTs (Epochtimems)

The experience conclusion epoch time in milliseconds.

Optional

packageItem.experience.duration (Number)

The total duration of the experience in minutes.

Optional

subtotal (Price)

The price of the package item excluding tax and discounts.

Optional

subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

discount (Price)

The amount discounted from vouchers or promotions for the package item.

Optional

discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

subtotalIncludingTax (Price)

The total cost of the package item including tax, excluding discounts.

Optional

subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

index (Number)

The index of the package item as it’s positioned on the page (for example, the first package item in a listing would be 0, the next would be 1)

Optional

quantity (Number)

The number of items described by the line item.

Optional

transaction.id (String)

An Id unique to the transaction

Optional

transaction.firstTransaction (Boolean)

True only if this is the first ever transaction for the user

Optional

transaction.paymentType (String)

The type of payment

Optional

transaction.billingAddress.addressee (String)

Full name of the person for whom the address is for

Optional

transaction.billingAddress.company (String)

The name of the company

Optional

transaction.billingAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

transaction.billingAddress.locality (String)

The town or city

Optional

transaction.billingAddress.region (String)

E.g state in the US, county in the UK

Optional

transaction.billingAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

transaction.billingAddress.country (String)

The name of the country

Optional

transaction.billingAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

transaction.parentId (String)

If the transaction is an amendment to a previous transaction, should be the Id of the parent transaction

Optional

Example JavaScript

uv.emit('trPackageItemTransaction', {
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  },
  eventType: 'detail',
  packageItem: {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    journey: {
      id: 'FL0989',
      journeyType: 'inbound',
      journeyLeg: 2,
      originName: 'John F. Kennedy International',
      originCode: 'JFK',
      destinationName: 'Los Angeles International',
      destinationCode: 'LAX',
      operator: 'American Airlines',
      departureTs: 1454585859331,
      departureTimezoneOffset: -120,
      arrivalTs: 1454595869331,
      arrivalTimezoneOffset: -420,
      travelTime: 360,
      stops: 2,
      isFinalLeg: true,
      fare: 'Premium Cabin',
      originCountry: 'France',
      destinationCountry: 'Brazil',
      stopCodes: [
        'JFK',
        'LHR'
      ],
      stopOperators: [
        'Amazing Airlines',
        'Cool Airways',
        'Flying Airlines'
      ],
      vesselType: 'A321',
      availableSeats: 45
    },
    accommodation: {
      id: 'AC221144',
      name: 'Hilton',
      brand: 'Hilton Hotels & Resorts',
      rating: '4',
      normalizedRating: 0.4,
      stars: 4,
      address: {
        addressee: 'John Smith',
        company: 'Amce Inc',
        lines: [
          'Flat 12',
          '123 High Street'
        ],
        locality: 'London',
        region: 'New York',
        postalCode: '10010',
        country: 'United States',
        countryCode: 'US'
      },
      boardBasis: 'All Inclusive',
      maxOccupancy: 4,
      travelLocation: {
        country: 'Austria',
        countryCode: 'AT',
        region: 'Carinthia',
        locality: 'Villefranche sur saone',
        name: 'Ouagadougou Airport',
        code: 'LYS'
      }
    },
    ancillary: {
      ancillaryType: 'insurance',
      insurance: {
        id: 'INS1234',
        type: 'Travel Insurance',
        coverage: 2
      },
      luggage: {
        id: 'LUG123',
        type: 'Carry on',
        weight: 32
      },
      meal: {
        id: 'MEAL123',
        type: 'Child Menu'
      },
      parking: {
        id: 'PARK123',
        type: 'Valet parking',
        duration: 10
      },
      seats: {
        id: 'SEAT123',
        type: 'Free upgrade',
        tier: 'Economy Plus',
        seatNumber: [
          '1A',
          '35D',
          '35E'
        ]
      },
      transfers: {
        id: 'TRAN123',
        type: 'Coach',
        origin: 'Busstation A',
        originTs: 1456936145007,
        destination: 'Hotel New York',
        returnTime: 1456936164233,
        passengers: 3,
        isReturnTransfer: true,
        vendor: 'NY Cab company'
      },
      vehicleRental: {
        id: 'VH123',
        type: 'SUV - Class 1',
        origin: 'JFK Rent-A-Car',
        originTs: 1456936145007,
        dropOff: 1456936164233,
        dropOffTs: 'O\'Hare Rent-A-Car',
        passengers: 3,
        vendor: 'NYC Cab company',
        driverAgeThreshold: 25,
        isDriverOverThreshold: true,
        originAddress: {
          addressee: 'John Smith',
          company: 'Amce Inc',
          lines: [
            'Flat 12',
            '123 High Street'
          ],
          locality: 'London',
          region: 'New York',
          postalCode: '10010',
          country: 'United States',
          countryCode: 'US'
        },
        dropoffAddress: {
          addressee: 'John Smith',
          company: 'Amce Inc',
          lines: [
            'Flat 12',
            '123 High Street'
          ],
          locality: 'London',
          region: 'New York',
          postalCode: '10010',
          country: 'United States',
          countryCode: 'US'
        }
      },
      pet: {
        id: 'DOG123',
        type: 'Dog'
      },
      lounge: {
        id: 'LOUNGE123',
        name: 'First Class Lounge'
      },
      wifi: {
        id: 'WIFI123'
      },
      priority: {
        id: 'PRIO123',
        type: 'Priority Boarding'
      },
      sportsEquipment: {
        id: 'SKI123',
        type: 'Rubber Boat'
      },
      donation: {
        id: 'DON123'
      },
      towel: {
        id: 'TOWEL123'
      }
    },
    packageItemType: 'journey',
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    onSale: null,
    experience: {
      id: 'AVVCBE',
      name: 'Top Gun Air Combat',
      location: {
        country: 'Austria',
        countryCode: 'AT',
        region: 'Carinthia',
        locality: 'Villefranche sur saone',
        name: 'Ouagadougou Airport',
        code: 'LYS'
      },
      startTs: 1454585859331,
      endTs: 1454595869331,
      duration: 240
    }
  },
  subtotal: {
    value: 9.99,
    currency: 'USD'
  },
  discount: {
    value: 9.99,
    currency: 'USD'
  },
  subtotalIncludingTax: {
    value: 9.99,
    currency: 'USD'
  },
  index: 1,
  quantity: null,
  transaction: {
    id: '83748372',
    firstTransaction: true,
    paymentType: 'paypal',
    billingAddress: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    parentId: '83748371'
  }
})

trPackageSummary

Optional

Should be emitted for each package shown on a listing or detail page.

Example schema

Field (JS Data Type) Description Required for

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

Example JavaScript

uv.emit('trPackageSummary', {
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  }
})

trSearch

Optional

Emitted for each search conducted in order to report what the user searched for. If the user is searching for multiple city journeys then one event is sent for each journey (and searchType is going to be multi city journeys) Ranges are represented by min/exact/max values.

Example schema

Field (JS Data Type) Description Required for

searchType (String)

The search type.

Optional

numberOfAdults (Number)

The number of adults in the search.

Optional

numberOfChildren (Number)

The number of children in the search.

Optional

numberOfInfants (Number)

The number of infants in the search.

Optional

numberOfStudents (Number)

The number of students in the search.

Optional

numberOfTeenagers (Number)

The number of teenagers in the search.

Optional

totalNumber (Number)

The total number of travellers.

Optional

startTs (Epochtimems)

The epoch time in milliseconds for the departure date.

Optional

endTs (Epochtimems)

The epoch time in milliseconds for the return date.

Optional

exactDuration (Number)

The exact number of nights the user searched for.

Optional

minDuration (Number)

The minimum number of nights the user searched for.

Optional

maxDuration (Number)

The maximum number of nights the user searched for.

Optional

exactPrice (Price)

The exact price the user searched for.

Optional

exactPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

exactPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

minPrice (Price)

The min price the user searched for.

Optional

minPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

minPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

maxPrice (Price)

The max price the user searched for.

Optional

maxPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

maxPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

origin.country (String)

The country of the location.

Optional

origin.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

origin.region (String)

E.g state in the US, county in the UK.

Optional

origin.locality (String)

The town or city.

Optional

origin.name (String)

A name specific to this location (e.g airport name)

Optional

origin.code (String)

A code specific to this location (e.g airport code)

Optional

destination.country (String)

The country of the location.

Optional

destination.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

destination.region (String)

E.g state in the US, county in the UK.

Optional

destination.locality (String)

The town or city.

Optional

destination.name (String)

A name specific to this location (e.g airport name)

Optional

destination.code (String)

A code specific to this location (e.g airport code)

Optional

leadTime (Number)

The number of days between the day of search and the date the user searched for.

Optional

boardBasis (String[])

The type of board the user searched for.

Optional

roomFacilities (String[])

The type of facilities the user searched for.

Optional

roomTypes (String[])

The type of rooms the user searched for.

Optional

numberOfRooms (Number)

The number of rooms the user searched for.

Optional

exactRating (Number)

The exact rating of the room the user searched for.

Optional

minRating (Number)

The minimum rating of the room the user searched for.

Optional

maxRating (Number)

The maximum rating of the room the user searched for.

Optional

outboundFares (String[])

The fares the user searched for for the outbound journey.

Optional

inboundFares (String[])

The fares the user searched for for the inbound journey.

Optional

flexibleDates (Boolean)

Whether search dates are flexible.

Optional

results.pagination (Number)

The number of items shown per page to the visitor.

Optional

results.resultCount (Number)

The number of items that match the current query and/or filters. Should be more than or equal to the number of items shown to the visitor.

Optional

results.layout (String)

The user’s chosen visual layout of the listing (for example, list, grid or map)

Optional

results.sortBy (String)

The sort column.

Optional

results.sortDirection (String)

The sort direction, that is, ascending or descending.

Optional

Example JavaScript

uv.emit('trSearch', {
  searchType: 'One-way Flight',
  numberOfAdults: 2,
  numberOfChildren: 5,
  numberOfInfants: 2,
  numberOfStudents: 2,
  numberOfTeenagers: 2,
  totalNumber: 9,
  startTs: 1454585576191,
  endTs: 1455926400000,
  exactDuration: 16,
  minDuration: 1,
  maxDuration: 6,
  exactPrice: {
    value: 9.99,
    currency: 'USD'
  },
  minPrice: {
    value: 9.99,
    currency: 'USD'
  },
  maxPrice: {
    value: 9.99,
    currency: 'USD'
  },
  origin: {
    country: 'Austria',
    countryCode: 'AT',
    region: 'Carinthia',
    locality: 'Villefranche sur saone',
    name: 'Ouagadougou Airport',
    code: 'LYS'
  },
  destination: {
    country: 'Austria',
    countryCode: 'AT',
    region: 'Carinthia',
    locality: 'Villefranche sur saone',
    name: 'Ouagadougou Airport',
    code: 'LYS'
  },
  leadTime: 42,
  boardBasis: [
    'All Inclusive',
    'Room Only'
  ],
  roomFacilities: [
    'A/C',
    'Wifi',
    'Jacuzzi'
  ],
  roomTypes: [
    'Royal Suite',
    'Single Room'
  ],
  numberOfRooms: 3,
  exactRating: 3.5,
  minRating: 3,
  maxRating: 4.5,
  outboundFares: [
    'Flexible First Class'
  ],
  inboundFares: [
    'Cheap Cheap Economy'
  ],
  flexibleDates: true,
  results: {
    pagination: 20,
    resultCount: 65,
    layout: 'grid',
    sortBy: 'price',
    sortDirection: 'descending'
  }
})

trUserLogin

Optional

Emitted when a user logs in.

Example schema

Field (JS Data Type) Description Required for

user.id (String)

A unique user Id. Can also be a hash of the username and/or email address

Optional

user.title (String)

The user’s title

Optional

user.firstName (String)

The user’s first name

Optional

user.lastName (String)

The user’s last name

Optional

user.gender (String)

The user’s gender. Can be male, female, or other

Optional

user.username (String)

The username for the user

Optional

user.email (String)

The user’s primary email address

Optional

user.firstSession (Boolean)

True if it’s the user’s first session

Optional

user.hasTransacted (Boolean)

True if the user has completed 1 or more transactions

Optional

user.loyalty.id (String)

Loyalty program membership number

Optional

user.loyalty.tier (String)

The level of the loyalty program this user holds

Optional

user.loyalty.tierPoints (Number)

The number of tier points

Optional

user.loyalty.membershipType (String)

The type of loyalty membership

Optional

user.loyalty.membershipPoints (Number)

The number of points from this membership

Optional

user.address.addressee (String)

Full name of the person for whom the address is for

Optional

user.address.company (String)

The name of the company

Optional

user.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

user.address.locality (String)

The town or city

Optional

user.address.region (String)

E.g state in the US, county in the UK

Optional

user.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

user.address.country (String)

The name of the country

Optional

user.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

user.isGuest (String)

True if the user is a guest user without a registered account

Optional

user.age (Number)

The user’s age in years

Optional

user.phoneNumber (String)

The user’s phone number. Should be formatted without spaces, braces, or hyphens

Optional

user.countryCallingCode (String)

The country calling code for the given phone number, formatted to include the + prefix, as per ITU-T standard E.123

Optional

user.device (String)

Device the user is browsing on - for example kiosk.

Optional

firstLogin (Boolean)

True only if this is the first time the user has logged in.

Optional

Example JavaScript

uv.emit('trUserLogin', {
  user: {
    id: '2861102bace6e6620948564f0ce0a7cd',
    title: 'Mr',
    firstName: 'John',
    lastName: 'Smith',
    gender: 'Male',
    username: 'JohnSmith',
    email: 'john@johnsmith.com',
    firstSession: null,
    hasTransacted: true,
    loyalty: {
      id: '8989752-223',
      tier: 'silver',
      tierPoints: null,
      membershipType: 'Clearsky Rewards',
      membershipPoints: null
    },
    address: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    isGuest: 'true',
    age: 42,
    phoneNumber: '2121234567',
    countryCallingCode: '1',
    device: 'kiosk'
  },
  firstLogin: true
})

trUserSignup

Optional

Emitted when a user signs up for a newsletter or event, for example.

Example schema

Field (JS Data Type) Description Required for

user.id (String)

A unique user Id. Can also be a hash of the username and/or email address

Optional

user.title (String)

The user’s title

Optional

user.firstName (String)

The user’s first name

Optional

user.lastName (String)

The user’s last name

Optional

user.gender (String)

The user’s gender. Can be male, female, or other

Optional

user.username (String)

The username for the user

Optional

user.email (String)

The user’s primary email address

Optional

user.firstSession (Boolean)

True if it’s the user’s first session

Optional

user.hasTransacted (Boolean)

True if the user has completed 1 or more transactions

Optional

user.loyalty.id (String)

Loyalty program membership number

Optional

user.loyalty.tier (String)

The level of the loyalty program this user holds

Optional

user.loyalty.tierPoints (Number)

The number of tier points

Optional

user.loyalty.membershipType (String)

The type of loyalty membership

Optional

user.loyalty.membershipPoints (Number)

The number of points from this membership

Optional

user.address.addressee (String)

Full name of the person for whom the address is for

Optional

user.address.company (String)

The name of the company

Optional

user.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

user.address.locality (String)

The town or city

Optional

user.address.region (String)

E.g state in the US, county in the UK

Optional

user.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

user.address.country (String)

The name of the country

Optional

user.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

user.isGuest (String)

True if the user is a guest user without a registered account

Optional

user.age (Number)

The user’s age in years

Optional

user.phoneNumber (String)

The user’s phone number. Should be formatted without spaces, braces, or hyphens

Optional

user.countryCallingCode (String)

The country calling code for the given phone number, formatted to include the + prefix, as per ITU-T standard E.123

Optional

user.device (String)

Device the user is browsing on - for example kiosk.

Optional

type (String)

The type of sign up (for example, newsletter or event)

Optional

name (String)

A meaningful name unique to the sign up.

Optional

Example JavaScript

uv.emit('trUserSignup', {
  user: {
    id: '2861102bace6e6620948564f0ce0a7cd',
    title: 'Mr',
    firstName: 'John',
    lastName: 'Smith',
    gender: 'Male',
    username: 'JohnSmith',
    email: 'john@johnsmith.com',
    firstSession: null,
    hasTransacted: true,
    loyalty: {
      id: '8989752-223',
      tier: 'silver',
      tierPoints: null,
      membershipType: 'Clearsky Rewards',
      membershipPoints: null
    },
    address: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    isGuest: 'true',
    age: 42,
    phoneNumber: '2121234567',
    countryCallingCode: '1',
    device: 'kiosk'
  },
  type: 'newsletter',
  name: 'weekly signup'
})

trVoucher

Optional

Emitted when a voucher code is entered.

Example schema

Field (JS Data Type) Description Required for

entry (String)

Actual voucher code the user enters.

Optional

entrySuccess (Boolean)

Whether or not the voucher is successfully applied to the transaction. An entry must be valid to be successful.

Optional

voucher.id (String)

A unique Id to identify the voucher used, which should be the same for all visitors that are using the voucher/promotion

Optional

voucher.label (String)

A name or label for the voucher/promotion

Optional

transaction.id (String)

An Id unique to the transaction

Optional

transaction.firstTransaction (Boolean)

True only if this is the first ever transaction for the user

Optional

transaction.paymentType (String)

The type of payment

Optional

transaction.billingAddress.addressee (String)

Full name of the person for whom the address is for

Optional

transaction.billingAddress.company (String)

The name of the company

Optional

transaction.billingAddress.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

transaction.billingAddress.locality (String)

The town or city

Optional

transaction.billingAddress.region (String)

E.g state in the US, county in the UK

Optional

transaction.billingAddress.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

transaction.billingAddress.country (String)

The name of the country

Optional

transaction.billingAddress.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

transaction.parentId (String)

If the transaction is an amendment to a previous transaction, should be the Id of the parent transaction

Optional

package.id (String)

Should be an ID unique to the trip/package.

Optional

package.price (Price)

The total price for all the passengers on the trip/package.

Optional

package.price.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.price.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.tax (Price)

The total tax for all the passengers on the trip/package.

Optional

package.tax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.tax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfAdults (Number)

The number of adults.

Optional

package.numberOfChildren (Number)

The number of children.

Optional

package.numberOfInfants (Number)

The number of infants.

Optional

package.totalNumber (Number)

The total number of customers.

Optional

package.minAgeAdults (Number)

The lower bound for the age of adults.

Optional

package.minAgeChildren (Number)

The lower bound for the age of children.

Optional

package.minAgeInfants (Number)

The lower bound for the age of infants.

Optional

package.startTs (Epochtimems)

The start epoch time in milliseconds.

Optional

package.endTs (Epochtimems)

The end epoch time in milliseconds.

Optional

package.duration (Number)

The duration of accommodation in nights.

Optional

package.originalPrice (Price)

The original price the package was sold at.

Optional

package.originalPrice.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.originalPrice.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.name (String)

The name of the package

Optional

package.packageProvider (String)

The provider of the package.

Optional

package.type (String)

The type of package.

Optional

package.deposit (Price)

The deposit for this package.

Optional

package.deposit.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.deposit.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotal (Price)

The total cost of the package excluding tax and discounts.

Optional

package.subtotal.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotal.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.total (Price)

The total cost of the package including tax and discounts.

Optional

package.total.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.total.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.discount (Price)

The amount discounted from vouchers or promotions.

Optional

package.discount.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.discount.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.subtotalIncludingTax (Price)

The total cost of the package including tax, excluding discounts.

Optional

package.subtotalIncludingTax.value (Number)

Depending on the context, this could be the value of the basket, product, package, total, subtotal, discount, shipping, item, game, bet, etc. Refer to our setup docs for more specific details for each vertical and event

Optional

package.subtotalIncludingTax.currency (String)

The ISO 4217 currency (for example, GBP, USD)

Optional

package.numberOfStudents (Number)

The number of students.

Optional

package.numberOfTeenagers (Number)

The number of Teenagers.

Optional

package.description (String)

The description describing the package.

Optional

package.starRating (Number)

The rating of the package.

Optional

package.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

accommodation.id (String)

Should be an ID unique to the accommodation.

Optional

accommodation.name (String)

The name of the accommodation.

Optional

accommodation.brand (String)

The brand of the accommodation.

Optional

accommodation.rating (String)

The rating of the accommodation.

Optional

accommodation.normalizedRating (Number)

A normalized rating between 0 and 1 (for example, 6/10 is normalized to 0.6)

Optional

accommodation.stars (Number)

The number of stars awarded to the accommodation.

Optional

accommodation.address.addressee (String)

Full name of the person for whom the address is for

Optional

accommodation.address.company (String)

The name of the company

Optional

accommodation.address.lines (String[])

An array of address lines NOT including city, region, postcode or country (maximum of 3 lines allowed)

Optional

accommodation.address.locality (String)

The town or city

Optional

accommodation.address.region (String)

E.g state in the US, county in the UK

Optional

accommodation.address.postalCode (String)

Can be the country equivalent code (for example, zip code for the U.S)

Optional

accommodation.address.country (String)

The name of the country

Optional

accommodation.address.countryCode (String)

An ISO 3166-1 alpha-2 country code

Optional

accommodation.boardBasis (String)

Board basis.

Optional

accommodation.maxOccupancy (Number)

Maximum number of occupants for the accommodation.

Optional

accommodation.travelLocation.country (String)

The country of the location.

Optional

accommodation.travelLocation.countryCode (String)

An ISO 3166-1 alpha-2 country code.

Optional

accommodation.travelLocation.region (String)

E.g state in the US, county in the UK.

Optional

accommodation.travelLocation.locality (String)

The town or city.

Optional

accommodation.travelLocation.name (String)

A name specific to this location (e.g airport name)

Optional

accommodation.travelLocation.code (String)

A code specific to this location (e.g airport code)

Optional

journey.id (String)

Should be an ID unique to the journey.

Optional

journey.journeyType (String)

The type of a journey, whether it’s in or outbound.

Optional

journey.journeyLeg (Number)

The order of the journey leg. If only one leg in this journey it should be 1.

Optional

journey.originName (String)

The origin location name.

Optional

journey.originCode (String)

The origin code, IATA for airports.

Optional

journey.destinationName (String)

The destination location name.

Optional

journey.destinationCode (String)

The destination code, IATA for airports.

Optional

journey.operator (String)

The operator the journey is with.

Optional

journey.departureTs (Epochtimems)

The departure epoch time in milliseconds.

Optional

journey.departureTimezoneOffset (Number)

The departure timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120)

Optional

journey.arrivalTs (Epochtimems)

The arrival epoch time in milliseconds.

Optional

journey.arrivalTimezoneOffset (Number)

The arrival timezone offset in minutes from UTC (for example, EDT is 240 and CEST is -120).

Optional

journey.travelTime (Number)

The total time to get from origin to destination in minutes.

Optional

journey.stops (Number)

The number of stops required to get to the destination. 0 for direct flights.

Optional

journey.isFinalLeg (Boolean)

Whether this part of the journey is the final leg.

Optional

journey.fare (String)

The fare class chosen for this journey.

Optional

journey.originCountry (String)

The origin location country.

Optional

journey.destinationCountry (String)

The destination country.

Optional

journey.stopCodes (String[])

The destination codes of the stopovers.

Optional

journey.stopOperators (String[])

The operators of the journeys between the stopovers.

Optional

journey.vesselType (String)

Indicates the journey leg’s vessel type.

Optional

journey.availableSeats (Number)

Indicates the number of available seats on the journey leg, at the time of the event.

Optional

Example JavaScript

uv.emit('trVoucher', {
  entry: 'Voucher123',
  entrySuccess: true,
  voucher: {
    id: 'AO8734',
    label: 'SummerPromo'
  },
  transaction: {
    id: '83748372',
    firstTransaction: true,
    paymentType: 'paypal',
    billingAddress: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    parentId: '83748371'
  },
  'package': {
    id: 'TRP201214',
    price: {
      value: 9.99,
      currency: 'USD'
    },
    tax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfAdults: 2,
    numberOfChildren: 5,
    numberOfInfants: 2,
    totalNumber: 9,
    minAgeAdults: 35,
    minAgeChildren: 7,
    minAgeInfants: 1,
    startTs: 1454585576191,
    endTs: 1455926400000,
    duration: 16,
    originalPrice: {
      value: 9.99,
      currency: 'USD'
    },
    name: 'Capetown all in honeymoon',
    packageProvider: 'Travel Co',
    type: 'Tour/Chartered cruise/Packaged Holiday/Flights only',
    deposit: {
      value: 9.99,
      currency: 'USD'
    },
    subtotal: {
      value: 9.99,
      currency: 'USD'
    },
    total: {
      value: 9.99,
      currency: 'USD'
    },
    discount: {
      value: 9.99,
      currency: 'USD'
    },
    subtotalIncludingTax: {
      value: 9.99,
      currency: 'USD'
    },
    numberOfStudents: 2,
    numberOfTeenagers: 2,
    description: 'This new active family trip is based in the charming town of Watford',
    starRating: 4,
    normalizedRating: 0.4
  },
  accommodation: {
    id: 'AC221144',
    name: 'Hilton',
    brand: 'Hilton Hotels & Resorts',
    rating: '4',
    normalizedRating: 0.4,
    stars: 4,
    address: {
      addressee: 'John Smith',
      company: 'Amce Inc',
      lines: [
        'Flat 12',
        '123 High Street'
      ],
      locality: 'London',
      region: 'New York',
      postalCode: '10010',
      country: 'United States',
      countryCode: 'US'
    },
    boardBasis: 'All Inclusive',
    maxOccupancy: 4,
    travelLocation: {
      country: 'Austria',
      countryCode: 'AT',
      region: 'Carinthia',
      locality: 'Villefranche sur saone',
      name: 'Ouagadougou Airport',
      code: 'LYS'
    }
  },
  journey: {
    id: 'FL0989',
    journeyType: 'inbound',
    journeyLeg: 2,
    originName: 'John F. Kennedy International',
    originCode: 'JFK',
    destinationName: 'Los Angeles International',
    destinationCode: 'LAX',
    operator: 'American Airlines',
    departureTs: 1454585859331,
    departureTimezoneOffset: -120,
    arrivalTs: 1454595869331,
    arrivalTimezoneOffset: -420,
    travelTime: 360,
    stops: 2,
    isFinalLeg: true,
    fare: 'Premium Cabin',
    originCountry: 'France',
    destinationCountry: 'Brazil',
    stopCodes: [
      'JFK',
      'LHR'
    ],
    stopOperators: [
      'Amazing Airlines',
      'Cool Airways',
      'Flying Airlines'
    ],
    vesselType: 'A321',
    availableSeats: 45
  }
})