DIRECT ANSWERA zero describes what one connected source recorded. With incomplete tracking, it cannot prove that nothing happened. Keep unavailable, zero and attributed separate.
While reviewing an early channel test, I nearly wrote one sentence in the report: there were no conversions.
The ad dashboard did show zero. At the time, however, the SDK and server-side event chain were not fully connected. That zero proved only that the ad platform had not recorded a conversion. It did not prove that nobody acted after clicking.
Three statements can look similar in a spreadsheet while meaning very different things:
- It did not happen.
- We cannot currently see it.
- We observed behavior, but cannot attribute it yet.
My job was to determine which one the evidence supported.
I adopted a strict writing rule. If a connected source records zero, say that source recorded zero. If access or instrumentation is missing, say the result is unavailable. If behavior is visible but the channel connection is not proven, say attribution is incomplete. Never substitute one state for another.
Evidence layer one: the ad platform ends at the click
Pre-click data looked complete: spend, impressions, clicks, CTR and CPC.
Those metrics describe traffic and front-end efficiency. They do not show whether a person entered the site, performed a defined product action or produced a qualified business result.
I added GA4 data for the same period. Sessions, page views and available events gave the team another layer of post-click evidence.
Another source did not create one complete answer. The ad platform, GA4, an SDK, server events and the business system observe different objects under different timing and attribution rules. Placing them next to one another can make an unconnected chain look complete.
Instead of inventing one “total conversions” column, I labeled what each source records, what it can answer and where its boundary ends.
Evidence layer two: blank and zero are different states
Not every test account exposed the same data.
Some had a connected source with an event count of zero. Some had no accessible source under the current permission. Some had not yet been investigated. All three could appear as an empty cell.
Filling every empty cell with zero turns “cannot verify” into “did not happen.”
| Table state | Actual meaning | Safe report language |
|---|---|---|
0 |
Source connected; target event not recorded | This source recorded zero |
unavailable |
No permission or no accessible source | Currently unavailable for verification |
| blank | Cause not yet classified | Exclude from conclusions until classified |
This distinction determines the next action. One state may call for channel optimization. Another calls for instrumentation or access.
Evidence layer three: a tool can return zero and still fail
I also tried to retrieve historical metrics from an older campaign page. The page loaded and the script returned zero. Technically, the request succeeded.
The date control had not moved reliably to the review period. The number was real for the visible page, but it did not answer the question I had asked.
I left it out of the report. A missing column was safer than a number from the wrong period.
From then on, automated extraction had to validate the object, date and measurement definition, not only the presence of a response. An HTTP success, an open page and a populated field do not independently prove that the data is valid.
Five evidence layers, five boundaries
| Evidence layer | What it can answer | What it cannot establish alone |
|---|---|---|
| Ad platform | Traffic scale, click efficiency and front-end cost | Whether a person truly used the product |
| GA4 behavior | Site visits, pages and defined events | Complete attribution to a specific ad interaction |
| SDK / Pixel | Connections between clicks and selected standard events | Every business result or its quality |
| Server-side events | Registrations, purchases and stronger attribution signals from the business system | The business’s final judgment of result quality |
| Business system | Qualified leads, orders, subscriptions and revenue | Channel causality without an appropriate experiment |
This is not a maturity ranking. GA4 still helps explain sessions and page behavior after an SDK is installed. Each source answers a different question. A missing layer cannot be replaced with inference.
The same problem appears outside advertising. A support platform without order data, a CRM that sees only sales activity and a product dashboard that sees only feature use all have the same limit: no record in one system does not prove that nothing happened elsewhere.
The conclusion that replaced “no conversions”
The first draft said:
The ad dashboard recorded zero conversions, so the test produced no conversions.
The final report used a layered conclusion:
Attribution is not yet complete on the advertising side. The platform records clicks and cost. Available GA4 sessions and defined site events are reported separately. Registrations, purchases and other business outcomes still require verification through the SDK, server-side events or the business system. CPA, ROAS and revenue outcomes are not calculated at this stage.
The longer statement is less satisfying than one number, but it tells the team what is known and whether the next task is channel optimization or tracking work.
It also changed the reporting structure. Platform metrics, site behavior, tracking state and business results now stay separate. A new evidence layer can extend the chain without rewriting the previous conclusion as if it had always been complete.
Temporary measurement needs an exit condition
GA4 helped solve the immediate problem of having no post-click visibility. It did not replace attribution.
UTM parameters and sessions can describe a visit source. They do not automatically become platform-attributed conversions. Browser events can be lost. Purchases are better checked with server signals, and visible product use does not establish revenue quality.
A temporary method therefore needs an exit rule: when the SDK, server events and business events are connected, which claims move to the new source, which GA4 metrics remain diagnostic and which earlier conclusions must be reviewed?
The cleanest report is not always the most honest one. Keeping unavailable and unresolved questions visible may make a table less tidy, but it prevents an infrastructure gap from becoming a business conclusion.
Related Writing
PUBLIC NOTEThis article comes from real work. Client details, data and non-public implementation details have been removed.