An empty cell in an iOS acquisition report is not a verdict on the campaign.
It might mean the report has not finished updating. It might mean a detail was withheld, the selected breakdown is unavailable, or the action was outside the measurement design. It might also be a genuine measured zero. Those possibilities support different decisions.
You can still manage acquisition when visibility is incomplete. The practical task is to record what each report actually observes, choose a decision that evidence can support, and avoid filling the gaps with invented certainty.
Name the report before naming the limitation
Start with the specific view, export, or metric you are reading. “The iOS numbers” is not enough.
Ask the measurement owner to identify:
- The app, operating-system scope, and campaigns included
- The measurement path behind the report
- The date basis, time zone, and reporting cutoff
- Whether the result is observed, modeled, or a mixture
- Whether it describes acquisitions, events, people, or postbacks
- Any privacy-dependent detail and the relevant conversion mapping
Do not assume that every iOS view is an SKAdNetwork report, or that an AdAttributionKit explanation applies to a particular TikTok dashboard. One acquisition setup can produce several reporting views with different rules.
Apple describes AdAttributionKit as a privacy-preserving system that limits the data included in attribution postbacks. The conversion value and some other fields are conditional: they appear only when crowd-anonymity thresholds are met, and an ad network may show an absent value as “null.” The framework can also send up to three postbacks across successive conversion windows. That explains why detail can vary; it does not identify the measurement path used by your chosen report. Apple’s ad-attribution overview
If the path is unknown, that is the first question to resolve. More calculations on an undefined metric will not make the answer stronger.
Keep zero, null, late, and unavailable separate
Make a small interpretation card for the team.
Measured zero: The report contains a zero for a defined metric and scope. Before treating that as absence of activity, confirm the report is complete enough and the metric was capable of observing the action.
Null conversion value: The conversion-value field has no value. Do not translate it into “no purchase” unless the documented behavior actually supports that reading. A missing value is different from an explicit conversion value of zero, whose meaning also depends on the configured mapping.
Late: The relevant observation or reporting interval has not completed. Keep the pending portion visible and record when it can be reviewed.
Unavailable detail: The report does not expose that breakdown or field for this observation. Waiting might not produce it. Ask whether the limitation is temporary or inherent to the reporting path.
Unobserved action: The measurement design does not establish whether the action happened. For example, a report may not observe activity beyond its supported window. That is uncertainty, not a measured failure to convert.
Use those labels in the working sheet instead of substituting zeros for blanks. If you calculate a rate only among records with usable detail, label that denominator explicitly. The visible subset may not represent all acquired users.

Aggregate enough to answer a question, but keep the exclusions
A campaign-by-day-by-creative breakdown may contain too little usable detail for a sound decision. Start with the coarsest level that still answers the business question: perhaps a campaign over a completed acquisition interval, with later observations given time to arrive.
Aggregation can make an existing pattern easier to interpret. It does not reconstruct information that was never disclosed. Do not promise that combining rows will recover missing conversion values.
Also keep important differences visible. Combining an old app version with a broken new version could hide a real product problem. Combining countries with very different offers could turn a mix shift into an apparent performance change.
Write the grouping rule before inspecting the result. Record which rows remain unknown and which are excluded, then check whether a different reasonable grouping changes the conclusion. If it does, the decision deserves more caution.
Ordinary reporting alignment still matters. AppsFlyer distinguishes LTV reporting, which groups post-install events by acquisition date, from activity reporting, which groups them by event date. Its discrepancy guide treats mixing the two as a common cause of mismatched numbers and recommends checking filters, time zones, and data freshness. Privacy limitations do not remove those basic reconciliation problems. AppsFlyer’s report-discrepancy guide
Use several views without adding their counts
First-party business totals, platform acquisition reports, and store evidence can each answer a different question.
Your own payment records can show whether total successful first payments fell within a defined business scope. They may not establish which campaign caused those payments. A platform report can show credited outcomes under its attribution rules. Store evidence can help you inspect the download or storefront stage, subject to the metric’s own definition.
Put those views alongside each other. Do not add them into “total conversions” unless you have established that their populations are mutually exclusive. Do not subtract one from another and call the remainder organic growth without a defensible reconciliation.
If first-party payments drop sharply while acquisition reports remain stable, investigate the disagreement. If store activity holds but first-session completion falls, the app journey deserves attention. These are directional clues. They do not recreate user-level attribution or prove which campaign caused the change.
Use only permitted measurement methods. Missing detail is not a reason to fingerprint users or construct unauthorized cross-app joins.

Make a bounded decision from a sparse example
Consider this fictional case. It is an interpretation exercise, not a performance benchmark.
A completed report contains 80 first-window acquisition postbacks for the defined campaign scope. Of those, 50 have the usable conversion detail required for your question and 30 do not. These are postbacks in a defined window, not 80 proven purchasers and not a sum of multiple postback windows.
The usable share is 50 ÷ 80, or 62.5%. The remaining 37.5% lacks the required detail. Neither percentage tells you the purchase rate, and you cannot safely apply a rate from the 50 visible records to all 80.
Separately, first-party first payments across the whole app fell from 200 to 190 in two aligned, completed business periods: a decline of 10, or 5%. That is broader than the campaign scope. It does not establish that this campaign lost ten payments.
A decision-confidence ledger could say:
- Known: The campaign’s defined report has incomplete conversion detail; total app first payments are down 5% in the separate business comparison.
- Unknown: Purchase performance for the missing-detail subset and the campaign’s causal contribution to the app-wide change.
- Supported decision: Defer expansion, preserve the existing exposure boundary, and investigate whether app or offer changes explain the broader payment decline.
- Not supported: Declare the campaign unprofitable from the 30 postbacks without usable detail or report a campaign purchase rate from the visible subset.
- Next evidence: Confirm report-path expectations, review available completed aggregates, and inspect the product funnel under comparable definitions.
This is not a recommendation to keep every sparse campaign running. If your spending limit is reached, the measurement needed for a decision remains unavailable, or independent business evidence breaches a guardrail, you can reduce exposure without pretending the attribution question is solved.

Record what would change your mind
Finish the review with a decision, its exposure limit, and a specific next observation. Distinguish a later report refresh from a product investigation or a genuine measurement limitation.
The goal is not certainty at any price. It is to make the strongest decision the evidence supports, while keeping the missing part visible to whoever reviews the campaign next.


