Skip to main content

GA4 audit and instrumentation · JuristAI Legal Software

JuristAI: a checkout logged as zero sales, and the tracking merged in 26 hours

A GA4 audit found 0 purchases and $0 against 1,277 users on a working Stripe checkout. We locked a before picture, then merged signup tracking into the client's own app.

LitigAI homepage with its analytics consent dialog.
One signup form serves two buyers: an attorney with 200 open cases, and a person unsure they can sue.
Growth & Measurement5 minute readBy Rizwan QaiserRead the case study

Your Stripe checkout took money last month. You open GA4 and it says 0 purchases and $0 in revenue, against 1,277 users. That was JuristAI in February 2026. The checkout worked and plans were selling. The report simply never said so.

Roughly 283,000 of those 291,072 sessions were bots, the checkout still logged 0 purchases, and the tracking we later merged has run untouched for 142 days.
MeasureFigurePeriod
Purchases and revenue logged in GA40 and $030 days to 26 Feb 2026
Key events set up in GA4026 Feb 2026
Visits filed as Direct99.73% of 291,0721 Dec 2025 to 28 Feb 2026
Days the signup tracking has run in their live code14217 Apr to 6 Sep 2026
Roughly 283,000 of those 291,072 sessions were bots, the checkout still logged 0 purchases, and the tracking we later merged has run untouched for 142 days.

A paying product that could not name one sale

JuristAI builds LitigAI, a paid legal tool for drafting demand letters and tracking case deadlines. Two engineers ship it, and one is the CEO. They were not short of hands. They were short of one answer: which month made money?

Autonomous Technologies helps founders and operators who sell online and cannot tell which month made them money. We find where the sale goes missing between the checkout and the report. JuristAI’s own numbers came first, pulled before anyone quoted them. GA4 is Google Analytics 4, the free traffic report most sites run. A key event is the flag GA4 uses to mark a signup or a sale. Their property had none set at all. So GA4 could not work out a rate or hand a sale back to an ad platform. It could not build a funnel either, meaning the count of people at each step from first visit to paid.

Stripe took the money and GA4 filed it as someone else

Checkout jumped to Stripe’s own site. The buyer left, paid, and came back. GA4 read that return as a brand new visit from another site. It fired no purchase event and logged no revenue. Against 1,277 users in the 30 days to 26 February 2026: 0 purchases, $0.

Where visits came from was no better. Direct is what GA4 calls a visit it cannot trace to a source, and 99.73% of the locked window fell into it. Roughly 283,000 of those 291,072 sessions were bots, not people, packed into two weeks at 400 times a normal week. Real traffic was small. The chart made it look huge.

A report that cannot name a sale cannot price an ad. Zero key events is not a small gap in a dashboard. It means every dollar you spend is judged against a number the system was never told how to count.

We locked a before picture we could not move later

Nothing was touched until the numbers already there were written down. A before picture, or baseline, is a dated record of your figures taken before anyone changes the tracking. This one runs 1 December 2025 to 28 February 2026 and was signed off on 25 March 2026.

The reason is blunt. Once you change tracking, a number can move because the recording got better, not because anyone behaved differently. A vendor who touches the instrument first can claim that difference. Here the order was reversed, so the client could grade the work against figures nobody on the delivery side controlled. The same order runs through the local search work for SafaiKaro.

How the work connects: Acquisition question, Locked baseline, Application events, Funnel analysis
The order is the method: question first, then the locked before picture, then code. Tracking shipped seven weeks after the first data pull.

The fixes went in through their process, not ours

Two things left the Autonomous side. The first was the web address: two versions of it both worked, so Google was free to treat them as two separate sites. We wrote the redirect and the steps to switch it on, and their CEO put it live the same day, on 25 March 2026.

The second was the code. One of our engineers added 16 tracking calls across 9 files of their own app: 127 lines in, 23 out. A tracking call is one line that sends a named event when someone clicks. They cover the footer, both menus, the signup form, the Law Library and the Cite Checker. Each call carries the page, the element and a group name, so a visitor who hits a tool limit is told apart from one who used the top menu.

Their team accepted it into the live code 25 hours and 30 minutes after it was written. Nobody on the vendor side could approve that work, and nobody needed to. The same handover shape runs through the white-label delivery for Part & Sum.

Write code you would be happy to accept from a stranger. Every tracking call is written so a blocked or missing library does nothing and the click still goes through. It adds no new software and removes no tracking the client already had.

LitigAI onboarding asks whether a case has already been filed.
One signup count is useless here: the same form serves a filed case and a first time user, and only the event details split them.

What moved, and what we never measured

Two rows moved and three were never read back, because the impact log we built was left empty.
MeasureBefore, 1 Dec 2025 to 28 Feb 2026Last check, 6 Sep 2026
Key events set up in GA40not measured
Purchases logged against the checkout0, $0not measured
Signup click tracking in the product016 calls, live
Both web addresses serving the same siteyesfixed 25 Mar 2026, not retested
Share of visitors who buynot measurednot measured
Two rows moved and three were never read back, because the impact log we built was left empty.

The code shipped and stayed. All 16 calls and both event names are still in their live code on 6 September 2026, 142 days after it was accepted. In that time the team made 661 changes, 110 in those nine files. Three of their own rewrites moved the layout around those calls, keeping every event name intact.

What we cannot show you is a number that moved for the business. We built an impact log with expected results and three check dates. Its results column is still blank, and nobody has confirmed a single event reached the receiving tool. Code sitting in an app proves it shipped. It does not prove a report was read or a dollar changed hands.

What we would do differently, and who this is not for

Three things, if you are weighing this work. We would ship the naming guide that was scoped and never delivered, which would have caught two faults: one screen sends the same signup event twice for a single click, and one element name is reused in two places. We would put the live check on the invoice, not the wish list. And we would book the read back dates, because a before picture nobody returns to is just filing.

This is for you if your checkout takes money and your report cannot name the sale, and if you have engineers who would rather review a 127 line change than hand over the whole app. It is not for you if you want a dashboard built around your data with nobody touching the code, or a lift quoted before the before picture exists.

Rizwan, founder of Autonomous Technologies and the author of this case-study collection.
Every figure here traces to the client's own GA4 export or to a change in their live code, including the blank rows.

Questions and answers

Can you add funnel tracking without rebuilding the product?

Yes. Autonomous Technologies added 16 tracking calls to JuristAI’s existing screens across 9 files, and their own team accepted the change in 25 hours and 30 minutes.

Why lock a before picture first, instead of fixing the tracking?

Because changing tracking can change your number even when nobody behaves differently. A locked window from 1 December 2025 to 28 February 2026 let the client grade the work against figures we could not move.

What does a GA4 audit actually check?

A GA4 audit checks tag setup, whether key events exist, whether purchases reach the report, how visits are sourced, and how much traffic is real. Here it found 0 key events, 0 purchases against 1,277 users, and 99.73% of visits filed as Direct.

Did the work lift sales?

We cannot show that, and we will not claim it. The tracking is still in the client’s live code 142 days later, but no checked after picture exists for sales.