Apple Search Ads
Plans, launches, and optimizes Apple Search Ads (Apple Ads, ASA) campaigns for iOS apps: bids, keywords, budgets, CPA, attribution.
Skill by clawic
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/clawic-apple-search-ads
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, backend, testing, marketing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/apple-search-ads
What's inside
- Skill name
Apple Search Ads- Description
- Plans, launches, and optimizes Apple Search Ads (Apple Ads, ASA) campaigns for iOS apps: bids, keywords, budgets, CPA, attribution. Use for paid iOS user acquisition and App Store ads — launching or restructuring campaigns, mining search-term reports, graduating keywords, defending brand terms, scaling spend, expanding to new countries, testing Custom Product Pages, wiring AdServices or SKAdNetwork attribution, automating reports and changes via the Campaign Management API, or diagnosing why CPA spiked, keywords get no impressions, a campaign stops spending its budget, ads got rejected, or ASA, SKAN, and MMP install counts disagree. Not for App Store listing optimization itself (ASO).
- License
- MIT
- Instructions
- 173 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Agent Skills spec issues
- name: only lowercase letters, digits and single hyphens allowed
- name: "Apple Search Ads" does not match folder "apple-search-ads"
Files (10)
- SKILL.md
- _meta.json
- api-reference.md
- ios-integration.md
- measurement.md
- memory-template.md
- scripts.md
- setup.md
- strategy.md
- troubleshooting.md
SKILL.md (first lines)
Toolkit for Apple Search Ads (rebranded "Apple Ads" in 2024; API paths still read `searchads`): Campaign Management API v5, attribution (AdServices + SKAdNetwork), bid math, diagnosis, and scaling strategy. All local state (config, memory, campaign notes, reports) lives in `~/Clawic/data/apple-search-ads/` (see `setup.md` on first use, `memory-template.md` for file formats). If you have data at an old location (`~/apple-search-ads/` or `~/clawic/apple-search-ads/`), move it to `~/Clawic/data/apple-search-ads/`, and say in one line that you moved it and from where. Credentials are never stored here: the five `ASA_*` values are read from your environment or key file at call time, they are the standard set Apple's Campaign Management API requires for JWT auth (client, team, key, org, private key), and every spend-changing call is confirmed with you first (see `confirm_before_push`).
## Configuration
User-dependent variables. Defaults apply until the user states a preference; store them in `~/Clawic/data/apple-search-ads/config.yaml`.
| Variable | Type | Default | Effect |
|---|---|---|---|
| currency | string (ISO code) | USD | Currency for every bid, budget, and CPA example; passed in all API money objects |
| report_timezone | UTC \| ORTZ | UTC | Passed as `timeZone` in every report request — one value everywhere, never mixed (Traps) |
| ltv_divisor | number (3-5) | 4 | Target CPA = LTV / `ltv_divisor`; 3 = aggressive payback, 5 = conservative (`strategy.md`) |
| mmp | none \| appsflyer \| adjust \| singular \| kochava \| branch | none | With an MMP set, it owns AdServices and SKAN integration and cross-channel truth (`ios-integration.md`, `measurement.md`) |
| confirm_before_push | bool | true | Every API mutation (bids, budgets, status, keywords) is listed and confirmed before pushing; false = push and log without asking. Setting it to false means real ad spend changes without a prompt: only do it for campaigns you own and can afford to have moved unattended; campaign DELETE stays confirmed either way |
| naming_pattern | text | App - Country - Intent | Template for every campaign name in create payloads, scripts, and memory logs; parsing reports assumes this pattern |
Preference areas to record as the user reveals them:
- **tooling** — dashboard vs API/scripts, report automation cadence; decides whether plays are given as UI steps or curl commands
- **conventions** — ad group naming, experiment tagging, negative-list hygiene; shapes create payloads and memory logs
- **markets** — home market, expansion order, localization resources; shapes Multi-Country guidance in `strategy.md`
- **risk posture** — payback aggressiveness, scaling speed within the 20-30% step band, how proactively to flag overspend
- **reporting** — source of truth per KPI, deliverable format and cadence; shapes `measurement.md` reconciliation and report outputs
## When To Use
- Launching or restructuring campaigns for an iOS app
- Optimizing bids, budgets, keywords, or CPA on running campaigns
- Diagnosing problems: no impressions, budget not spending, CPA spikes, rejected ads, API errors, mismatched install counts
- Wiring attribution (AdServices, SKAdNetwork, MMP) into the app and deciding which numbers to trust
- Automating reports and weekly optimization via the API
- Deciding scaling, multi-country expansion, or Custom Product Page tests
- Mode: acts directly via the API when the user grants credentials; otherwise advises on structure and strategy. Not for App Store metadata/screenshot work itself — route to `aso`; this skill only flags when CVR points there.
## Quick Reference
Route by what you need to do. Read one file; each is self-contained.
| Situation | Go to |
|-----------|-------|
| First run, `~/Clawic/data/apple-search-ads/` missing, loading preferences | `setup.md` |
| Saving apps, targets, campaign structure, learnings to memory | `memory-template.md` |
| Authenticating, base URL/headers, endpoints, payloads, campaign/ad group/keyword objects, report requests, metrics, error codes, rate limits | `api-reference.md` |
| No impressions, spend with no installs, budget not spending, CPA suddenly spiked, campaign ON_HOLD or rejected, API 401/403/429 | `troubleshooting.md` |
| Adding attribution in the iOS app (AdServices, SKAdNetwork conversion values, MMP integration, testing) | `ios-integration.md` |
| Choosing a source of truth, reconciling ASA vs SKAN vs MMP counts, estimating LTV, brand-spend incrementality, cohort ROAS | `measurement.md` |
| Planning structure, placements, match types, keyword tiers, bidding, benchmarks, budget allocation, scaling, multi-country, Custom Product Pages | `strategy.md` |
| Running curl/jq automation (get token, daily/search-term/keyword reports, add keywords/negatives, weekly optimization) | `scripts.md` |
| Anything else | Apply Core Rules below, then route to the closest file |
## Core Rules
### 1. Bid Backwards From LTV, Never From Competitors' Bids
Max CPT = target CPA × expected CVR. Target CPA $6 and CVR 50% → max CPT $3.00. A bid above your max CPT needs an explicit reason (brand defense); a bid copied from "what the niche pays" has none. CPA math lives in `strategy.md`; LTV estimation in `measurement.md`.
### 2. Structure Is the Strategy: One Intent Per Campaign
Brand, category, competitor, discovery — separate campaigns. ASA has no portfolio bid strategies or shared budgets; campaign separation is the only budget and reporting control you get, so mixing intents removes your only lever.
### 3. "Exact Match" Is Not Exact
ASA exact match also serves plurals and common misspellings (Apple-documented). Before concluding a keyword works or fails, open the search term report and see which queries actually spent the money.
### 4. Graduate and Negate
Weekly: any search term with ≥2 installs and CPA ≤ target → add as exact match in its intent campaign AND as a negative where it was discovered. Skip the negative and the discovery campaign keeps buying the term, splitting its data forever.
### 5. Defend Your Brand
Competitors WILL bid your name, and your relevance advantage makes brand defense the cheapest CPA in the account. Impression share is reported as a range, not a point; if the high bound on brand terms sits below ~90%, raise brand bids. Whether brand spend is incremental at all is testable — holdout protocol in `measurement.md`.
### 6. One Country Per Campaign
CPT, CVR, and query language differ per market; blended reporting makes every bid decision wrong somewhere. Separate campaigns per country/region.
### 7. Spend Gates Before Scale
Keyword spend ≥ 2× target CPA with 0 installs → cut the bid sharply (30-50%) or pause. Example: target CPA $6 → any keyword that burned $12 with no install acts today, not at month end.
### 8. Bid Your True Max — the Auction Is Second-Price
Apple has described the auction as second-price: you pay just above the next-highest bid. Shading below your max CPT mostly loses auctions; it rarely saves money. Cap risk with the spend gate (Rule 7), not with timid bids.
## Output Gates
Before pushing any change through the API:
- Is the new bid computed from max CPT (Rule 1), not from current bid ± gut feel?
- One variable per keyword/ad group per cycle (bid OR creative OR match type)?
- Is the decision backed by the minimum window in `strategy.md` (7 days; 14 for competitor campaigns), and does that window end ≥2 days back (recent rows still backfill — `measurement.md`)?
- Budget increase within the 20-30% step limit (`strategy.md` → Scaling)?
- If `confirm_before_push` is true (default), was the change list shown and confirmed?
- Change and expected effect logged to `~/Clawic/data/apple-search-ads/memory.md`?
## Architecture
Memory lives in `~/Clawic/data/apple-search-ads/`. See `memory-template.md` for structure.
```
~/Clawic/data/apple-search-ads/
├── config.yaml # Declared variables (Configuration table above)
├── memory.md # Active campaigns, preferences, learnings
├── credentials.md # OAuth config (NEVER commit real secrets)
├── campaigns/ # Campaign-specific notes and performance
│ └── {app-id}/
├── reports/ # Generated reports
└── scripts/ # Custom automation
```
## Traps
| Trap | Why it fails | Do instead |
|------|--------------|------------|
| Treating `cpaGoal` as a spend cap | It is advisory; Apple can spend far past it | Control CPA with bids and the spend gate (Rule 7) |
| Refining age/gender to "focus" targeting | Excludes every user with Personalized Ads off — a large, invisible slice | Stay broad; segment by keyword intent instead |
| Search Match ON in every ad group | Your own ad groups compete for the same queries; data fragments | Search Match only in the discovery campaign |
| Same bid across all keywords | Brand, category, and long-tail have different values | Tier bids off max CPT (`strategy.md`) |
| Judging dayparting by install timestamps | SKAN postbacks arrive hours to days late | Daypart on tap timestamps |
| Comparing ASA dashboard installs to MMP installs | Different attribution windows and models; they never match | Pick one source of truth per KPI (`measurement.md`); record it in memory.md |
| Reading today's report rows as final | Installs attribute retroactively to their tap date across the 30-day window | Judge windows that end ≥2 days back; treat newer rows as provisional |
| Launching on a weak product page | You pay per tap; low CVR taxes every dollar | Fix ASO first, then buy traffic |
| Mixing timezones across reports | ASA reports accept UTC or ORTZ; mixing misaligns days | Set `report_timezone` once and pass it in every request |
| No cross-campaign negatives | Category/discovery campaigns quietly buy your brand queries at brand-level CPTs | Add brand terms as negatives in every non-brand campaign |
| Scaling budget in big jumps | Volume spikes re-enter auctions at worse positions; CPA jumps | 20-30% per step (`strategy.md` → Scaling) |
## Where Experts DisagreeFrom clawic/skills, MIT.
More from clawic/skills
- 0.595score
Anki
clawic
Builds and repairs Anki decks: card writing, FSRS and SM-2 deck options, leeches, review workload, imports, and sync.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Analysis
clawic
Audits an AI agent's own setup — workspace, config, memory, skills, jobs, integrations — and reports what is broken, exposed, or wasteful.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Accountant
clawic
Keeps books that close: double-entry entries, reconciliation, month-end close, financial statements, and the tax filings that follow.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
API / Application Programming Interface
clawic
Integrates and debugs third-party REST and GraphQL APIs: auth, rate limits, pagination, webhooks, with reference for 147 services.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Android
clawic
Builds, debugs, ships, and hardens Android apps: Gradle, Jetpack Compose, XML Views, ADB, and the Play release path.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Agents
clawic
Designs, debugs, evaluates, and hardens AI agents — the loop, tools, memory, context budget, cost, and escalation — independent of any framework.
SkillBFreshness: B★ 19Claude Code +9 - 0.592score
Apple Maps (MacOS)
clawic
Search places, open routes, and run Apple Maps workflows on macOS using local CLI commands and shortcut automation with explicit safety checks.
SkillBFreshness: B★ 19Claude Code +9 - 0.592score
Apple Mail (MacOS)
clawic
Use local CLI to manage Gmail, Outlook, iCloud, Yahoo, Fastmail, and other mail accounts synced in Apple Mail on macOS, without APIs or OAuth.
SkillBFreshness: B★ 19Claude Code +9 - 0.592score
Apple News (MacOS)
clawic
Open Apple News, read Apple News links, and run local News workflows on macOS using deterministic CLI commands and shortcut-based search fallback.
SkillBFreshness: B★ 19Claude Code +9 - 0.592score
AirDrop
clawic
Send local files to nearby Apple devices through AirDrop with macOS guardrails, staging checks, and automation-friendly workflows.
SkillBFreshness: B★ 19Claude Code +9 - 0.592score
Apple Calendar (MacOS)
clawic
Use local CLI to manage Apple, Google, iCloud, Outlook, CalDAV, and other calendars synced in macOS Calendar, without API keys or OAuth.
SkillBFreshness: B★ 19Claude Code +9 - 0.592score
AppleScript
clawic
Write and run safe AppleScript automation on macOS with dictionary discovery, robust quoting, and deterministic read-first workflows.
SkillBFreshness: B★ 19Claude Code +9
Signals
- Stars
- 19
- Forks
- 7
- Open issues
- 0
- Last commit (this folder)
- Jul 27, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/clawic/skills
- Website
- clawic.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from clawic
- 0.595score
API / Application Programming Interface
clawic
Integrates and debugs third-party REST and GraphQL APIs: auth, rate limits, pagination, webhooks, with reference for 147 services.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Agents
clawic
Designs, debugs, evaluates, and hardens AI agents — the loop, tools, memory, context budget, cost, and escalation — independent of any framework.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Android
clawic
Builds, debugs, ships, and hardens Android apps: Gradle, Jetpack Compose, XML Views, ADB, and the Play release path.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Anki
clawic
Builds and repairs Anki decks: card writing, FSRS and SM-2 deck options, leeches, review workload, imports, and sync.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Accountant
clawic
Keeps books that close: double-entry entries, reconciliation, month-end close, financial statements, and the tax filings that follow.
SkillBFreshness: B★ 19Claude Code +9 - 0.595score
Analysis
clawic
Audits an AI agent's own setup — workspace, config, memory, skills, jobs, integrations — and reports what is broken, exposed, or wasteful.
SkillBFreshness: B★ 19Claude Code +9
Cite this page
Apple Search Ads skill. Agent Mart. https://agentmart.dev/skills/clawic-apple-search-ads (last updated 2026-10-24)