Deep Dive: Liftoff SKAdNetwork Postback Delays and Data Mismatch with Internal Attribution Systems
Hey everyone,
We've been running some pretty aggressive user acquisition campaigns for our mobile app through Liftoff, specifically leveraging their SKAdNetwork capabilities to navigate the iOS 14+ privacy landscape. While overall performance is decent, we're hitting a significant technical roadblock that's impacting our optimization.
- Problem Context: We're observing consistent, non-trivial discrepancies between the SKAdNetwork postbacks reported by Liftoff and the conversion data we're receiving and processing via our internal MMP (AppsFlyer/Branch).
- Specific Issues:
- Postback Delays: We're seeing unpredictable delays in Liftoff's reported SKAdNetwork postbacks compared to when we'd expect them based on our own conversion value updates and timers. This makes real-time bidding adjustments incredibly difficult.
- Conversion Value Mismatch: There are instances where the decoded conversion values from Liftoff's SKAdNetwork postbacks don't align with the conversion events we're mapping internally for the same user cohorts. It's not a simple mapping error on our end; it feels like a deeper interpretation or reporting difference.
- Troubleshooting Attempted:
- Thoroughly reviewed Liftoff's documentation on SKAdNetwork implementation and best practices.
- Verified our own conversion value schema and its implementation for iOS.
- Cross-referenced raw data from Liftoff's reporting API with our MMP's raw installs/events.
- Engaged with Liftoff support, but haven't found a definitive technical solution yet beyond standard checks.
- Core Question: Has anyone else experienced these specific SKAdNetwork postback delays or conversion value mismatches with Liftoff? Are there any advanced debugging techniques or configuration nuances within Liftoff's platform or our own SKAdNetwork setup that we might be overlooking? We're trying to pinpoint if this is an interpretation issue, a reporting lag, or something more fundamental.
Help a brother out please, this is really impacting our ability to scale efficiently!
2 Answers
Tariq Rahman
Answered 2 days agoRegarding your SKAdNetwork discrepancies with Liftoff, these are common challenges given the framework's design. First, on the "help a brother out please" note โ let's focus on the technical side to get this resolved efficiently.
The postback delays you're observing are largely inherent to Apple's SKAdNetwork. Postbacks are not immediate; Apple introduces a randomized delay (between 0-24 hours for the initial install postback, and then another 0-24 hours after the last conversion value update or timer expiration). This design choice is fundamental to preserving user privacy by preventing immediate, deterministic attribution. Liftoff, like any other ad network, receives these postbacks from Apple and then processes them before reporting to you. This processing chain naturally adds to the overall latency. For real-time bidding adjustments, SKAdNetwork is simply not built for that granularity; you need to shift your optimization strategy to rely on aggregated, delayed data.
For the conversion value mismatch, this is often a more nuanced issue. Ensure your internal conversion value schema (your 6-bit mapping) is precisely mirrored in Liftoff's setup. Discrepancies can arise from:
- Conversion Value Locking: SKAdNetwork's conversion value can only increase, and once it reaches its maximum, it's 'locked'. If your app sends updates too late in the 24-hour window, or if Liftoff's interpretation of your updates differs, you'll see a mismatch.
- Windowing Differences: Your MMP (AppsFlyer/Branch) might be applying different logic or attribution windows to interpret the raw SKAdNetwork data compared to Liftoff. Liftoff is receiving the direct postback from Apple, whereas your MMP is often synthesizing or re-attributing based on its own methodologies, which can include fingerprinting or probabilistic modeling (though less effective post-iOS 14.5).
- Raw Data Comparison: Have you directly compared the raw SKAdNetwork postback payload (if Liftoff provides it) with what your MMP decodes? Specifically, look at the
conversion_valuefield and theredownloadflag. This direct comparison is crucial for debugging interpretation differences. - SDK Implementation: Double-check your app's implementation of
updatePostbackConversionValue(_:completionHandler:). Are you calling it correctly, and are the values being passed as expected? Are there any edge cases where calls might be missed or delayed on the client side?
Hope this helps your conversions!
Chen Liu
Answered 1 day agoHey Tariq, thanks a lot for the detailed reply! It's good to hear a second opinion on the postback delays, makes sense it's an Apple thing. I'll also double-check our conversion value mapping and raw data comparison points.