[{"data":1,"prerenderedAt":377},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fen\u002Fmarketing\u002Fios-17-post-attribution-stack":13},{"i18nKey":4,"paths":5},"marketing-003-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fmarketing\u002Fios-17-nach-ad-attribution-stack","\u002Fen\u002Fmarketing\u002Fios-17-post-attribution-stack","\u002Fes\u002Fmarketing\u002Fios-17-attribution-stack-despues","\u002Ffr\u002Fmarketing\u002Fpile-d-attribution-ios-post-ios-17","\u002Fit\u002Fmarketing\u002Fios-17-dopo-attribution-stack","\u002Fru\u002Fmarketing\u002Fios-17-sonrasi-ad-attribution-stack","\u002Ftr\u002Fmarketing\u002Fios-17-sonrasi-ad-attribution-stacki",{"_path":7,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":371,"_id":372,"_source":373,"_file":374,"_stem":375,"_extension":376},"marketing",false,"","The iOS 17 Attribution Stack That Actually Works","ATT, SKAdNetwork 4, and modeled conversions have fundamentally reshaped iOS measurement. Here's what your stack needs to be in 2026.","2026-05-11",[21,22,23,24,25],"ios-attribution","skadnetwork","att","modeled-conversions","mobile-measurement",8,"Roibase",{"type":29,"children":30,"toc":359},"root",[31,39,46,51,56,61,67,72,77,82,89,176,181,187,192,197,213,219,224,229,251,257,262,267,272,278,283,349,354],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","The attribution fragility that began with iOS 14 has reached a mature inflection point by 2026. ATT opt-in rates have stabilized below 25%, SKAdNetwork 4 now supports 128-bit conversion values, and Meta and Google have made modeled conversions the default measurement path. The game has shifted: deterministic attribution is dead, replaced by a probabilistic + post-lookback maturity framework. Anyone running iOS ad spend without a properly architected stack is watching budget disappear into a black hole.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"the-att-reality-operating-at-25-opt-in",[44],{"type":37,"value":45},"The ATT Reality: Operating at 25% Opt-In",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"The iOS 17 user base has settled at a 23–27% global average for ATT opt-in rates (Singular, Q1 2026). That means 75% of users are not sharing their IDFA. Campaigns still anchored to IDFA-based attribution are seeing only a minority segment with deterministic signal—the rest is marked \"modeled.\"",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"What does \"modeled conversions\" actually mean? Meta and Google deploy machine learning on users who declined ATT, regressing user behavior patterns to assign conversion probability. This methodology is cohort-based, not person-based. Your ROAS calculation is now 70–80% modeled. If you're still optimizing campaigns on \"deterministic ROAS,\" you're ignoring most of your data.",{"type":32,"tag":33,"props":57,"children":58},{},[59],{"type":37,"value":60},"The new reality is blunt: iOS never had 100% attribution fidelity, and it doesn't now. Accept it. Build your stack around this constraint. Deterministic signal is a minority opinion—insufficient for decision-making alone. You must understand how modeled conversions are constructed, validate their reliability, and corroborate them with incrementality tests.",{"type":32,"tag":40,"props":62,"children":64},{"id":63},"skadnetwork-4-128-bit-conversion-value-and-hierarchical-source-ids",[65],{"type":37,"value":66},"SKAdNetwork 4: 128-Bit Conversion Value and Hierarchical Source IDs",{"type":32,"tag":33,"props":68,"children":69},{},[70],{"type":37,"value":71},"SKAdNetwork 4 (default on iOS 16.1+, mature by iOS 17) is Apple's sole official aggregate attribution mechanism. Core mechanism: user clicks an ad, app installs and opens, conversion value is recorded, postback window closes (24–72 hours), Apple sends an aggregated signal. No IDFA. No device identifiers.",{"type":32,"tag":33,"props":73,"children":74},{},[75],{"type":37,"value":76},"What changed? Conversion value expanded to 128 bits—you can encode richer detail. Example encoding strategy: bits 0–5 for install source (Meta, Google, TikTok, organic), bits 6–12 for event type (first purchase, tutorial completion, level 3), bits 13–127 for revenue bucketing and cohort segment. You design this encoding; each app calibrates it to its own requirements.",{"type":32,"tag":33,"props":78,"children":79},{},[80],{"type":37,"value":81},"Hierarchical Source IDs arrived too: instead of a single campaign ID, you now have a 4-tier hierarchy (campaign → ad set → creative → keyword). This is critical for multi-touch modeling—older SKAdNetwork exposed only campaign-level data, now creative-level performance is deconstructable. Trade-off: greater granularity increases noise. Apple's privacy threshold suppresses postbacks for low-volume segments. Strategic choice: ultra-granular encoding or higher postback volume?",{"type":32,"tag":83,"props":84,"children":86},"h3",{"id":85},"conversion-value-design",[87],{"type":37,"value":88},"Conversion Value Design",{"type":32,"tag":90,"props":91,"children":92},"table",{},[93,117],{"type":32,"tag":94,"props":95,"children":96},"thead",{},[97],{"type":32,"tag":98,"props":99,"children":100},"tr",{},[101,107,112],{"type":32,"tag":102,"props":103,"children":104},"th",{},[105],{"type":37,"value":106},"Bit Range",{"type":32,"tag":102,"props":108,"children":109},{},[110],{"type":37,"value":111},"Purpose",{"type":32,"tag":102,"props":113,"children":114},{},[115],{"type":37,"value":116},"Example Encoding",{"type":32,"tag":118,"props":119,"children":120},"tbody",{},[121,140,158],{"type":32,"tag":98,"props":122,"children":123},{},[124,130,135],{"type":32,"tag":125,"props":126,"children":127},"td",{},[128],{"type":37,"value":129},"0–5 (6 bits)",{"type":32,"tag":125,"props":131,"children":132},{},[133],{"type":37,"value":134},"Install source",{"type":32,"tag":125,"props":136,"children":137},{},[138],{"type":37,"value":139},"0=organic, 1=Meta, 2=Google, 3=TikTok",{"type":32,"tag":98,"props":141,"children":142},{},[143,148,153],{"type":32,"tag":125,"props":144,"children":145},{},[146],{"type":37,"value":147},"6–12 (7 bits)",{"type":32,"tag":125,"props":149,"children":150},{},[151],{"type":37,"value":152},"Event type",{"type":32,"tag":125,"props":154,"children":155},{},[156],{"type":37,"value":157},"0=install, 1=registration, 2=first_purchase, 3=D7_retention",{"type":32,"tag":98,"props":159,"children":160},{},[161,166,171],{"type":32,"tag":125,"props":162,"children":163},{},[164],{"type":37,"value":165},"13–127 (115 bits)",{"type":32,"tag":125,"props":167,"children":168},{},[169],{"type":37,"value":170},"Revenue bucket + segment",{"type":32,"tag":125,"props":172,"children":173},{},[174],{"type":37,"value":175},"LTV prediction + geography + device tier",{"type":32,"tag":33,"props":177,"children":178},{},[179],{"type":37,"value":180},"MMPs (Adjust, AppsFlyer) embed this encoding in their SDK. But the encoding logic is yours to define—default MMP configurations are shallow.",{"type":32,"tag":40,"props":182,"children":184},{"id":183},"modeled-conversions-amplifying-quality-via-meta-capi-and-google-enhanced",[185],{"type":37,"value":186},"Modeled Conversions: Amplifying Quality via Meta CAPI and Google Enhanced",{"type":32,"tag":33,"props":188,"children":189},{},[190],{"type":37,"value":191},"Modeled conversion quality is directly proportional to the volume of first-party signal you send to platforms. Meta's CAPI (Conversions API) and Google Enhanced Conversions enter here. On iOS, absence of IDFA is irrelevant if you're transmitting server-side email hashes, phone hashes, and normalized user_data parameters—these allow platforms to match conversions to user cohorts and refine their models.",{"type":32,"tag":33,"props":193,"children":194},{},[195],{"type":37,"value":196},"Meta CAPI drove 15–20% ROAS improvement on iOS (Meta Business Partner data, Q4 2025). Why? Conversions that never reach the pixel are captured server-side and matched to user cohorts, informing Meta's broader model. Critical requirements: event_id must match between pixel and CAPI (deduplication), user_data must be SHA-256 normalized, event_time must align with server timestamp.",{"type":32,"tag":33,"props":198,"children":199},{},[200,202,211],{"type":37,"value":201},"Google Enhanced Conversions operates similarly but through a different mechanism. When enabled in Google Ads, enhanced conversions can append user_data from a GTM server container. Google cross-references this data against its logged-in user graph for cohort matching. Note: enhanced conversions work in apps, not just web—but server-side setup in mobile is more complex. You need Firebase SDK + Cloud Functions for a proper ",{"type":32,"tag":203,"props":204,"children":208},"a",{"href":205,"rel":206},"https:\u002F\u002Fwww.roibase.com.tr\u002Fen\u002Fppc",[207],"nofollow",[209],{"type":37,"value":210},"first-party data architecture",{"type":37,"value":212},".",{"type":32,"tag":40,"props":214,"children":216},{"id":215},"post-lookback-maturity-7-day-attribution-windows-are-insufficient",[217],{"type":37,"value":218},"Post-Lookback Maturity: 7-Day Attribution Windows Are Insufficient",{"type":32,"tag":33,"props":220,"children":221},{},[222],{"type":37,"value":223},"iOS attribution windows are typically 1–7 days: SKAdNetwork is 24–72 hours, Meta iOS attribution is 7 days, Google Ads is configurable but defaults to 7 days. Problem: user behavior doesn't compress into a week. High-consideration categories (subscriptions, e-commerce) frequently see first purchase at 14–30 days post-impression.",{"type":32,"tag":33,"props":225,"children":226},{},[227],{"type":37,"value":228},"Post-lookback maturity means retroactively accounting for conversions occurring after the short window. Example: user clicks on day 3, converts on day 12—this event misses Meta's 7-day window but is real. If you're tracking cohort LTV, you must manually attribute this conversion back to the campaign.",{"type":32,"tag":33,"props":230,"children":231},{},[232,234,241,243,249],{"type":37,"value":233},"Method: monitor install cohorts, measure revenue progression (D7 → D14 → D30), redistribute the delta to campaigns. Manual process, but automation is achievable via BI + data warehouse. In BigQuery, use ",{"type":32,"tag":235,"props":236,"children":238},"code",{"className":237},[],[239],{"type":37,"value":240},"FIRST_VALUE()",{"type":37,"value":242}," window functions to match install_date to campaigns, then distribute LTV increments via weighted attribution. Roibase's ",{"type":32,"tag":203,"props":244,"children":246},{"href":205,"rel":245},[207],[247],{"type":37,"value":248},"performance marketing",{"type":37,"value":250}," infrastructure includes this pipeline by default.",{"type":32,"tag":40,"props":252,"children":254},{"id":253},"incrementality-testing-can-you-actually-trust-modeled-data",[255],{"type":37,"value":256},"Incrementality Testing: Can You Actually Trust Modeled Data?",{"type":32,"tag":33,"props":258,"children":259},{},[260],{"type":37,"value":261},"How accurate are modeled conversions? You can't know without testing. Incrementality testing—holdout or geo-based experiments—is now mandatory for iOS campaigns. Meta Conversion Lift, Google Campaign Experiments, and TikTok Split Testing all serve the same purpose: measure conversion delta between groups exposed to campaigns and control groups.",{"type":32,"tag":33,"props":263,"children":264},{},[265],{"type":37,"value":266},"Example: 10% of users go to holdout (no ads), 90% to treatment (ads shown). After 30 days, treatment conversion is 5%, holdout is 3.5%—net lift is 1.5% (absolute). If platforms report 3.0x ROAS but incrementality testing shows 1.2x, modeled data is overestimating. Apply this gap as an adjustment factor to campaign ROAS.",{"type":32,"tag":33,"props":268,"children":269},{},[270],{"type":37,"value":271},"Geo-based tests are more robust but slower. Partition users by geography, run ads in one cohort, suppress in another. Measure conversion delta after 4–8 weeks. Meta's Conversion Lift tool automates this; Google Ads requires manual setup (campaign draft + experiment).",{"type":32,"tag":40,"props":273,"children":275},{"id":274},"the-2026-ios-attribution-stack-architecture",[276],{"type":37,"value":277},"The 2026 iOS Attribution Stack Architecture",{"type":32,"tag":33,"props":279,"children":280},{},[281],{"type":37,"value":282},"A modern iOS measurement stack looks like this:",{"type":32,"tag":284,"props":285,"children":286},"ol",{},[287,299,309,319,329,339],{"type":32,"tag":288,"props":289,"children":290},"li",{},[291,297],{"type":32,"tag":292,"props":293,"children":294},"strong",{},[295],{"type":37,"value":296},"SKAdNetwork 4 integration",{"type":37,"value":298}," — conversion value encoding + hierarchical source IDs via MMP",{"type":32,"tag":288,"props":300,"children":301},{},[302,307],{"type":32,"tag":292,"props":303,"children":304},{},[305],{"type":37,"value":306},"Meta CAPI + Google Enhanced",{"type":37,"value":308}," — server-side event transmission with user_data enrichment",{"type":32,"tag":288,"props":310,"children":311},{},[312,317],{"type":32,"tag":292,"props":313,"children":314},{},[315],{"type":37,"value":316},"Modeled conversions interpretation",{"type":37,"value":318}," — read platform dashboards carefully, flag \"modeled\" data, compute aggregate ROAS",{"type":32,"tag":288,"props":320,"children":321},{},[322,327],{"type":32,"tag":292,"props":323,"children":324},{},[325],{"type":37,"value":326},"Cohort-based LTV tracking",{"type":37,"value":328}," — BigQuery\u002FSnowflake install-to-revenue matching, post-lookback attribution",{"type":32,"tag":288,"props":330,"children":331},{},[332,337],{"type":32,"tag":292,"props":333,"children":334},{},[335],{"type":37,"value":336},"Incrementality testing cadence",{"type":37,"value":338}," — minimum one holdout experiment per quarter, calculate lift factors",{"type":32,"tag":288,"props":340,"children":341},{},[342,347],{"type":32,"tag":292,"props":343,"children":344},{},[345],{"type":37,"value":346},"Creative testing velocity",{"type":37,"value":348}," — leverage SKAdNetwork creative-level granularity for rapid iteration",{"type":32,"tag":33,"props":350,"children":351},{},[352],{"type":37,"value":353},"Building this stack takes 6–8 weeks: MMP onboarding, server-side CAPI\u002FEnhanced configuration, data warehouse pipelines, BI dashboards. Once deployed, iOS ROAS confidence improves by 20–30%—because you're reading modeled data correctly, validating with incrementality, and capturing full cohort LTV.",{"type":32,"tag":33,"props":355,"children":356},{},[357],{"type":37,"value":358},"iOS 17 attribution is not dark. It's different. Deterministic signal diminished but probabilistic and aggregate methods matured. When your stack is engineered properly, campaigns remain measurable and optimizable. The foundation: accept modeled data as operational, invest in incrementality testing, and enforce cohort-based analytics discipline. In 2026, anyone scaling iOS spend must master this trinity.",{"title":16,"searchDepth":360,"depth":360,"links":361},3,[362,364,367,368,369,370],{"id":42,"depth":363,"text":45},2,{"id":63,"depth":363,"text":66,"children":365},[366],{"id":85,"depth":360,"text":88},{"id":183,"depth":363,"text":186},{"id":215,"depth":363,"text":218},{"id":253,"depth":363,"text":256},{"id":274,"depth":363,"text":277},"markdown","content:en:marketing:ios-17-post-attribution-stack.md","content","en\u002Fmarketing\u002Fios-17-post-attribution-stack.md","en\u002Fmarketing\u002Fios-17-post-attribution-stack","md",1778709810281]