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.
- 01A live siteGTM already on the page
- 02A form that can take an idHidden field, or OpnForm
- 03Consent in placeNothing fires before that
- 04One user-id on the callWe look up that person
- 01First-party id_c_pca in GTM
- 02Event pathInto GA4 and BigQuery
- 03Form joinSame value on submit
- 04Cloud Run lookupOne id in, stored rows out
- Demand generation
- An invented journey
- A second analytics stack
- Clinical detail in GTM or GA4
Lead client has a user-id from a session or a form.
What did this person actually do?
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
Id on the page
GTM writes _c_pca before the form
Id on the form
Hidden field and OpnForm carry the same value
Id in the store
Consented events land in GA4 and BigQuery
Id on the call
Cloud Run returns every stored row for that id
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.
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.
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.






