Skip to content
SemCue

Art Quest · Horror Cinema · MORPHEUS · analytics

Where the customer came from.Now it shows.

The company runs Art Quest escape rooms, Horror Cinema screenings and MORPHEUS theatre shows. A guest follows a chain: an advert, the website, a bot or widget, a booking, a payment, a deal in amoCRM. The tag was getting lost along the way. Reports knew about visits and about deals, but not which deal came from which visit. We found the breaks, described a chain of 14 links and closed the main breaks in one night.

Live · released on 28 October 2026 on the running websites, bots and in amoCRM

One key runs through all six stages

  1. Website
    • 1An advert, post or search leads to a page
    • 2The page creates a website session
  2. Tagged link
    • 4The “to the bot” button carries a key
    • 5A click on the button is logged as an event
  3. Bot
    • 6The bot start stores the key
    • 7The bot passes the key to the booking
  4. Booking
    • 3The booking widget receives the session
    • 11Picking a time together
    • 12A certificate
    • 13The Art Quest booking page
    • 14Booking recovery
  5. Payment
    • 9The payment carries the booking number
  6. Deal
    • 8The amoCRM deal receives the path
    • 10A successful deal closes the chain

Link numbers match the shared contract.

The booking exists. Nobody knew where it came from

A guest taps a link on the Horror Cinema website, opens the bot, picks a screening and pays. The report keeps three unrelated pieces: a visit, a booking and an amoCRM deal. We checked how many bookings could be traced back to a visit.

Since 8 October the Horror Cinema bots have taken 22 customer bookings, test ones excluded: 14 from Telegram and 8 from VK. None has an entry page. Of 64 bot starts, 15 came through a website link. Bot events carrying a website session: 0 of 163.

  • 0 of 22bot bookings with an entry page
  • 15 of 64bot starts came through a website linkthat is 23%
  • 0 of 287amoCRM deals with a website session number
  • 11 of 11widget bookings with no session number before 19 October

Three causes turned up in the code

We walked the chain backwards from the deal and, at each link, looked for the identifier that vanishes. There were three breaks, each in its own place.

  • Booking widget

    A session was taken for a phone number

    A session number contains 13 digits of a timestamp. The personal-data filter read them as a phone number and blanked them. Before 19 October 11 of 11 widget bookings had no session number. After 19 October 12 of 12 had one, but it was the widget’s own session, not the visit to the website.

  • amoCRM mirror

    A deal knew nothing about the visit

    The mirror stored amoCRM data and nothing about the website. Nobody filled in the session_id field. As a result, 0 of 287 deals could name their visit.

  • Bot link

    The visit key never reached the booking

    The website button opened the bot with a general source tag but without the session, page and UTM. The bot could not tell the booking where the guest came from: 0 of 22 bookings had an entry page.

A key travels in the link all the way to the booking

We gave every bot link a short key. The website issues it at the moment of the click and remembers whose it is: the session, page, UTM and click id. The bot reads the key at start. The booking picks it up with everything else, and the deal receives the booking’s path.

https://t.me/?start=
src_hk_site_bonus__jk_
A bot link. The key follows the double underscore; the rest is unchanged.

One key runs through all six stages

  1. Website
    • 1An advert, post or search leads to a page
    • 2The page creates a website session
  2. Tagged link
    • 4The “to the bot” button carries a key
    • 5A click on the button is logged as an event
  3. Bot
    • 6The bot start stores the key
    • 7The bot passes the key to the booking
  4. Booking
    • 3The booking widget receives the session
    • 11Picking a time together
    • 12A certificate
    • 13The Art Quest booking page
    • 14Booking recovery
  5. Payment
    • 9The payment carries the booking number
  6. Deal
    • 8The amoCRM deal receives the path
    • 10A successful deal closes the chain

Link numbers match the shared contract.

A chain of 14 links. The shared contract records, for each link, what is passed on and where it used to get lost.

In the first day after the release 348 keys were issued and the bots read 2. The only booking through the Horror Cinema Telegram bot in that day arrived with the key, a journey number, the website session and the entry page: 1 of 1.

Art Quest and MORPHEUS buttons lead to a person: MAX, VK or a manager. They cannot carry a tag. So each such click is logged as an event with the platform, the place on the page, the session, UTM and click id.

One night, two waves

The first wave went out after midnight Tashkent time on 28 October: the key service, the bots, the amoCRM gateway and the links on the Horror Cinema website. The second finished at about six in the morning: five releases closed the remaining links, that is three websites, booking, widgets and deals.

  • Release 1

    Analytics

    Channel detection without UTM, click id in events, new fields in the deal mirror. Enrichment runs after every amoCRM sync.

  • Release 2

    Websites

    Art Quest, Horror Cinema and MORPHEUS record click id and the first touch. A certificate purchase runs under the website session.

  • Release 3

    Booking

    Click id in the booking and the deal. Group time picking and the Art Quest booking page carry the website session.

  • Release 4

    Bots and widgets

    The MORPHEUS Telegram bot reads the key. The Horror Cinema and MORPHEUS widgets no longer blank the session number.

  • Release 5

    amoCRM gateway

    Click id, visitor and group reach the deal. The MORPHEUS deal note now carries UTM, page and session.

  • 2release waves in one night
  • 5releases in the second waveeach with a backup and a rollback command
  • 4repositories touched
  • 16live checks in a browser on the running websites

