Skip to main content
When a buyer transacts against your storefront, you decide how much a human reviews before anything reaches your ad server. Two storefront settings control it, and both default to manual. Every approval always has an accountable owner: until you save a routing rule, approvals route to your organization admins by default. Save a routing rule to name a specific primary approver, and optionally a separate escalation audience.

The two settings

Each is storefront-wide and set independently. Configure them by asking Murph to set your approval settings, or with PUT /api/v2/storefront. The mode (auto vs manual) is separate from what your acceptance policy says — the policy is the content you judge against; the setting is whether a human judges at all.
A manual approval class needs at least one active primary approver. When no routing rule is saved, that is your organization admins by default — one active admin is enough, and admins receive approval reminders and escalations without any setup. Save a routing rule in the Approvals widget to choose a different audience: use a role audience where possible so staffing changes resolve automatically, or choose a named user when that is how your team works. A separate escalation audience is optional; without one, the primary audience remains responsible after the SLA. Interchange never turns approval on or off automatically to repair a missing route — a storefront with no active admin and no saved route stays fail-closed.
Interchange approval settings apply to ad-server-backed storefronts (your Google Ad Manager, FreeWheel, SpringServe, or AdsWizz inventory) and to adapter routes configured for Interchange review. Storefronts that route to an external sales agent or linked storefront pass through. So do the provider-policy-owned social adapters: LinkedIn, Meta, Pinterest, Reddit, Snap, and TikTok. There is no Interchange review queue in front of those providers. Adapter routes outside that cohort — including Amazon, Google Ads, and Spotify — retain their configured Interchange approval behavior.

Manual review: hold exceptions

The default is both settings manual. Creative review and media-buy review behave differently: every creative waits, while media buys that are clearly on policy auto-forward and exceptions wait for an operator. Approval Mechanics runs before any ad-server write for an item that is pending, so no order or line item is created upstream until that item is approved. One honest nuance:
  • creativeApproval: manual holds every creative. Each one lands in your queue as pending_review.
  • mediaBuyApproval: manual holds exceptions. Brief Acceptance runs first. Clearly on-policy buys auto-forward; ambiguous results, evaluator errors, and deterministic hard findings enter the operator queue.
The manual-mode create-time pre-screen reads your written acceptance policy against the buy and sorts it into three buckets: clearly on policy (eligible), needs a look, and clearly against an explicit rule you wrote — e.g. a category you stated in plain block language. The first bucket auto-forwards; the other two enter the queue. A deterministic hard finding supplies a strong rejection signal to the operator. The pre-screen reads what you wrote — it is not a fixed category list — so a rule like “we don’t accept fast-food advertisers” is honored even though it isn’t a built-in category. When it cannot judge a buy with confidence, it errs toward queueing it for you. For the full verdict model, the AI second opinion, and the creative fidelity guarantees, see Acceptance policy. In auto mode, the seller’s policy is enforced at product discovery: a confident policy conflict returns no products, while unavailable qualification fails open. create_media_buy then retains the established auto-forward contract instead of introducing a second evaluator gate.

How you review what’s queued

Pending items wait for your decision — approved forwards the item to the underlying sales agent; rejected carries your reason back to the buyer. You act on the queue three ways:
  • The Approvals widget in chat — your main work surface. It shows both queues (creatives and media buys) with the submitted evidence and pre-screen verdict, and you approve or reject inline. The verdict is the recommendation; the Page does not send you back to chat for another answer. If approval records but forwarding is incomplete, the Page shows that partial success honestly and offers an explicit, confirmation-gated retry in place. A failed retry leaves the retry available. Its Approval routing section lets admins choose a primary approver and optional escalation roles or users, email/Slack delivery, and reminder/escalation timing; until a rule is saved it shows the default — organization admins receive these approvals. Ad-server approvals and inventory shortfall reviews always route to organization admins. The queue includes Mine, Team, Overdue, and Unowned views, and admins can reassign open work to an eligible approver. The Overdue view is age-based — an item that has waited past its deadline (or past 24 hours with no owner at all) surfaces there, oldest first. If routing settings cannot load, the section stays visible with a retry action; non-admins see that a customer admin must manage it. Ask any compatible assistant to open Approvals (“show me what’s waiting on me”); Interchange, Claude, ChatGPT, and other MCP Apps hosts open the same portable Page.
  • Seller Setup with Murph — if a managed storefront needs manual approval but has no approver, the go-live checklist blocks that queue and asks Murph to walk an admin through the decision. Murph explains the choices, then opens the same Approvals widget for configuration.
  • Ask your assistant — “what needs my approval?” opens the Page. For one exact item, the assistant pulls its details and pre-screen before asking you to confirm an approve or reject decision; rejection also requires a reason.
  • RESTGET /api/v2/storefront/media-buy-approvals?status=pending and GET /api/v2/storefront/creative-reviews?status=pending, decided via their respective decide endpoints.
See Media-buy approvals and Creative reviews for the per-queue mechanics and buyer-facing callbacks.

How you find out something is waiting

When a buyer submits a creative or media buy for review, it appears in your Approvals widget and Murph’s pending list right away, and you also get a notification the moment it lands. In-app delivery always goes to the current approval audience. Email goes only to that audience when enabled on the routing rule — the default (organization admins) delivers in-app and email, so an unconfigured storefront still hears about waiting work. Slack posts once to your configured customer channel when both the rule and the Slack event filter enable it.
If the primary owner becomes inactive, the item moves immediately to the configured escalation audience. If there is no separate escalation audience, the primary audience remains responsible after the deadline. If no eligible approver remains active, the item appears as Unowned for admins to reassign. A reminder is sent before the deadline. Expiry never broadcasts the task to every user and never auto-approves media spend or creative.

Trusting a specific buyer (per-buyer auto-approve)

You can keep mediaBuyApproval: manual for everyone but opt one trusted buyer into automatic approval for their media buys — “auto-approve buyers I trust, review the rest.” It’s a relax-only, media-buy-only carve-out:
  • While enabled, that buyer’s media buys bypass Brief Acceptance screening and your review queue, then forward to your ad server.
  • It affects media buys only. That buyer’s creatives still follow your creativeApproval setting — creative review is a separate gate and is untouched.
  • It only relaxes. It takes effect only while mediaBuyApproval is manual; it can never put a buyer under review when the storefront is auto.
  • The buyer must be one that has submitted a media buy to your storefront — you can’t pre-arm a stranger.
Set it by asking Murph (“auto-approve media buys from Coke”) or with PUT /api/v2/storefront/buyer-auto-approvals/{buyerCustomerId}. Disable it the same way (enabled: false) — the record is kept for your audit trail, not deleted. See Per-buyer auto-approve.

What’s not configurable yet

Beyond the per-buyer media-buy carve-out above, selective approval is still storefront-wide auto-or-manual: dollar thresholds, per-buyer creative auto-approval, and forcing a single buyer under review (inverse “tighten”) are not available yet. The agent also helps you find candidates for the per-buyer carve-out above: it flags buyers whose media buys consistently clear your review — when the buys from one buyer that came to you for review have all cleared and forwarded with no rejections, you’ll see a learned_auto_approve suggestion in seller analytics pointing you at per-buyer auto-approve for that buyer. It is suggest-only: the agent recommends and you decide — it never changes an approval gate on its own.

Per-buyer auto-approve

Opt a trusted buyer into auto-approve for media buys

Media-buy approvals

The pending media-buy queue and decide endpoints

Creative reviews

The pending creative queue and decide endpoints

Ad-server access

What reaches your ad server — and how approval gates it

Notifications

What does (and doesn’t) generate a notification