# Apple Search Ads

Connect your Apple Search Ads API so the dashboard shows what the range's installs cost — spend, ads-attributed revenue, installs, CPI, impressions, and the per-app split next to your event data.

Other guides: [quickstart.md](quickstart.md) · [events.md](events.md) · [revenuecat.md](revenuecat.md) · [apps.md](apps.md)

## Setup

Create an API user at [searchads.apple.com](https://searchads.apple.com) → **Account Settings → API**. Apple gives you four identifiers and a `.p8` private key file.

Dashboard → settings (gear) → **apple ads** tab:

| Field | Where it comes from |
|---|---|
| Client ID | the API user's `SEARCHADS.…` client id |
| Team ID | the API user's `SEARCHADS.…` team id |
| Key ID | the uuid on the key's page |
| Org ID | the number in the account menu, top right |
| Private key | the `.p8` file's contents, pasted verbatim |

**Connect** validates the credentials live against Apple before storing anything — a bad paste fails with Apple's answer. The private key is encrypted at rest and never rendered back out; disconnect deletes the row.

## What you get

- The **Apple Ads** card: spend, ads-attributed revenue, installs, CPI, impressions for the selected range, plus a by-campaign split (by-app in portfolio mode).
- Read scope only — ActivationPal reads campaign reports; it never edits campaigns, keywords, or budgets.
- Attributed revenue joins your own events: AdServices-attributed devices ([events.md](events.md) `install_attribution`) × RevenueCat purchases ([revenuecat.md](revenuecat.md)).
- Per-app rows need each app's App Store ID in settings ([apps.md](apps.md)).

Credentials belong to your account: every member of your workspace apps sees the same connection through you; agent keys you mint ([agent-api.md](agent-api.md)) report ads from your org.
