Install the script

New package
Mockup: this portal is a static preview. No authentication, no live data, nothing is saved.

Installation status

We check for the tag on every page we can reach

Tag detected

Yes

Last seen 12 seconds ago

Pages covered

94%

7 templates missing the tag

Consent signal

OK

CMP connected

Median load impact

8.6 KB

Async, non-blocking

1. Base tag

Paste into the <head> of every page

<script>
  (function (t, s) {
    t.TravelSpy = t.TravelSpy || function () { (t.TravelSpy.q = t.TravelSpy.q || []).push(arguments); };
    var e = s.createElement('script'); e.async = 1;
    e.src = 'https://cdn.travelspy.io/ts.js';
    s.head.appendChild(e);
  })(window, document);

  TravelSpy('init', { workspace: 'ws_live_9f21c480', region: 'eu' });
</script>

Loads asynchronously and makes no network call until a consent decision is recorded.

2. Consent

Required before any profile is created

TravelSpy('consent', {
  analytics: true,
  personalisation: true,
  advertising: false
});

Call this from your CMP callback. Until it runs, the tag stays dormant.

3. Travel events

The signals the models care about most

TravelSpy('track', 'destination_viewed', {
  destination: 'JP', region: 'Kansai',
  trip_type: 'culture', nights: 11,
  party: { adults: 2, children: 0 }
});

TravelSpy('track', 'search_performed', {
  origin: 'MAN', destination: 'KIX',
  depart: '2026-04-11', return: '2026-04-22',
  cabin: 'economy', results: 38
});

TravelSpy('track', 'booking_completed', {
  booking_ref: 'MJ-88213', value: 6656, currency: 'GBP'
});

Anything custom becomes a feature you can segment on within 24 hours.

Workspace

Use these values in the snippet

  • Workspace IDws_live_9f21c480
  • Regioneu
  • CDN hostcdn.travelspy.io
  • Sandbox IDws_test_10bb44e1

Install method

Pick whichever your team owns

MethodEffortStatus
Direct in <head>Recommended5 minActive
Google Tag ManagerCustom HTML tag10 minAvailable
Segment destinationServer-side15 minAvailable
Server-side APIPOST /v1/events1–2 daysPartial

Coverage gaps

Templates we have not seen the tag on

TemplateViews (7d)
/checkout/confirmation4,102Missing
/brochure-request1,880Missing
/departures/legacy640Stale tag
The confirmation page matters most — without it we cannot close the loop on bookings.