Apple Search Ads
Attribute iOS installs to the Apple Search Ads ad group, keyword, and country that produced them. Attribution itself runs through the SDK with no app code changes; the API connection adds live spend, taps, and impressions to the dashboard.
Requirements
- The AppSprint SDK installed in your iOS, React Native, Flutter, or Expo app. The SDK collects the AdServices attribution token automatically.
- An Apple Search Ads account with an API role that can read reporting data. API Account Manager is recommended for setup.
- Your App Store ID (the numeric ID at the end of your App Store URL).
- Users on iOS 14.3 or later. AdServices attribution is unavailable on older iOS versions.
Available metrics and definitions
| Metric | Definition |
|---|---|
| Spend | Apple Search Ads spend over the selected window. |
| Installs | Installs Apple reports over the selected window. |
| CPI | Cost per install. Spend divided by Apple-reported installs. |
| Impressions | Times the ad was shown, reported by Apple. |
| Taps | Ad taps, reported by Apple. |
| TTR | Tap-through rate. Taps divided by impressions. |
| CR | Conversion rate. Installs divided by taps. |
| ROAS | Return on ad spend. Attributed revenue divided by spend. |
| Revenue | Revenue from in-app events attributed to this Apple Search Ads row. |
Attribution data attached to each install
Every install AppSprint attributes to Apple Search Ads carries these fields, resolved from the AdServices attribution token. Human-readable ad group and keyword names aren't included in Apple's AdServices response. Raw install attribution keeps stable Apple IDs; reporting views can enrich names from Apple's reporting API when available.
| Field | Description |
|---|---|
| orgId | Campaign Group that owns the attribution record. |
| campaignId | Apple Search Ads record that produced the install. |
| adGroupId | Ad group within that Apple Search Ads record. |
| adId | Ad assignment ID, when Apple includes ad-level attribution. |
| keywordId | Keyword that triggered the ad. Apple returns the numeric ID; Search Match installs may not include one. |
| countryOrRegion | User's country or region as reported by Apple. |
| conversionType | Whether the install was a fresh download or a redownload. |
| claimType | Whether Apple attributed the install to a tap or view. |
| clickDate | Tap-through timestamp when Apple includes one. |
| impressionDate | View-through timestamp when Apple includes one. |
| supplyPlacement | Apple Ads supply placement for the attributed interaction. |
Open the connection form in AppSprint
In AppSprint, open your app and go to Integrations → Apple Search Ads. Click Set up. AppSprint displays a public key. Keep this tab open — you'll paste the key into Apple in the next step.
Generate the API certificate in Apple Search Ads
The three IDs come from one certificate
- In Apple Search Ads, go to Settings → API and click Create API Certificate.
- Paste the public key from the AppSprint dashboard and confirm.
- Apple displays three values. Copy each one: Client ID, Team ID, and Key ID.
You don't need to copy a Campaign Group ID. AppSprint discovers every Campaign Group the certificate can see, and your App Store ID narrows the results back to this app.
Finish the connection in AppSprint
- Paste the Client ID, Team ID, and Key ID into the AppSprint form.
- Enter your App Store ID (the numeric ID at the end of your App Store URL).
- Save. AppSprint validates the credentials against Apple immediately by listing the Campaign Groups the certificate can see. Errors point at the value to re-check.
Attribution works without app code
configure(). No extra code required.Troubleshooting
| Problem | What to try |
|---|---|
| Connection rejected | Apple's response usually points at one of the three IDs. Re-open the Search Ads UI, copy each value (Client ID, Team ID, Key ID) again, and confirm the API certificate hasn't been rotated. |
| Dashboard can't load data from Apple | Most causes are transient. Apple rate-limits and occasionally returns 5xx errors. Refresh in a few seconds. If it keeps failing, re-run the connect form to refresh access. |
| Missing App Store ID banner | A Campaign Group can hold several apps. AppSprint uses the App Store ID to scope the list. Open the connection form and paste the numeric ID from your App Store URL. |
| An install came back as organic | Either Apple didn't find a matching ad interaction in its window, the device is on iOS older than 14.3, or no valid AdServices token reached AppSprint within Apple's 24-hour token TTL. |