Kwern
Agents

Apple Ads agent

What the Apple Ads agent reads from your ad account, the changes it may propose, the monthly budget it paces them against, and how campaigns start from a chat.

What it does

The Apple Ads agent tunes the campaigns of your app in the connected ad account: keyword bids, daily budgets, an ad group's default bid, pauses and re-enables of campaigns, ad groups and keywords, negative keywords and keyword additions. It never proposes creating a campaign. Its instructions keep a bid or a budget move within 20 % of the value it found, and a bigger step says why in its reason.

Campaigns start in a chat. Once Apple Ads is connected, ask the chat to start your campaigns: the apple-search-ads skill asks your monthly budget, lays out Brand, Category, Competitor and Discovery campaigns with a target cost per acquisition for each, and leaves each campaign as one campaign proposal, with its ad groups, keywords and ad. Nothing reaches Apple until you press Publish on it: Kwern then creates the campaign, its ad groups, their keywords and its ad through the connection, and the campaign starts enabled. A write Apple refuses fails the proposal with Apple's reason, and Retry picks up from what was already created. To change a campaign proposal, ask its chat again. The agent tunes the campaigns from its next run.

Only the campaigns of this product's app are in scope. Nothing it decides touches the account on its own: every change waits in the approval feed until you approve it.

When it runs

Weekly, so a change has time to show in the campaigns before the next one. It is off when the product is created, because an agent that spends money is opted into rather than out of, so you turn it on from its page when you want it working. The cadence comes from the agent and is not editable, and it carries no weekly cap: how often it looks is its own ceiling.

What it needs

The Apple Ads connector, and an App Store surface — it works on the app your listing points at. Without the connection the agent is unavailable and does not run.

What it reads

Before anything else, what Kwern knows about the product: the foundation doc, the growth plan and the product memory. Then the channel itself.

  • The campaigns of your app in the connected account, read live at the moment the run starts. Only those are in scope.
  • Their Apple Ads report over the last 30 days, synced the same day.
  • The search terms report, which is where a negative keyword has to come from.
  • Their ad groups, with status, Search Match, bid strategy and default bid, and the share of impressions on each search term, per country.
  • Apple's keyword and target cost per acquisition suggestions, and how often a term is searched, on request.
  • The listing's keyword field, when App Store Connect is connected too.
  • The monthly budget set on the agent's page, or the fact that none is set, next to what the month has spent so far. It is context, not a limit: a proposal may ask for more and says so in its reason, and your approval is the only gate. A campaign outside the scope is still refused, and so is an amount that is not above zero.

What it leaves you

Proposals in four categories: bid, budget, keyword and pause, which covers re-enabling as well as pausing. Apple Ads is a channel Kwern can write to, so each one ends on approval: you approve it in the feed and Kwern applies the change to the account itself. Editing an amount before approving is part of the flow, and the figure the agent first proposed is kept.

The skills it runs

It enters through apple-search-ads, and may activate ads and analytics along the way.

Editing its instructions

The agent's page in the app carries the instructions it is given at the start of every run, and you rewrite them there — narrower campaigns, a different bar for a pause, whatever you want it to weigh. The cadence is not editable. The switch reads on, off or paused, where paused means Kwern stopped it for a reason and will resume it when that reason clears.

Apple Ads connector · Apple Ads Agent · All agents · All connectors

On this page