Troubleshooting
Every problem in Pluto Ads shows up as a short title, a sentence that says why, and one control that fixes it. This page lists each message by what you see on screen, what causes it and what to do.
How problems show up
Pluto never shows a raw error code, JSON or a stack trace. A problem appears in one of three places:
- At a field. A value that breaks a rule shows its message under the field.
- As a banner in the section or page that failed, with its fix: Try again, Sign in, Reconnect Meta, Show field, a Fix button, Reload or a link.
- As a notice in the top bar, for an action that finished. One shows at a time: a newer one replaces it. It closes after 6 seconds, unless it has a fix, then it stays until you use it or close it. Pointing at it pauses its timer. Success is shown by the change itself, so there's no notice for it (except one that offers a next step, such as Undo).
When an action fails, the title often says what didn't happen ("The launch wasn't renamed", "Couldn't switch workspace"), and the message says why. Try again resends the same request, so a retry never applies a change twice.
You're offline
"You're offline", with "This needs a connection. Your edits still save offline and sync when you're back."
Most of Pluto works without a connection. Edits to launches, ad sets, ads, comments, tags and settings save on your device and upload when you're back. Some actions need Meta or the server right now, such as publishing, live budget and status changes, invites, uploads and syncing Meta. Those controls are disabled while you're offline, with the tooltip "Needs a connection. Your edits still save offline."
The top bar shows where your edits are:
| Top bar | What it means |
|---|---|
| Nothing | Everything is saved. A quick save or a short drop in the connection shows nothing. |
| Saving... | Edits are taking more than a second to upload. |
| Offline | The device has had no connection for about 10 seconds. Select it to see You're offline and how many changes are waiting to sync. The edits are safe on this device. |
| Not syncing | The device is online, but Pluto can't be reached, or uploads keep failing. Select it to see Can't reach Pluto and how many changes are waiting. They sync as soon as Pluto can be reached. |
| 3 not saved | The server turned down some edits. See Some changes weren't saved. |
A small dot beside a row or field means "Waiting to sync": that edit hasn't reached the server yet.
A page you never opened on this device can't load offline. It shows "This page isn't on this device yet" with "Open it once while you're online to use it offline. Your edits are saved on this device." Go back online and open it once. A launch shows "This launch isn't on this device yet" the same way.
For offline editing and conflicts in detail, see Sync status and Conflicts.
Pluto couldn't be reached
"Pluto couldn't be reached", with "Check your connection, then try again."
The browser says it's online, but the request never got an answer: a network drop, a VPN or proxy, or a firewall. Check the connection and select Try again. Your edits stay on the device either way.
Some changes weren't saved
The top bar shows a warning button, "1 not saved" or "3 not saved". Open it to see the edits the server turned down, under Not saved. Identical ones share one line with a count, such as "Couldn't create 3 tags".
Each line names what happened:
- ""Hook A" was changed by someone else": another person or agent changed the same field before your edit arrived. Their version is on screen now.
- "Couldn't save your change to "Hook A"", "Couldn't create 3 tags" or "Couldn't delete a comment": the server refused the edit. The reason follows the title when there is one to give.
Select a line to open the launch, creative or settings page where you made the edit. Point at it (or tap) for what you can do:
- For a change someone else made first: Keep mine applies your edit again on top of theirs, and Keep their version drops yours.
- For an edit Pluto can't take right now, for example while the launch is publishing: Retry sends it again, and Discard drops it.
- For an edit that can never be saved as it is: Discard. Go to the change and make it again.
Retry all and Discard all at the top act on the whole list. Your personal settings, such as views and Getting started, never show here: when one can't be saved, the saved setting stays.
Inside a launch, the same edits also show where you made them: "Someone else changed "Hook A" first" with Retry and Use theirs, or "Your change to "Hook A" wasn't saved" with Retry and Keep saved version.
Two people editing different fields of the same ad never conflict: both edits apply. Only the same field changed by two people conflicts.
Someone changed this
"Someone changed this", with "Someone else saved a newer version while you were editing. Review theirs, then apply your change again."
Someone saved the same thing while you had an older version open, so your change wasn't written over theirs. Open the item again to see their version, then apply your change again if it still makes sense.
Some places let you choose right away:
- Analytics, while you customize the dashboard: Keep my layout replaces theirs, Use their layout drops your changes.
- Settings, Meta defaults shows "Someone changed these defaults", and Settings, Agent shows "Someone changed these settings": Keep mine replaces theirs, Use theirs discards yours.
Edits to launches, ad sets and ads work field by field instead; see Some changes weren't saved.
Developers: conflict with current, and
Versions and conflicts.
This can't be done right now
"This can't be done right now", followed by the server's reason.
The request is valid, but the current state doesn't allow it. Common reasons:
- The item is archived. Archived ads and ad sets are read-only history; restore them first. An archived launch opens with "This launch is archived" and Restore launch.
- The launch was published. "Only drafts that were never published can be deleted. Archive this launch instead."
- The ad is live. The board says "This ad is live in Meta. Pause it in Publishing instead of deleting." Pause it, or delete it in Meta from the Publishing panel.
- The launch isn't ready to publish. The message points at the checklist.
- The ad set or ad is still live in Meta and you try to restore it as a draft: "Delete it in Meta before restoring it as a draft."
- Something is still in use, such as a review status that ads still have. Move or remove what uses it first.
- An import from Meta would overwrite pending changes on that launch: "Its launch has pending changes. Publish or discard them, then import again, so the refresh can't overwrite them."
Read the message, fix the cause, then try again. Developers: conflict.
Check this value
"Check this value" for one problem, or "3 fields need a change" for several. Each message appears at its field, and Show field moves the cursor to the first one.
A value breaks a rule, for example a name longer than 120 characters ("Use a name of 1 to 120 characters.") or a budget that isn't an amount ("Enter the budget as an amount, like 50 or 49.99."). Fix every listed field and save again.
In Analytics, the same problem with filters shows "These filters can't be applied" with Clear filters.
Developers: invalid.
You don't have access
"You don't have access". The message says who can help. There's no button: only someone with a higher role can fix it.
Your role or your credential doesn't allow the action. Pluto hides or disables controls you can't use, and the tooltip gives the same reason the server would:
| Needs | Message |
|---|---|
| Read | "You don't have access to this workspace." |
| Comment and review | "You can view this workspace but not comment or review." |
| Write | "You can view this workspace but not change it." |
| Publish | "You don't have permission to publish ads." |
| Workspace admin | "Only workspace admins can do this." |
| Organization admin | "Only organization owners and admins can do this." |
In the app, these name your workspace the way your organization does (a client or a brand), and say who to ask, such as "Ask an admin." Some pages say it up front: "Only admins can change the name and logo" (General), "Only admins can invite and manage members" (Members), and in the publish review "You can't publish". Ask an admin to change your role, or to do the action for you. Roles are explained in Members.
When an admin suspends or removes you, you see "Your access is suspended" or "You no longer have access" instead.
Developers: forbidden.
Your session ended
"Your session ended", with "Sign in again to continue. Your edits on this device are kept." The action is Sign in.
Your sign-in expired or you signed out in another tab. Sign in, and Pluto brings you back to the page you were on. Edits you made offline are still on the device and upload after you sign in.
Developers: unauthenticated.
Not found
"Not found", with "It may have been deleted or moved." A whole page that doesn't exist shows "Page not found", with "The link may be old, or the page was moved or deleted." and Go to Home.
The item was deleted, moved, or belongs to another workspace. Check that you're in the right workspace, then open the item again from its list. Pluto never reveals whether an item exists in a workspace you can't see.
Developers: not_found.
Too many requests
"Too many requests", with "Try again in 6 seconds." For a wait of 90 seconds or more it says "Try again at 14:05." The Try again button stays disabled until that time.
Each person may send 300 requests per 10 seconds. Syncing your edits has its own budget of 120 per 10 seconds, so heavy use of the app never stalls your sync. Wait for the time shown, then try again.
Meta has its own limits per ad account. When Meta asks us to wait, the live controls in Publishing (pause, activate, Change budget) stay disabled until Meta's retry time. Meta allows 4 budget changes per ad set per hour; a change over that goes live as soon as Meta allows, on its own.
Developers: rate_limited and
Rate limits.
Something went wrong
These four messages mean the problem isn't in what you did:
| You see | Why | What to do |
|---|---|---|
| "Temporarily unavailable", "A service Pluto depends on isn't responding. Try again shortly." | A service we depend on is down. Nothing was changed. | Try again in a minute. |
| "Something went wrong on our side", "Nothing was changed. Try again, and contact support if it keeps happening." | A failure on our side. | Try again. Contact support if it repeats. |
| "This couldn't be sent" | The app sent a request the server couldn't read, often an outdated app version. | Select Reload. |
| "Something went wrong" | Any other failure. | Try again. |
Try again resends the same request, so nothing happens twice. Developers:
unavailable, internal and
bad_request.
Plans, usage and read-only work
Billing and usage stops say what happened and offer one way forward. Owners and admins of the organization get the button; everyone else is told who to ask.
| You see | What it means | What to do |
|---|---|---|
| "Your free trial ended" or "Choose a plan to continue", with "Everything is read-only until you subscribe." | The organization has no active plan. You can still look at everything. | Choose a plan. |
| "The last payment didn't go through" | A payment failed. | Update payment method. |
| "Upgrade for more workspaces" (or clients, or brands) | The plan's workspaces are all in use. | See plans or Upgrade to Business. |
| "Included AI usage is used up" | The Agent and loops used this period's included AI usage. | Enable on-demand usage. |
| "On-demand limit reached", a workspace limit or "Your usage limit is reached" | A usage limit set in Settings was reached. The message says when it resets. | Raise limit. |
| "Storage is full" | Media storage is full, so uploads pause. | Add storage. |
With complimentary access, owners see Talk to sales instead: more is agreed with our team. See Billing.
A workspace that was archived shows "This is archived": "Archived work can be viewed but not changed. An organization owner or admin can restore it." One scheduled for deletion shows "This is scheduled for deletion" with the date it's deleted, and can be restored until then. See Workspaces.
Developers: payment_required,
plan_limit, spend_limit and
workspace_archived.
Meta asks you to reconnect
Integrations shows the badge "Reconnect needed" and a banner with Reconnect Meta. Publishing and Analytics show the same banner. There are two causes.
"Reconnect Meta": "Meta ended Pluto's access, usually after a password change or an expired session. Reconnect to keep publishing and importing results."
"Meta permission missing": "Meta no longer grants the permission Pluto needs to publish and change ads. Reconnect Meta and keep every permission selected on Meta's screen." The message names what the missing permission is for.
Meta also asks you to log in again about every 60 days. Seven days before, Integrations shows "Meta access ends in 3 days", with "Reconnect Meta before (date) to keep publishing, importing results and running loops." Once the date has passed it shows "Meta access ended". Reconnecting in time avoids any gap.
In both cases, an admin selects Reconnect Meta and signs in to Facebook again. On Meta's screen, keep every permission selected. Pluto asks for these:
| Meta permission | What Pluto uses it for |
|---|---|
ads_management | Publish and change ads |
ads_read | Import results |
business_management | See ad accounts owned by a business |
pages_show_list | List your Pages |
pages_read_engagement | Read the Pages you publish from |
pages_manage_ads | Run ads from your Pages |
instagram_basic | Run ads on Instagram |
pages_read_user_content | Let your agents read the comments people leave on your ads |
pages_manage_engagement | Reply to, hide and delete those comments as your Page |
instagram_manage_comments | Read, reply to, hide and delete comments on your Instagram ads |
pages_manage_metadata | Hear about new comments and leads the moment they arrive (optional) |
leads_retrieval | Read the leads people submit through your lead forms |
If you aren't an admin, the message ends with "Ask an admin to reconnect Meta in Integrations." In Analytics the banner starts with "New numbers can't be imported until Meta is reconnected." Reconnecting doesn't publish anything and doesn't change your launches.
More in Connect Meta.
Meta wasn't connected
After Facebook Login, Integrations shows "Meta wasn't connected" with the reason:
| Reason | What to do |
|---|---|
| "You cancelled the connection in Meta. Connect again when you're ready." | Connect again. |
| "Meta didn't grant permission to manage ads. Connect again and allow every permission Pluto Ads asks for." | Connect again and keep every permission selected. |
| "Only admins can connect Meta. Ask an admin to connect it." | Ask an admin. |
| "The connection was finished in a different session. Connect again from this browser." | Start and finish in the same browser. |
| "The connection took too long and expired. Connect again." | Connect again. |
| "Meta returned an incomplete response. Connect again." | Connect again. |
| "Meta couldn't confirm the connection. Connect again." | Connect again. |
| "Meta isn't responding right now. Try again in a few minutes." | Wait a few minutes. |
| "This organization is read-only until it has a plan. An owner or admin can choose one in Plan & billing, then connect again." | Choose a plan, then connect again. See Billing. |
When a sync of your ad accounts stops halfway, Integrations shows "The last sync didn't finish" with Sync now. A sync that can't start shows "Sync didn't start" with the reason.
Meta didn't accept this
In the Publishing panel, each campaign, ad set and ad Meta refused shows a banner with Meta's reason and a Fix button named after the field, for example Fix headline. Fix opens the place that holds the field: the ad, the ad set, or the right section of the launch settings.
| Title | Why | What to do |
|---|---|---|
| "Meta didn't accept this" | Meta rejected a value, and named the field when it could. | Select Fix, change the value, publish again. |
| "This can't be sent to Meta" | Pluto refused before sending: the value can't be expressed in Meta's units, such as a budget with more decimals than the account's currency allows. | Select Fix and correct the value. |
| "Meta can't find it" | The object, ad account or Page isn't visible to the connection anymore. | Select Open Integrations and check that the ad account and Page are still in the connection. |
| "Meta didn't accept this", with "Meta couldn't process the video" and Meta's reason | Meta took the upload but couldn't encode it. | Select Fix image or video, replace the video with an H.264 MP4 export, publish again. |
| "Meta didn't accept this", with "Meta was still processing the video after 2 hours. Publish again to upload it again." | Meta didn't finish processing in time. | Select Publish again to upload the video again. |
Meta's policy refusals land here too: an account blocked or banned from advertising, no authorization for political ads, or Custom Audience terms not accepted. Reconnecting can't fix these, so Pluto shows Meta's reason instead of asking you to reconnect. Follow Meta's instructions in Business Settings.
A refused live change (pause, activate, budget) shows the same banner on the object, without Fix when there's nothing to edit.
Meta being slow, busy or briefly down is never shown as final. We retry each item up to 8 times on our own, and wait when Meta asks us to. Only an item that still fails after that shows as failed. A video Meta is still processing isn't a failure either: publishing waits for it, up to 2 hours.
More in Publishing.
The ad account can't take new ads
Integrations marks an ad account Meta restricted with a badge, and the publish checklist refuses the states that stop ads:
| Badge | Banner | Publishing | What to do |
|---|---|---|---|
| Disabled | "Meta disabled (account)" | Refused | Select Open Business Support, check the reason and request a review, or choose another ad account. |
| Unpaid balance | "(account) has an unpaid balance" | Refused | Select Open Meta billing and pay the balance, then sync Meta in Integrations. |
| Closing | "(account) is closing" | Refused | Choose another ad account for new launches. |
| Closed | "(account) is closed" | Refused | Choose another ad account for new launches. |
| In review | "Meta is reviewing (account)" | Allowed | Nothing, unless Meta asks. Meta may hold new ads until its review ends. |
| Payment pending | "A payment for (account) is pending" | Allowed | Check the payment method in billing. Meta may hold new ads until it settles. |
| Payment overdue | "Payment for (account) is overdue" | Allowed | Update the payment method in billing to avoid a pause. |
If the account changes after you approved a publish, the publish stops before anything is created. Each object shows "The ad account can't take new ads" with Open Integrations. Nothing was created and nothing was spent.
The launch wasn't published
In the publish review:
- "Needed before publishing" lists what still blocks publishing. Select an item, or Fix first item, to go to its field.
- "The launch changed since you opened this": someone changed the launch, its ad account or its budgets after you opened the review. Check what it creates and spends again, then confirm.
- "The launch wasn't published", with the reason and "Nothing was published.". Fix the reason and submit again. When the cause was the connection or the server, Try again resends the same approval, which can never publish twice.
- "Saving your changes": "Publishing starts once every change has synced." Wait for your edits to upload.
- "Everything is already live": nothing new to create. Publish changes to live ads from Publishing.
- "You can't publish": your role doesn't include publishing. Ask an admin or a member with publish access.
See Publishing and, for developers, Publishing.
Uploads that fail
In the Media library, each item shows its state: Uploading 40%, Waiting for connection,
Processing, The upload didn't finish, or Failed with the reason.
| You see | Why | What to do |
|---|---|---|
| "(file): upload JPG, PNG or WebP images and MP4 or MOV videos." | The file type isn't supported. | Convert the file and upload again. |
| "(file): the limit is 30.0 MB for images." or "(file): the limit is 4.0 GB for videos." | The file is too large. | Compress it and upload again. |
| "(file): the file is empty." | The file has no bytes. | Export it again. |
| "We couldn't read this image. It may be damaged or use an unsupported encoding." | The image can't be decoded. | Export it again as JPG or PNG. |
| "The file at this URL isn't supported. Import JPG, PNG or WebP images and MP4 or MOV videos." | An import from a URL found another file type. | Check the URL points at the file itself. |
| "Processing failed." | Processing stopped without a reason. | Upload the file again. |
When files fail to upload, the library shows "A file wasn't uploaded" or "3 files weren't
uploaded" with Retry upload or Retry 3 uploads. You can add up to 500 files at a time. Uploads
that lose the connection show Waiting for connection and continue when you're back.
An upload nobody finishes, such as one in a tab you closed or on a laptop you put away, stops after 1 hour 15 minutes without progress and shows "The upload didn't finish". Retry uploads it again from the tab that started it, while that tab is still open. Anywhere else, select Remove and upload the file again.
When the organization's media storage is full, uploads pause with "Storage is full", or "Extra storage limit reached" when extra storage is on and at its limit. An organization owner or admin selects Add storage or Raise limit, and uploads continue. See Billing.
More in Media library.
Analytics isn't up to date
- "(account) isn't up to date" or "3 ad accounts aren't up to date": the last import for these accounts failed. Each line says through which day numbers are imported (or "not imported yet"), and why. If Meta access changed, check the connection in Integrations.
- "Some days aren't imported yet": an account is imported through an earlier day. Later days appear after the next import.
- "These filters can't be applied": select Clear filters.
- "Couldn't load performance": the numbers didn't load. Select Try again.
Pluto never fills a missing day with zero or an estimate. More in Analytics.
A page or panel couldn't load
- "This page couldn't load", with "Your work is saved. Try again, or go back to Home." Select Try again or Go to Home. The rest of the app keeps working. Outside the app, such as on the sign-in page, it says "Check your connection and try again." instead.
- "Pluto Ads couldn't load", with "Your work is saved on this device. Try again, or reload the app." The whole app failed to start. Select Try again or Reload app.
- "(Panel) couldn't be shown", with "The rest of the page still works." One part of a page failed. Select Try again on that part.
These pages may end with "Reference: " and a code. Include that code when you contact support.
Reporting a problem
When a message keeps coming back, reach us in one of these ways:
- Contact support in the app, where it's offered: on the billing banner in the top bar, on an archived or deleted workspace, and when restoring an organization. It sends your message with who you are, so you don't need to explain your account.
- The contact form at plutoads.ai/contact, with Support as the topic.
- A call: book a time that suits you.
Include:
- the exact title and message,
- the page you were on and what you selected,
- the "Reference" code, if the page showed one.
Developers calling the API get an x-request-id header on every response. Include it in reports. See
Errors.