Promo & Attribution Brief

Holiday26 Promo & Booking Attribution

What is live today, how booking source is captured, and the decisions needed before launch

The Vault Studio · November 12, 2026

1. The offer, as it works today

Discount

20% off studio time for guest bookings. Event bookings get a flat $200 off instead of the percentage.

Booking window

Bookings made Nov 15, 2026 through Jan 15, 2027, Eastern Time. The session itself can be on any date after that — only the booking date matters.

Who it applies to

Guests only. Member bookings are blocked from using it, and the block is enforced on the server, not just in the browser.

How it applies

Automatically at guest checkout. A guest does not have to type anything, and an untagged guest still gets the savings.

What it covers

The room cost only. Add-ons, staff services and equipment are charged at their normal rate.

Code name

HOLIDAY26 in the system, written as “Holiday26” in marketing copy.

Important distinction: the code identifies the offer, it does not identify the channel. Because the discount applies on its own, the code is not a reliable way to measure which platform a booking came from. That is what the tracking parameters below are for.

2. How “where did they come from” works today

Every booking has a source record attached to it. When someone lands on the site, the app reads the tracking parameters in the link and keeps them in the browser. When that person completes a booking, those values are saved with the booking.

  • •Captured: utm_source, utm_medium, utm_campaign, utm_content, utm_term, plus Google click IDs (gclid, gbraid, wbraid) and Meta click / browser IDs (fbclid, fbp, fbc).
  • •Saved on: guest and member bookings, bulk hour packages, mastering requests, engineering classes, open gym, membership signups and event quote requests.
  • •Reported in plain language: a “Came From” line on each booking and each event request, plus a “Bookings by Source” card in Analytics.

The click now survives a closed tab

The source is stored on the visitor’s device for 30 days from the first click, so someone who taps an Instagram link, leaves, and books the next day from a new tab is still counted to Instagram. After 30 days the record expires and a later booking counts as direct — this keeps stale clicks from taking credit for a fresh sale.

The source is shown, not just stored

Every booking detail page and every event request now carries a “Came From” line, for example “Source: instagram · Medium: social · Campaign: holiday26 · Creative: story”. If the link carried no tags it reads “Direct / untagged”, which is itself useful information.

Channel counts are live

Analytics (admin) has a “Bookings by Source” card that breaks the bookings in the selected date range down by channel — Instagram / social, Google Ads, Meta Ads, Direct / untagged — with counts and share of total.

Event quote requests are covered

Event enquiries now capture and store the same tags, and show the same “Came From” line, so promo-driven event leads are attributed exactly like studio bookings.

Baseline as of Nov 12, 2026: out of 897 bookings on record, 886 carry no source tag at all, 6 carry a test tag, and 5 carry a Google Ads click ID. In practice there is no channel history yet — the promo starts from a clean slate, so the numbers we collect will be entirely down to what we set up now.

3. What marketing needs to do: tag every link

This is the only piece that has to happen on the marketing side, and it is simple: no link goes out without its tracking parameters. One structure, one campaign name for the whole promo.

https://vault-access.thevault.studio/?utm_source=instagram&utm_medium=social&utm_campaign=holiday26&utm_content=story
ParameterWhat it answersSuggested values
utm_sourceWhich platforminstagram, facebook, tiktok, email, sms
utm_mediumWhat kind of placementsocial, paid, email, sms
utm_campaignWhich promoholiday26 — identical on every link
utm_contentWhich creative or placementstory, feed, reel, bio_link
  • •Paid ads need nothing extra: Google and Meta append their own click IDs to the destination automatically, and the app captures those too.
  • •Give each placement its own utm_content. Two Instagram placements sharing one tag will be reported as one number forever, with no way to separate them afterwards.
  • •Keep the values lowercase with no spaces. “instagram” and “Instagram” count as two different channels.
  • •Links should point at the studio’s own domain, not the internal app address.
  • •Anything shared untagged can only ever be counted as direct or unknown.

4. Optional: pre-fill the promo code in the link

Adding a promo parameter to the link fills the promo code field and applies the discount when the guest reaches the main booking page. The guest can still replace it with a different code.

?utm_source=instagram&utm_medium=social&utm_campaign=holiday26&utm_content=story&promo=HOLIDAY26
  • •It is a guest-experience improvement, not a measurement tool: they save the same amount either way. The benefit is that the offer is visibly applied instead of the guest assuming the price is final.
  • •It is live on the main booking page today. It can be extended to bulk hours, mastering and event requests if wanted.
  • •Because it pre-fills, the promo field cannot double as the channel record. Keep relying on the utm parameters for that.

5. Decisions needed from marketing

  1. 1.One campaign name for the promo, used on every link (recommendation: holiday26).
  2. 2.The final list of utm_source values, one per platform, agreed in advance so nothing arrives misspelled.
  3. 3.Whether each placement gets its own utm_content (recommended yes) or platforms are reported at platform level only.
  4. 4.Whether to add promo=HOLIDAY26 to links so the discount shows as applied.
  5. 5.Whether a 30-day attribution window matches the length of the campaign — it is a one-line change if you would rather run 60 or 90 days.
  6. 6.How often the source report gets reviewed, and who on the studio side owns that review.

6. What is live now

  1. 1.First-touch capture that survives a closed tab, on a 30-day window, so a click can still claim a booking days later.
  2. 2.A “Came From” line on every booking in the admin, showing source, medium, campaign and creative.
  3. 3.A “Bookings by Source” card in Analytics, following the date range selected at the top of the page.
  4. 4.Event quote requests captured and displayed the same way as studio bookings.
  5. 5.Optional promo pre-fill on the main booking page, for links that include promo=HOLIDAY26.
One thing not built yet, so nobody is surprised by it: the source card groups bookings by channel (source / medium). Campaign and creative are stored on every booking and shown on each record, but there is no separate campaign-level or creative-level tally — that is a small addition if it turns out to matter.