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. Before opening a manual queue, assign its primary and approver so every request has an accountable owner. You can optionally choose a separate escalation audience.

The two settings

SettingControlsValues
creativeApprovalBuyer-submitted creatives (sync_creatives)auto or manual (default manual)
mediaBuyApprovalBuyer-submitted media buys (create_media_buy)auto or manual (default manual)
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.
You cannot newly enable a manual approval class until its approval routing has at least one active primary approver. One person is enough. 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. Configure routing in the Approvals widget. Existing manual storefronts remain fail-closed while they complete this setup; Interchange never turns approval on or off automatically to repair a missing route.
Approval settings apply only to ad-server-backed storefronts (your Google Ad Manager, FreeWheel, or SpringServe inventory). Storefronts that route to an external sales agent or a linked storefront pass through — there’s no review queue in front of someone else’s agent.

The lowest-risk posture: review everything

The safest setup — and the default — is both settings manual: nothing a buyer submits reaches your ad server until you’ve approved it. The approval gate runs before any ad-server write, so no order or line item is created upstream while an item is pending. One honest nuance:
  • creativeApproval: manual holds every creative. Each one lands in your queue as pending_review.
  • mediaBuyApproval: manual is policy-gated, not a blanket hold. A media buy the evaluator judges clearly on-policy is auto-forwarded; everything else queues. So if you want a human to see every buy, keep it manual and make sure your acceptance policy doesn’t pre-clear buys you’d want to eyeball. Until you’ve written an acceptance policy, manual is the right default.
The pre-screen reads your written acceptance policy against the buy and sorts it into three buckets: clearly on policy (auto-forwarded), needs a look (queued), and clearly against an explicit rule you wrote — e.g. a category you stated in plain block language. That last bucket is surfaced as a strong decision-support signal on the queued item; the buy still queues for you (the platform does not auto-reject on its own yet), so you always make the call. 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.

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 a pre-screen verdict, and you approve or reject inline. Its Approval routing section lets admins choose a primary approver and optional escalation roles or users, email/Slack delivery, and reminder/escalation timing. The queue includes Mine, Team, Overdue, and Unowned views, and admins can reassign open work to an eligible approver. If routing settings cannot load, the section stays visible with a retry action; non-admins see that a customer admin must manage it. Ask Murph to open the widget (“show me what’s waiting on me”).
  • 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 Murph — “what needs my approval?” lists the pending media buys and creatives; Murph pulls the details before any decision.
  • 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. 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 skip both your review queue and the acceptance-policy screen and forward straight to your ad server. Trust here means trust — their buys are not policy-checked, so only opt in a buyer whose buys you’d approve unseen.
  • 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