Skip to main content
Human Approval Gates

AI suggests, you approve

Tag any step with manual_approval: execution pauses there and notifies the approver, continuing only once approved; on rejection or timeout, not a single change reaches production.

Step-level gating with manual_approvalEditable values in the approval formRespond via in-app, email, or API
asa-bid-optimizerPAUSED
fetch_asa_report
Pull the ad campaign report and targeting keywords
propose_bid_changes
The AI reviews term by term and writes bid-change and pause suggestions
approve_bid_changesHuman
Pause execution and wait for the approver
execute_approved
Execute only the approved actions
How it works

Tag a step with manual_approval and every write action stops in front of a person

Approval gating is step-level: within the same workflow, pulling data and running analysis keep running automatically, while steps that move money or touch production config stop and wait for a person.

01Pause And NotifyWhen execution reaches a step tagged manual_approval, the workflow suspends immediately; the approval request goes to both the in-app inbox and email, and it's also queryable via the API.
02The approver reviews and editsThe approval form lists each pending action and its context data; value fields can be edited inline, and the edited value is what actually executes.
03Approve, reject, or time outAfter approval, execution continues from where it paused; rejection immediately stops all following actions; exceeding the configured time limit is treated as a rejection automatically, leaving production unchanged.
Editable approval form

Change $0.90 to $0.80, then click Approve

A subscription app team's bid approval is exactly this kind of form: the AI suggests raising the bid for File Conversion from $0.65 to $0.90, the approver thinks that's too high, changes it to $0.80 and approves, and $0.80 is what actually executes.

  • Edit value fields inline, and the workflow executes with the edited values
  • Select each action individually; unselected ones won't execute
  • On rejection or timeout, zero changes to production
  • Every approval and rejection is recorded and queryable per execution via the API
approve_bid_changesPENDING
timeout · 24h
raise_bidKeyword "File Conversion"
Current bid$0.65Suggested bid$0.80The approver changed the AI's suggested $0.90 to $0.80
raise_bidKeyword "PDF Tools"
Current bid$0.40Suggested bid$0.55
pause_keywordKeyword "Free Download"
Reason for pauseKeeps spending without driving subscriptions
Approve selectedReject allDemo interface; values are examples
Response channels

Approval requests go to three places

The moment the workflow pauses, the notification is already out; it takes effect no matter which entry point you use to handle it.

In-App InboxPending requests collect in the inbox; open one to see the full approval form, edit the values, and approve or reject right on the page.
inbox
Email NotificationThe approval request is also sent to the approver's email, stating the timeout deadline and reminding you to act before auto-rejection.
email · timeout
API ResponseUse an API Key scoped to APPROVAL_RESPOND only to query and respond to approvals, wiring it into an on-call bot or your own ops backend.
scope · APPROVAL_RESPOND
Case Studies

A subscription app team puts every Apple Search Ads bid change behind approval: the AI reviews keywords term by term, generates bid-change and pause suggestions, and submits them for review grouped into 5 action types; the approver goes through each group and edits bids directly where needed. On rejection or timeout, nothing changes in production.

Up to 5,000 keywords per reviewBid changes submitted for review in 5 groups24h approval before cold-start launch
Put steps that change production behind approval
Sign up free and build your process from a template; to add approval to a step, just tag it with manual_approval.