Controls
Every loop has a Controls tab. Changes apply from the loop’s next run or message.
Tools
A loop gets only the tools switched on here. Calling one that is off throws, for example SMS is off for this loop. Turn it on under Controls → Tools. A new loop starts with the tools its first code uses. When you deploy code that uses a tool that is off, the deploy dialog names it.
Allowed hosts
fetch from your loop code reaches only the hosts listed here, for example api.example.com, or every subdomain with *.example.com. Anything else throws This loop cannot reach evil.com. Add it under Controls → Allowed hosts. New loops start with none. Built-in tools and bindings such as SMS and Shopify are not affected.
Needs approval
Refunds, discounts, and messages to more than one person can wait for a person. While a kind is switched on, the call returns this instead of acting:
{ status: "pending_approval", approvalId: "…", message: "…" }It shows on the Approvals page. Approve runs it then, and Reject drops it. All three are on for new loops.
| Action | Calls held |
|---|---|
| Refunds | ctx.SHOPIFY.refundOrder |
| Discounts | ctx.SHOPIFY.createDiscountCode |
| Bulk messages | ctx.SMS.send, ctx.WHATSAPP.send, and ctx.EMAIL.send to more than one recipient |