Loops
A loop is an automation you draw: a trigger, then steps that find ads, check their numbers and act on them, such as "every morning, pause each active ad that spent twice my cost per purchase without a sale, then tell me". Build one by asking Agent, from a template or block by block, then turn it on. From then on its trigger starts it, and every run is kept so you can see what it found and did.
Building a loop
Open Loops in the sidebar. There are three ways to start:
- Ask Agent to build it. Describe what should happen in the composer ("Describe a loop"), for example "Pause ads that spend without results". A new draft opens in the builder, and Agent builds it there while you watch, in the loop's own chat. When it's done it asks whether to preview it first or turn it on; it never turns a loop on unless you ask, and you approve that.
- Pick a template. Each template is a complete loop you can change, and opens as a new draft. Loops shows four under Start from a template; View all templates opens Templates, with all eight in three groups (see Templates).
- New loop. A new, empty draft opens in the builder. Choose a trigger, then add blocks.
A new draft that you leave without changing anything (no name, trigger or step changed) is discarded, so trying a template doesn't leave drafts behind.
You can also ask Agent from Home or from the Agent panel on any page. A loop Agent builds there works the same way.
Only AI steps (Agent, Classify, Write reply and Summarize) count toward your AI usage. Everything else is plain rules on Meta data. Budget, bid and delivery changes ask you before they happen, unless you let the loop act on its own (see Changes that ask first).
Templates
Templates groups every template by what it does. Instead of fixed amounts, which mean something different in every currency, templates compare with each ad account's own cost per purchase or count results. Schedules run in the ad account's time zone. Change any step before you turn the loop on. A template that needs a connection you don't have yet, such as Slack or Pluto Profit, says so on its card.
Optimize
| Template | What it does |
|---|---|
| Daily optimizer | Every morning, an Agent step tunes budgets and pauses what isn't working, with Meta's recommended instructions. It asks you first, then posts its report to your Inbox. |
| Pause losing ads | Every morning, pauses live ads with a ROAS under 1 over the last 7 days that spent at least twice the ad account's cost per purchase, once you approve, and tells you. Ads younger than 3 days, or whose ad set is still in Meta's learning phase, are left alone. Purchases can be reported a while after the spend, so it judges once a day rather than every hour. |
| Scale winners | On Mondays and Thursdays, gives ad sets out of the learning phase with a ROAS of 2 or more and at least 10 purchases over the last 7 days 20% more daily budget, once you approve. A few days between raises keeps them from compounding and gives Meta's delivery time to settle; frequent budget changes can restart learning. Ad sets under a campaign budget are left alone. |
| Budget pacing | Tells you when a campaign has spent 80% of its daily budget before 14:00 in the ad account's time zone. Meta may spend up to 75% over a daily budget on a given day and evens it out over the week, so this is a heads-up that the day is running ahead. |
Monitor and report
| Template | What it does |
|---|---|
| Creative fatigue alert | Every morning, tells you when an active ad with at least 1,000 impressions in the last 7 days has a frequency over 3 and a link CTR that dropped by 20%. |
| Weekly performance wrap | Every Monday, sums up last week's spend, results and best creatives, compared with the week before, for the team. |
Engage
| Template | What it does |
|---|---|
| Reply to comments | Sorts each new comment on your ads. It drafts answers to questions and posts each one once you approve, tells you about complaints and hides spam. A hidden comment stays visible to the person who wrote it and their friends, and you can unhide it. Anything else, like praise or tagged friends, is left as it is. |
| New lead follow-up | Tells you about each new lead, in the Inbox and by email. A lead's answers stay in Meta: the notification names the form. Choose Everyone on the team to tell the whole team. |
The builder
The builder has three parts:
- Blocks, on the left: every block you can add, by kind: Triggers, Find, Check, Flow, Do, AI, Notify and All actions. Search them with Search blocks. A block that needs a connection opens with what to connect.
- The canvas, in the middle: the loop from its trigger down. Select Add a step between steps, drag from the end of a path to connect it, and use Zoom in, Zoom out and Fit to screen. Where paths meet, the next step waits for all of them, or goes on with the first to arrive.
- The inspector, on the right: the selected step's settings. With nothing selected it shows the trigger, whom the loop Runs as and what's left To finish. Once the loop is saved, its Runs are on a second tab next to Setup.
Keyboard: Delete or Backspace removes the selected step or connection, Esc clears the selection, Cmd+Z
(Ctrl+Z) undoes and Shift+Cmd+Z (Shift+Ctrl+Z) redoes. Cmd+J (Ctrl+J) opens the loop's composer.
At the bottom of the canvas, the composer works on the loop you have open. Ask Agent to build or change it and the canvas updates as it saves; the steps it changed light up for a moment. When something you ask for needs a different trigger, it suggests a separate loop and makes it once you agree, linking it in its answer. See The loop's chat.
To tell people in Pluto, add Notify people from Notify: it sends an Inbox notification to you or to everyone in the workspace, and an email too when you switch on Also send an email (each person gets up to 20 of these emails a day, then the Inbox notification only).
To tell your team in Slack, add Post to Slack from Notify: choose one of the channels an admin connected, write the message and select Send test message to see it in the channel. It needs Slack connected first; see Connect Slack.
What's left to finish
A draft saves even when it isn't finished. Until everything it needs is in place, the inspector lists what's left under To finish, in the order of the loop: its name, the Meta connection, the trigger, then each step from top to bottom. Select an item to jump to the step and the setting to fill in. The loop turns on only when the list is empty, whether you turn it on in the app, through the API or by asking Agent. The list covers:
- Settings a step needs: a time and day for a schedule, a threshold, conditions with a value, an amount, a tag, a message, a Slack channel, who to notify, and Instructions for every AI step.
- Something to act on: Pause, Resume, budget and bid changes, Duplicate and Add tag need a For each above them, or a trigger about an ad, ad set or campaign, at their level or below it (an ad's ad set counts, a campaign's ads don't). Rotate creative and Rebalance budget need a For each. Comment steps, Write reply and Classify need a comment: start from New comment or add For each comment.
- Connections: Meta connected, with the permissions for comments and leads when the loop uses them; Pluto Profit for Check profit; Slack and a channel it can post to for Post to Slack; and the ad accounts a step names.
A loop that's already on keeps running while something newly asked for is missing; the run skips a step that has nothing to act on and says why.
Drafts save as you go
Every change in the builder is saved to the loop a moment after you make it, so you can close the tab and come back. Your loops are listed on the Loops page. Every member of the workspace can open a loop; guests don't see loops.
If someone else, or Agent, saves the loop while you have it open, the builder shows their version. A save never silently replaces a newer version: the builder loads the newer one first.
Saving a loop that's on keeps it on, and the next run uses what you saved. While the saved loop has something left to finish, it doesn't start new runs.
Turning a loop on
A new loop is a draft and doesn't run. Turn it on with Turn on at the top right of the builder, or with the Loop on switch next to its name; turn it off with the switch. Off stops new runs; a run that already started finishes, or you can stop it. Once the loop is on, Run now takes the place of Turn on.
When the loop has steps that change budgets, delivery or comments, Turn on this loop asks how: Ask me before acting (the default) or Act without asking. Only people who can publish ads see that choice; see Changes that ask first.
Turning it on checks that the loop is complete. Anything missing is shown on its step, and the loop stays off until it's fixed. A schedule also needs to know its time zone. "The ad account's time zone" works when Pluto can tell which one: the ad account your Find steps name, or the one time zone all your ad accounts share. Otherwise choose a time zone on the trigger.
A loop acts for its owner: the person who created it, or the person an agent built it for. It shows as "Pluto Agent via" and the owner's name, like Agent. It never does more than the person who last changed its steps may do: if a member edits an admin's loop, it runs with a member's permissions. The builder shows whom it Runs as. Both are checked on every run, so if either person leaves the workspace or can only view it, runs stop and say why.
Loops never touch API keys, webhooks, billing, members, the organization or your integrations' connections, whoever owns them. The blocks are the steps an automation can take on its own: finding and checking your campaigns, ad sets, ads and comments, acting on them, AI steps and notifications.
If a loop made earlier has a step that isn't available in loops any more, the step says so. Runs skip it, and the loop can't be turned on again until you remove it.
Triggers
| Trigger | When it runs |
|---|---|
| Schedule | Every 15 minutes, every hour, every day at a time, on the weekdays you pick at a time, or at the times you set |
| When Meta data updates | After each sync of your campaigns, ad sets and ads, and after each insights import |
| Metric crosses threshold | When a campaign, ad set or ad crosses the value you set, such as CPA above 20 today |
| Budget spent | When a campaign or ad set has spent a share of its daily or lifetime budget (80% unless you change it), for a daily budget optionally only before a time of day |
| New comment | When someone comments on your ads on Facebook, Instagram or both, and on your Page's posts if you choose |
| Ad status changed | When a campaign, ad set or ad changes status, or changes to the status you pick, such as Disapproved |
| New lead | When someone submits a lead form, or a form whose name contains the words you give |
| Creative uploaded | When a creative is uploaded to the media library, or to a launch |
| Manual run | Only when you run it |
- A schedule runs in the ad account's time zone or the one you choose. When clocks spring forward, a time that doesn't exist that day runs at the first moment after it. When they fall back, a time that happens twice runs once.
- Thresholds and budgets are checked after each insights import, for each object on its own. A loop runs once for each object that crosses, when it crosses, not again while it stays past. Money thresholds are in the ad account's currency; if your ad accounts use several, choose the currency.
- Only what happens after you turn a loop on starts it. Each schedule time, sync or event starts one run.
- If a scheduled or data-update run is still going when the next one is due, the next one doesn't start. Times that couldn't run while Pluto was catching up run once, not once for each.
Any loop that's on can also run right away with Run now, whatever its trigger. A loop that's still running can't start a second run by hand; wait for it or stop it.
What a run does
Steps run along the connections, from the trigger down.
- For each finds ad accounts, campaigns, ad sets, ads or comments, and the steps after it run once for each one, up to 1,000 matching items per step and scope in a run. It reads at most 50,000 candidates; the run reports omitted items and whether its count is complete. Narrow the scope when it is truncated.
- Checks end the path for an item that doesn't match. A number Meta didn't report never counts as 0, and money is compared only in the item's own currency. A condition can compare with another number times a factor, including the ad account's own figure over the same period, such as spend at least 2 times the ad account's cost per purchase.
- If/else takes the first path that matches, else Otherwise. Split takes every path at once.
- Where paths meet, the next step waits for all of them, or for the first if you set it to.
- Wait pauses the path for a time you set (up to 30 days) or until a time of day. Stop ends it.
- If a step fails and you set it to continue on errors, the item goes down its error path. Otherwise the run stops there, and the run says which step failed and why.
Loops read the data Pluto synced from Meta, so a run doesn't wait on Meta for every item. They change only what Pluto manages: campaigns, ad sets and ads published from Pluto or imported from Meta. Anything else is left alone, with a note in the run.
Creative has... checks recorded creative evidence for the current ad or media, or a media item you choose from the library. Choose whether any or every media item must match when an ad has multiple assets. Missing cards and unexamined evidence stay unknown, including inside a Not condition; an unknown result ends that item's path without an action. A missing match in sampled video frames does not prove a word never appeared.
The loop saves the condition and its interpretation version. Each scheduled run checks the current source and evidence again, records its evidence versions and starts no new analysis or model call for this step. The same For each limits apply, so a broad scheduled loop does not guarantee coverage of an entire library. To cover a whole library, use For each creative match.
For each creative match checks every file in the media library, every ad in your launches or every ad on Meta (optionally in one ad account) against a creative condition. The steps after it run once for each creative that matches, up to the limit you set per run (1 to 1,000). It checks everything once, then what's new or changed. It uses recorded evidence only: an unknown result doesn't match, and it starts no analysis. Put it right after the trigger, not inside another For each.
Changes that ask first
Some steps spend money or act publicly: changing a budget or bid, pausing or turning on delivery, deleting in Meta, and replying to, hiding or deleting comments. When a loop reaches one, it asks, the same way Agent does:
- The approval shows the exact effect, with every amount in the ad account's currency. It's on the run, under Waiting for approval, marked Needs approval. Budget, delivery and bid changes arrive together as one change set in your Inbox instead (see Reviewing a change set).
- Approve runs it once, as you. You need the permission it needs: publish, for all of these.
- Decline skips it, and nothing changes. An approval nobody decides within 24 hours expires and is skipped too.
- Other items carry on meanwhile. The item waiting for an approval continues once it's approved, and its path ends there if it isn't.
Decided approvals stay on the run under Approvals: Approved, Declined, Failed, Expired or Not needed.
Each action step, and the Agent step, has Ask before acting:
- Always: every change waits for approval.
- Only above limits: small changes run, bigger ones wait for approval. Set Budget increases over (10% unless you change it): a bigger increase, turning anything back on and pausing a campaign ask first. Lowering a budget and pausing an ad or ad set go ahead.
- Never: acts on its own within the step's limits, once a person with the publish permission allowed the loop to act. Choosing it asks Let this loop act on its own? first; someone without the publish permission sees it disabled.
A person with the publish permission can let a loop act without asking: with Act without asking when turning it on, or by choosing Never in a step. That applies to the version they saw: once someone saves the loop again, it asks again until they allow the new version. The header then reads Asks again after edits, and the step reads Needs your OK after changes. The changes it makes run as the person who allowed them.
Limits that keep your ads safe
Loops protect your ad accounts even when they're allowed to act. A loop's limits live in its own steps, so you set them where you build it; there are no separate workspace-wide automation limits.
| Step | Its limits |
|---|---|
| Agent | Change a budget by at most (a bid, or a budget or bid, with bids on; 20% unless you change it, at most 100%) and Keep each account's daily budgets under |
| Change budget, Change bid | The Amount per change, Never below and Never above |
| Rebalance budget | Move at most |
| Scale toward a target | Change by at most, Never below and Never above |
An Agent step's daily cap counts the budgets Meta has now, changes on their way and the run's other changes. Turning a campaign, ad set or ad back on counts as spending more. Each change is checked when it's proposed and again right before it runs, approved or not. A change over a limit is left alone and the run says why.
On top of that:
- Changes reach Meta through Pluto's publishing queue, which keeps within Meta's rate limits. Loops make at most 60 changes per ad account per hour, and at most 4 budget changes per campaign or ad set per hour. Changes past that wait and run later; the run shows when.
- If someone changed a campaign, ad set or ad outside Pluto after the loop read it, or in the last hour, the loop leaves it alone and says so in the run.
- One change raises a budget by at most 100% or lowers it by at most 90%, and never to 0. This holds for every automated change: loops, Agent, connected agents and API keys. A set amount has to be within 10 times the current budget. The new budget stays between the minimum and maximum you set on the step, and is rounded to the currency's smallest unit, never further than you asked.
- Loops never set special ad categories. Do that in the launch editor.
Preview
Preview shows what the loop would do now, without doing it, right on the canvas. It reads your data, checks every condition and runs the AI steps, then plans every change, notification and wait and does none of them. Each step shows its result on its card: "Found 12 ads", "3 match", "Would pause 3 ads". Select a count to see the items behind it. A preview of a New comment loop uses your newest comment as the example. Next to the button, "Previewed just now" says when it last ran.
A loop without AI steps previews itself a moment after each change, so the numbers follow your edits. A loop with AI steps previews when you select Preview, because its AI steps count toward your AI usage. Previews aren't runs: Runs lists only the times the loop really ran.
Runs and their history
Open the Runs tab in the inspector. Runs are listed newest first, each with what it did ("2 actions done", "Waiting for approval", "No actions needed") and what started it ("Scheduled", "Run by Anna", or the trigger's event). Select one to open it; All runs goes back.
Every run is kept with the version of the loop it ran. An open run shows:
- Waiting for approval: the changes it asks you about (see Changes that ask first), and a link to its change set when it has one, such as "Changes waiting for review".
- Steps: every step in the loop's order, with what it did for each item.
- Approvals: the approvals already decided.
- Items: what it found, with what happened to each: Changed, Planned, Waiting for approval, No change, Skipped, Postponed (waiting for a limit) or Failed. A run shows up to 500 items; its counts cover all of them.
A run is Starting, Running, Waiting (on a Wait step or a limit), Waiting for approval, Done, Failed, Stopped or Skipped. Stop run stops an open run: nothing more starts, and what already ran stays done.
To take back what a run changed, open the step: Changes it made lists each change with Undo, and Undo all sets every budget or delivery status it changed back to what it replaced. The undo runs as you and needs the publish permission. It's checked like any other change, so it can't move a budget more than one change may. Undoing twice changes nothing more.
Runs are safe to repeat: if Pluto restarts in the middle of a run, it continues where it was, and nothing it already did happens twice.
AI steps
Agent, Classify, Write reply and Summarize run on the same models as Agent: the workspace's default model unless you choose another. When your workspace allows more than one model, each AI step has a Model picker. See Models & rates.
- Agent follows the step's instructions. It can read what the loop runs as can, and change only what's switched on in the step's What the Agent may do. See What the Agent may do and Agent as your media buyer.
- Classify sorts the item into one of your groups, and the run takes that group's path.
- Write reply writes a reply to a comment for a Reply step after it to post.
- Summarize writes a short summary of performance, the comments, or what the loop found and did, for a notification after it.
AI steps work on every plan, including the free trial, and count toward your organization's AI usage like Agent: toward the person the loop acts for, and toward the workspace it runs in. The Daily optimizer's Agent step can make many model calls in one run, so on the trial it can use a good part of the trial's AI usage.
When a limit is reached, AI steps fail with a note in the run that names it, and the next steps depend on which one it is:
- The trial's AI usage is used: AI steps run again once an owner or admin chooses a plan.
- The included usage is used and on-demand usage is off: an owner or admin turns on on-demand usage, or AI steps run again when the included usage resets.
- A limit on the organization, the workspace or the person the loop acts for: an owner or admin raises it, or it resets with the billing month.
See Billing.
Instructions
Every AI step needs Instructions: what to do, in plain words. A new step starts with a short example you can edit, and a loop can't be turned on while an AI step has none. Use the recommended instructions fills in Pluto's suggestion for that kind of step. A Write reply step's instructions also say how replies sound; replies use the commenter's language unless you say otherwise.
What the Agent may do
An Agent step reads everything the person the loop runs as can see. What it may change is one list of switches in the step, under What the Agent may do, each with a line that says what it covers:
| Switch | What it allows |
|---|---|
| Read | Always on: it reads everything you can see. |
| Budgets, delivery and bids | Budgets, pause and resume, bids and schedules, within the limits shown under it. |
| Comments | Reply, hide, unhide and delete. Deleting always asks first. |
| Ads and copy | Update ads, their copy and creatives. |
| Targeting | Change live targeting. |
| Duplicate in Meta | Copies start paused unless it may act and they fit the limits. |
| Delete in Meta | Always asks first, whatever Ask before acting says. |
| Notify and Slack | Notify people, post to Slack and add review comments. |
A new Agent step starts with only Budgets, delivery and bids on. Open a switch to turn its actions on one by one; the switch itself turns them all on or off, and shows when only some are on. Everything it does stays within the step's limits and its Ask before acting.
When Pluto adds a new action to a switch you turned on, your loop doesn't get it by itself: the switch shows the action as New, with Turn on?, until you decide. Workspace settings, members and billing are never on the list.
Agent as your media buyer
An Agent step can look after your budgets every day, like a media buyer. Give it Instructions in plain words. Use the recommended instructions fills in Meta's own advice, which the Daily optimizer template starts with: it leaves ad sets in the learning phase alone, moves budgets about 20% at a time, scales what beats your goal, cuts spend that brings no results, pauses ads before whole ad sets, stays under the daily cap and gives one reason per change. Edit them like any other text.
Its guardrails sit next to the instructions, and every change is checked against them:
- Ad accounts: all of them, or one.
- Goal: Agent decides, Profit (with Pluto Profit connected), Cost per result or ROAS, with its target.
- What the Agent may do: the switches above. Under Budgets, delivery and bids are its limits, each shown
only while something it applies to is switched on:
- Change a budget by at most (Change a bid by at most with only bids on, Change a budget or bid by at most with both): how far a budget or bid may move for one object in a run, 20% unless you change it, never more than 100%.
- Keep each account's daily budgets under: with budgets or pause and resume on, what an ad account's daily budgets may add up to, in its currency.
- Judge only what spent at least: with budgets, pause and resume or bids on, what an object must have spent over the last 7 days before it's judged.
- Schedules have none of them.
- Amounts you leave empty are no limit. An amount is in the ad account's currency; if the ad accounts it changes use several, choose the Currency before you turn the loop on.
- Ask before acting: Always sends one set of changes per run for you to review. Only above limits asks only for bigger moves: a budget raised by more than the percent in Budget increases over, or by more than the amount per day you set, turning anything back on, pausing a campaign and bids. Never acts on its own, once a person with the publish permission allowed the loop to act.
When it asks, all of its changes in a run arrive as one change set in the Inbox of the person the loop acts for (for a test run, whoever started it). You can approve it, reject it or send it back with feedback, and Agent revises it on fresh data. A newer run replaces a change set nobody decided yet. A preview sends one too, marked Test run, for you to look at; it can't be approved.
After each run it writes a report: what it changed, what waits for you and what it left alone, and why, with every amount in its currency. Add a Notify people or Post to Slack step after it to get the report there. If your organization reaches its AI usage limit during a run, the step stops cleanly: what it did so far stays, and the run says it stopped early.
Reviewing a change set
A change set is a plan: every change a loop, Agent or a connected agent wants to make, waiting for your yes. It arrives in your Inbox as "Daily optimizer wants to make 7 changes", with the net change in daily spend under it. Open it to read it like a document:
- Where it comes from: the loop and its run, or the chat, and who it's for. It expires 24 hours after it arrives; nothing changes if nobody decides.
- Summary: Agent's own words about what the plan does and why.
- Totals: per ad account, the net change in daily spend in the account's currency, and how many budgets go up or down, what's paused and what's turned back on.
- Changes, grouped by ad account and campaign. Each shows the campaign, ad set or ad, the value now and the value after, and the reason when there is one. Pluto writes these rows from the exact changes that run, so what you read is what happens.
What you can do:
| Move | What happens |
|---|---|
| Remove a change | A new version without it. No AI is used. |
| Edit a value, such as +20% to +10% | A new version with that value, checked against the limits as you type. No AI is used. |
| Reply with changes, like "fine, but don't touch Summer sale" | Agent revises the plan on fresh data and a new version replaces it in the same Inbox item. For a loop's plan this counts toward the AI usage of the person the loop acts for; for a plan from a chat, toward whoever replied. While it works you can't send more. |
| Approve and apply | Applies exactly the version you're looking at. If a newer version arrived meanwhile, you're asked to review that first. |
| Reject | Nothing changes. Your reason (optional) goes back to the loop, so its next run knows. |
Every version stays, with what changed since the one before: removed, changed or added.
One run makes one plan: everything its steps ask about, from Agent and from action steps such as Pause or Change budget, arrives together. Changes without a before and after, like duplicating an ad set or replying to a comment, show what they do in words. Sending a plan back with feedback needs Agent behind it; a plan only action steps made is edited instead.
When you approve, each change is checked again right before it runs:
- If someone changed the value since the plan was made, in Ads Manager or elsewhere, the change isn't made and reads Conflict. Ask Agent to update on it makes a new version with just the changes that conflicted, planned again from the current values, for you to approve. What applied stays applied.
- If a limit stops it now, it reads Blocked, with the limit.
- If Meta refuses it, it reads Failed, with Meta's reason.
- Everything else reads Applied: Meta accepted it. When Pluto next reads the campaign, ad set or ad from Meta, the row reads Live, or Meta shows the value it has now if that's something else (for example, someone changed it again in Ads Manager).
- Undo on an applied budget, delivery or bid change puts the value back, within the limits. A duplicate or a comment action can't be undone.
The plan then reads Applied, or Partially applied when some changes weren't made. Each change is made once, even if you select Approve twice.
Only the person the plan is for, or an organization owner or admin, can approve, reject, edit or send it back, and approving takes the publish permission. Everyone else in the workspace can read it. Approving and rejecting happen in the app, never through an API key or an agent.
A plan from a chat with Agent shows in the chat too, with Approve and apply and Open in Inbox. To change it there, just reply in the chat.
The loop's chat
Every loop has its own chat with Agent, and it keeps the loop's whole history in one place.
- A loop Agent built keeps the chat it was built in, whether that started on the Loops page, on Home or in the Agent panel.
- A loop you built by hand gets its chat the first time someone asks Agent about it in the builder.
At the bottom of the builder's canvas is a small bar that says Do anything. Select it, start typing or press
Cmd+J (Ctrl+J) to open the composer:
- Ask for a change in plain words, such as "also notify me" or "only check ads that spent over 50". Agent reads the loop as it is now, changes it and saves a new version. The canvas updates as it goes.
- Select a step first and say "this step" to mean it, as in "make this step wait until 9:00".
- N previous messages above the composer opens the chat's history: what was asked, what Agent changed ("Updated the loop", "Added 3 steps") and its answers. Select it again to fold it away.
- Press
Enterto send andShift+Enterfor a new line.Esc, or selecting anywhere outside the composer, folds it back into the bar. Anything you've typed stays. - Dictate (the microphone) lets you speak instead of typing, in browsers that support it. Your speech is turned into text by your browser; no audio is sent to Pluto. Where your browser can't dictate, the microphone isn't shown.
- It runs on the same models as Agent.
Everyone who can open the loop can read its chat. People who can edit the workspace can ask in it, and Agent knows who is asking. The chat stays as long as the loop does, so it can't be deleted from your chat list while the loop exists.
When your organization reaches an AI limit, a notice above the composer says so. Owners and admins get the next step from it (choose a plan, turn on on-demand usage or raise the limit); everyone else is told to ask one of them. See Billing.
Versions and history
Each save is a new version of the loop. Pluto records who made it (you, a teammate, Agent for someone, or an agent connected through MCP), how, and what changed, for example "Added Notify people". For changes Agent made, the version is linked to the answer in the loop's chat that made it. Turning a loop on or off isn't a new version.
Archiving a loop turns it off and removes it from your list. Its chat, history and runs stay.
Deleting and archiving
A draft that was never turned on and never ran can be deleted for good: open Loop actions on its row in the list, or in the builder, and choose Delete loop. Its chat stays with you. A loop that has been on or has runs is archived instead (Archive loop), so what it did stays on record. It stops running, can't be edited and leaves the list; turn on Show archived loops under Display to find it again, and open it and select Unarchive to bring it back, off. When the loop you have open is archived or deleted, you go back to Loops.
The list shows each loop's status, trigger, last and next run, owner and when it was last updated. Filter it by Owner (Anyone or Me) and change the Ordering under Display.
While your organization is read-only
When the free trial ends without a subscription, a subscription lapses or a payment stays unpaid past its grace period, your organization is read-only. Loops are paused until it has a plan again. They stay as they are, and:
- No loop runs: scheduled and triggered runs don't act, not even to pause or lower a budget. Runs shows one skipped run a day that says why.
- A run that was going when the organization became read-only stops before its next step. It shows as stopped, with the reason, and its approvals are withdrawn.
- You can still pause campaigns, ad sets and ads and lower budgets yourself, turn a loop off, archive it or delete a draft that never ran, cancel a run, approve a change set that only pauses or lowers budgets, reject a change set, and undo a change when undoing it pauses or lowers a budget.
Building or changing loops, turning them on and running them wait until an owner or admin chooses a plan or updates the payment method. Then loops run again from their next scheduled time or trigger. Runs they missed aren't made up.
Who can do what
Guests don't see loops or their runs.
| Member | Admin, owner | |
|---|---|---|
| Open loops, their chat and their runs | Yes | Yes |
| Build and change loops, and ask Agent in a loop's chat | Yes | Yes |
| Turn a loop on or off, run it, preview it, stop a run | Yes | Yes |
| Approve or reject a loop's change, undo a run's changes | Yes | Yes |
| Approve, reject, edit or send back a change set proposed for someone else | No | Owners and admins of the organization |
| Let a loop act without asking (needs the publish permission) | Yes | Yes |
| Archive, unarchive or delete a loop | Yes | Yes |
For developers and agents
Loops have the same actions in the public API and as MCP tools: list, read and check loops, create, change, archive, unarchive and delete them, turn them on or off, run or test them, and list, read, stop and undo their runs, with the same permissions and checks as the app. Change sets have their own routes and tools: an agent can propose a plan, revise or edit it, and a person approves it in Pluto. Approving a change or a change set, and letting a loop act without asking, are for a person signed in to the app.