Apple Ads Attribution With the AdServices API: How It Works and Common Gaps
Explains what attribution tokens reveal, why local builds may fail, and how Airbridge fills campaign, cost-data, and deduplicated-reporting gaps.

Key Takeaway
- The AdServices framework returns only a limited amount of data because the AdServices REST API does not require authentication.
- Airbridge can track Apple Ads campaigns when the Airbridge iOS SDK is installed in the app and the AdServices framework is enabled.
- An MMP applies one attribution logic across channels so budget decisions can use deduplicated data.
AAAttribution.attributionToken() is the first call most teams add when they start Apple Ads, and it is also where many first meet the "Error posting to Attribution server" message. Even when the token exchange succeeds, the response holds numeric campaign and keyword IDs, so you still have to connect them to keyword names, spend and in-app revenue. Knowing what the token carries, why it fails during development and which gaps remain helps you decide how much to build yourself.
Limited Data From Unauthenticated Tokens
AAAttribution.attributionToken() generates a Base64-encoded token with a 24-hour lifetime on the user's iOS device when your app calls it. Because the AdServices REST API does not require authentication, the AdServices framework returns only a limited amount of data.
When you only rely on this raw token, you do not get the full picture of your marketing performance. You cannot see human-readable campaign names, ad spend, or how those attributed installs behave once they enter your subscription funnel. It acts as an initial handshake verifying whether an Apple Ads interaction happened, rather than a complete reporting system.
Server-Side Token Exchange Flow
Getting attribution payload data requires passing that on-device string from your client app to a server, which then makes a POST request to Apple's attribution endpoint. When building or evaluating how your stack handles this exchange, focus on three operational realities:
- Network latency and transient status codes require exponential backoff and retry queues on your server so you do not drop attribution records when an endpoint temporarily fails.
- Raw numerical identifiers in the response payload must be mapped and stored against internal user IDs before a user starts a trial or triggers a paywall event.
- Client-to-server handoffs need strict deduplication so an app reinstall or a repeated launch does not overwrite the original acquisition source or trigger duplicate postbacks.
Building and maintaining this exchange pipeline in-house pulls engineering time away from your core product. Every time a request times out or a token expires in transit, you lose visibility into the ad spend that brought that user into your app.
Why Tokens Fail in Local Builds
Apple's documentation says you need unimpeded internet access to receive a token and should not use a simulator when generating one, so test on a real device. Then check how your project build is configured.
Airbridge tracks Apple Ads campaigns when the Airbridge iOS SDK is installed in your app and the AdServices framework is enabled. When you integrate Apple Search Ads, your app build must have the AdServices framework enabled, and the Airbridge iOS SDK must be version 1.15.3 or later.
Filling the Gaps With an MMP
Even after your token exchange works in production, Apple Ads is rarely the only place you spend your budget. If you are spending $1,000 to $5,000 a month testing channels, each ad network reports the conversions it attributes to its own ads using its own rules, without knowing about touchpoints on other networks. Relying on each network's self-reported dashboard leads to double-counted conversions. An MMP applies a single attribution logic across all your channels so you can make budget decisions using deduplicated data.
Beyond deduplication, you need human-readable metadata and cost metrics to know your return on ad spend. Connecting Apple's Campaign Management API fetches the campaign name, ad group name, keyword, and ad creative name into Airbridge. To use Apple Ads cost integration, you must complete the Campaign Management API integration first. Keep in mind that Apple's Campaign Management API is available only with Apple Ads Advanced, meaning Apple Ads Basic cannot use it.
For US indie and small subscription or AI app teams running paid ads across Google, Meta, Apple Ads, and TikTok, the self-serve Airbridge Core Plan brings these pieces together in one place. Starting at $40+/mo after a 30-day free trial—with 500,000 data points per month included, $0.0001 per extra data point, and no annual lock-in so you can cancel anytime—Core Plan gives you ad network attribution for those four channels along with cost and ad spend aggregation. You also get Predictive LTV and reporting for revenue, funnels, retention, and cohorts. If you manage your paywalls and billing through RevenueCat, Adapty, or Superwall, their subscription data connects through a third-party integration, and Core Plan includes up to two.
Pre-Launch Integration Checklist
Before you push your next release to App Store Connect or turn on live ad spend, verify your setup with these two checks:
- Confirm that the Airbridge iOS SDK installed in your project is version 1.15.3 or later for the AdServices framework.
- Verify that the AdServices framework is enabled in your iOS app build.
FAQS
FAQ
Why can't I see my Apple Ads cost data when running Apple Ads Basic?
Apple Ads cost integration requires integrating Apple's Campaign Management API first, and that API is available only with Apple Ads Advanced. Accounts using Apple Ads Basic cannot use the Campaign Management API.
What campaign details are added when I integrate the Campaign Management API?
Integrating the Campaign Management API brings your campaign name, ad group name, keyword, and ad creative name data into Airbridge.
Get Started Free
See how these criteria hold up on the real thing.