The source turned up where nobody looked

The report used to label any session without a UTM as “no source”. We looked at what such sessions carry instead. Many hold a click id from a search or advertising system. Others show the address of the page the guest came from: search, maps, social networks.

Channels are now detected from these signs. The percentages below are a recount of the same sessions under the new rules; the data itself did not change.

A recount of past sessions under the new channel rules

Horror Cinema396 of 1,152 sessions
Before
80%
After
34%
Art Quest550 of 889 sessions
Before
95%
After
62%
MORPHEUS131 of 447 sessions
Before
74%
After
29%
Share of sessions with no UTM, no click id and no referrer. Sessions since 8 October, recounted on 28 October.
  • Horror Cinema

    396 of 1,152 remain without a source

    The rest: 236 by UTM, 287 by click id, 233 by referrer.

  • Art Quest

    550 of 889 remain without a source

    The rest: 44 by UTM, 112 by click id, 183 by referrer.

  • MORPHEUS

    131 of 447 remain without a source

    The rest: 118 by UTM, 61 by click id, 137 by referrer.

The remainder is visits with neither a tag nor a referrer. Short tagged links on every publication are the next step.

Deals gained a visit

The amoCRM deal mirror now adds the path after every sync: the session, entry page, booking number, payment number and channel. Only empty fields are filled, so a manager’s manual edits stay in place. Deals with no website event, that is manual ones, calls and chats, stay without a session.

Before the release

  • 0 of 287 deals with a website session number
  • Deals with a UTM: 10
  • No entry page, booking number or payment number in a deal
  • A deal’s channel was not detected

After the release

  • 38 of 278 deals with a website session number
  • Deals with a UTM: 15
  • 47 with an entry page, 57 with a booking number, 39 with a payment number
  • 47 with a detected channel
  • 14%of deals gained a website session38 of 278
  • 26 of 73website deals tied to a visit
  • 12 of 27Art Quest bot deals tied to a visit

Certificates joined the chain too. A purchase event used to run under a funnel number, not the website session: 165 views at Horror Cinema and 87 at MORPHEUS. Since the release 47 of 47 certificate page views carry the website session.

Direct shows up in phone calls

The new picture showed what the counters cannot. Since 8 October amoCRM holds 40 deals with the source “Direct + search”. They are calls to the advertised phone number, and a call cannot carry a tag. On the websites the Direct tag (yclid) appeared in 2 sessions.

The result of Direct advertising shows in calls and deals: its tag is rare on the websites. A click id identified 460 sessions without a UTM: Horror Cinema 287, Art Quest 112, MORPHEUS 61. Linking a call to a page needs a swappable phone number, which is the next step.

  • 40deals from calls to the Direct advert number
  • 2website sessions with a Direct tag
  • 460sessions without a UTM identified by a click id
What backs these numbers
  • The shared journey contract of 28 October 2026: before and after tables, 14 links.
  • Read-only queries against the analytics database: aggregates with no personal data.
  • The change history in four repositories on 27 and 28 October 2026.
  • Live browser checks on the running websites on 28 October.

How it was built

How it was done

We first walked the guest’s path backwards: from the deal to the booking, from the booking to the bot, from the bot to the page. At each link we looked for the identifier that gets lost and why. Then we wrote a shared contract: what each link passes on and where it got lost.

We released in waves. Every release of the second wave has a backup and a rollback command. After each release we checked the chain on the live websites.

  • InvestigationWalked the chain back from the deal through data and code and found three breaks.
  • ContractDescribed 14 links: what is passed on and where it was lost.
  • Release2 waves; the second had 5 releases with a backup and rollback and 16 browser checks.

For technical readers

For technical readers

Key
A short key from an alphabet without look-alike characters, in the Telegram and VK start parameter after __jk_. The service stores it with the session, page, UTM and click id.
Channel
Detected from the first event of a session: UTM, click id (yclid, ysclid, clckid, fbclid and others), referrer.
Deals
The amoCRM mirror gained fields for entry page, booking, payment, journey, key, group, click id and channel. Enrichment fills empty fields only.
Audit
Read-only SQL queries check the chain for breaks. Test and internal traffic is excluded by rules.
Stack
Node.js, PostgreSQL, Docker, the amoCRM gateway, website scripts and booking widgets.

Where the numbers come from

Sources

Next system

A weekly report without manual assembly →

SemCue / Let’s talk

What would you like to work on?

Tell us about your project and what you need. A rough idea is enough.

Get in touch on Telegram

We’ll discuss your goals, where things stand and the right next step.

Discuss your project on Telegram
In developmentThis site is still being built, so things may change.