X
pacing agency london logo
Tech & Tracking

September 21, 2026

User Journey Analyser

Therapy Lounge, 2025

The Brief

Goal: Give a lead client one screen for every stored fact on a single first-party user-id.

Challenge:

  • GA4 splits one person into several users
  • Forms drop the id unless we write it
  • A dressed-up journey with no row is useless

KPI: One user-id lookup. Cloud Run about £4 a month.

The Solution

  • 01
    Browser idBefore the form
  • 02
    Cookie fallbackSame name
  • 03
    Form joinSame value on submit
  • 04
    After consentEvents only then
  • 01
    One lookupA single user-id
  • 02
    BigQueryRows for that id
  • 03
    Stored eventsNothing invented
  • 04
    Cloud RunAbout £4 a month

The Results

1

user-id per lookup

4

steps, GTM to Cloud Run

£4

monthly Cloud Run cost

  • Single user-id view of every stored BigQuery event
  • First-party _c_pca carried across sessions and forms
  • Path from web GTM to sGTM to GA4 and BigQuery
  • Cloud Run lookup, live for lead clients at y.pacing.agency
No items found.
Hear More From Our Clients
Watch a video testimonial

More Info

The Client

Lead clients need one screen for one person. Not a session. Not a device. Therapy Lounge was first, in October 2025. The question on a call is simple: what did this person actually do?

GA4 will happily show three users for someone who came back a week later. The live demo at y.pacing.agency is the opposite of that. Give it one first-party id. It returns the stored trail. It does not invent a journey, and it does not create demand.

The Brief

Build a Cloud Run app that takes one id and returns every stored fact. If BigQuery has the row, show it. If it does not, say so. A dressed report with no row is useless.

The same id has to survive a return visit and a form. That join is the product. We do not stitch a story together from sessions or devices.

The Approach

Identity is set in the browser before anyone fills a form. GTM writes _c_pca to localStorage first, then the cookie of the same name. The same value is copied into the form so a later booking still belongs to the first visit.

Events take the usual path: web GTM, then the server container, then GA4 and BigQuery. Cloud Run later asks BigQuery for that one id. The UI does not keep its own truth.

You supplyYour site
  • 01
    A live siteGTM already on the page
  • 02
    A form that can take an idHidden field, or OpnForm
  • 03
    Consent in placeNothing fires before that
  • 04
    One user-id on the callWe look up that person
We buildPacing Agency
  • 01
    First-party id_c_pca in GTM
  • 02
    Event pathInto GA4 and BigQuery
  • 03
    Form joinSame value on submit
  • 04
    Cloud Run lookupOne id in, stored rows out
Not in this
  • Demand generation
  • An invented journey
  • A second analytics stack
  • Clinical detail in GTM or GA4
Talk demo
Situation

Lead client has a user-id from a session or a form.

Question

What did this person actually do?

Footer

PACING · y.pacing.agency

Technical Implementation

The path is short on purpose. The hard work is the id surviving the page. Once that is true, a Cloud Run lookup is enough.

The count

PartWhat we buildOwnerWhen
IdentitylocalStorage first, cookie fallbackUsSite live
Form joinHidden field and OpnForm user_idUsSame week
Event pathWeb GTM to sGTM to GA4 and BigQueryUsSame week
Lookup appCloud Run, one id in, stored rows outUsAfter store
Talk demoy.pacing.agencyUsAfter lookup
PAC_Journey_UserId_v1
01Step

Id on the page

GTM writes _c_pca before the form

02Step

Id on the form

Hidden field and OpnForm carry the same value

03Step

Id in the store

Consented events land in GA4 and BigQuery

04Step

Id on the call

Cloud Run returns every stored row for that id

If the id was never written

The screen is empty. Fix the form. Do not dress the report.

Results & Impact

We walk a real user-id on a call. The tool will not show a journey we never stored.

CheckWhat you can see
Demoy.pacing.agencyLiveNow
First clientTherapy LoungeFirstOct 2025
CostCloud RunUsabout £4
Identity_c_pcaFirst-partyKept

Why It Worked

  • One id, not one session. GA4 can split a person across users. _c_pca is the first-party key we keep, so the lookup is a person, not a device.
  • Forms are part of tracking. If the hidden field is empty, the store has no join. The empty screen is the honest result.
  • BigQuery is the store. Cloud Run reads rows that already exist. The UI does not keep its own truth.
Ready to get started?

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Let's Talk

Other Case Studies

Linked Tools

Our Tools

How to get the best out of your marketing stack - and learn how to spot the gaps in your setup!

Google PartnerWebflow partner programme member
pacing agency london - your external marketing team - sales
webflow logowebflow logo
meta logometa logo
Linkedin LogoLinkedin Logo
semrush logosemrush logo
google logogoogle logo

Frequently Asked Questions

Common inquiries about the case study

How do you use Cursor for building marketing automation tools?

Cursor excels at building marketing automation tools by understanding complex integrations and generating code that connects multiple marketing platforms and data sources effectively. We leverage Cursor to build sophisticated integrations between Zapier, Google Sheets, and other marketing tools as part of our technical infrastructure service.

How do you set up conversion tracking with Google Tag Manager?

GTM simplifies conversion tracking setup by providing templates and triggers that make it easy to track key business actions across multiple marketing platforms simultaneously.

Our technical tracking service includes comprehensive conversion tracking setup that connects GTM with GA4 and advertising platforms for complete measurement.

Let's talk about your next project
Contact Us