Approval flow · Google Ads controlled beta

Review a proposed campaign change in chat. Keep every account within the limits you choose.

Google Ads automation with iNudge starts with the permissions you choose for one account. Supported fixes can run within saved limits and report a checked result. New ads, activation, higher total spending, destination changes and anything outside those limits need an exact review in chat before they can run.

Ask iNudge to cut a budget or pause a campaign and it writes a proposal. The card carries the value now, the value proposed, and any warning our own code computed. A proposal older than 24 hours is refused and has to be asked for again.

Verification runs in the same request as the publish, field by field against what you approved. A disagreement is recorded as a failed verification and never as a success.

Write access is off on every new connection. You enable it one account at a time. Supported fixes need a separate account permission and saved limits; new ads, activation, higher total spending and destination changes need your approval.

Product view · demo data · Gymszy sample account
  1. 01The platform, derived from the action type by the same rule the executor dispatches on
  2. 02What changes, current value beside proposed value
  3. 03Every number the claim leaned on, with its verified source, window and freshness
  4. 04Warnings our server computed, sitting directly above the button
  5. 05Approve, dismiss, and on a budget card an edit whose typed figure is re-checked

Section 01 · the three switches

Three switches stand between iNudge and your money.

01

Writes are off when you connect.

Every connection is stored with write access off. While it is off, the change tools are left out of the request we send to the model, so there is nothing for it to call. It cannot propose a change it was never handed, whatever you ask it.

02

You arm one account at a time.

The write switch belongs to one connection. Enabling it lets the agent propose changes. It does not grant a saved advertising permission or turn writes on for another account. Turning it off blocks new writes and keeps the read connected.

03

You choose what iNudge may handle.

Supported fixes can have a separate permission for one account within saved limits. You can withdraw it. New ads, activation, higher total spending, destination changes and anything outside the permission need an exact decision. Current account access, evidence and result checks still apply.

Which permission we ask each platform for, and why neither one has a read-only version, is on the integrations page.

Section 02 · one change, start to finish

One change, start to finish.

Six frames, in the order they happen to you. Nothing here is a rendering of a future version: every frame is a step that exists in the code today.

01 · You ask

"Prospecting is over my cost ceiling. Cut its daily budget to 320 USD." Plain words, in the chat, with no form and no builder.

02 · It reads

Live reads fire at the moment you ask, and the trace above the answer shows each one: the tool, its one-line summary, and whether it succeeded. Google performance · last_14d. A read that failed shows as failed rather than being dropped so the answer can look cleaner.

03 · It proposes

The write tool creates a row awaiting your approval and returns a card. It does not execute. A number the agent cannot trace back to a read from that same turn blocks the proposal before a card exists.

04 · You review

The diff, the evidence, the warnings, then approve or dismiss. $420.00 → $320.00 is the whole change, written out. Leave it and nothing happens.

05 · It publishes once

On approve the endpoint re-checks your subscription and that connection's write switch, refuses anything older than 24 hours, claims the row atomically so a double click cannot fire twice, re-runs the propose-time guards against fresh platform state, then sends exactly one write.

06 · It verifies

The platform is read back in the same request and compared against what you approved. A match settles the row as verified. A mismatch settles it as a failed verification, with the discrepancy in plain words.

Product view · demo data · Gymszy sample account

Between frame 03 and frame 04 the product does nothing at all. That gap is the feature.

Section 03 · what you see before you approve

What you see before you approve.

The card above is not a mock-up of the product. It is rendered by the same function that turns a stored proposal into the card in your workspace, so every part below is the part you will actually read.

Table A · every part of the approval card, and where it comes from
Part of the cardWhat it showsWhere it comes from
Platform labelMeta, Google Ads, TikTok Ads or Merchant Center.Derived from the action type by the same rule the executor dispatches on, so the label cannot disagree with where the write goes.
TitleThe change in one line.The summary stored on the proposal row, composed in code when the proposal was created.
WhyOne sentence of the agent's reasoning.The model's claim, stored with the proposal. It is the model's, and the card presents it as the model's.
Diff rowsCurrent value beside proposed value, one row per thing that changes.Read from the platform when the proposal was drafted and stored as the before state and the requested state.
EvidenceEach number the claim leaned on: the metric, the value in your account’s currency, the verified data source, the scope it applies to, the reporting window and the data freshness.The proposal's evidence list. The parse fails closed, so anything malformed renders as no claim and no receipts, never as invented ones.
Before you approveThe tradeoffs, in amber, directly above the approve button, in the awaiting state only.Computed by our server before the card exists and stored outside the model's own schema on purpose, so the model can neither write these warnings nor suppress them.
ButtonsApprove and dismiss, plus an edit on a budget card.The live card is handed an approve handler, a dismiss handler, and on a budget card an edit handler, so the edit button renders there and nowhere else.
Executing checklistWrite to the platform, then verify by re-reading. A budget move shows four rows, one pair per leg.Built per action type by the same mapper.
Table B · the diff rows you get, per change
ChangePlatformWhat the card shows
Publish one existing manual or separately reviewed catalog-driven Collection Instant Experience draft without changing ad delivery.Meta AdsExact Page, experience ID, draft revision, full content and destination. Missing Page content permissions block the operation. One send and exact readback; no automatic retry or undo.
Create one unpublished manual or catalog-driven Collection Instant Experience.Meta AdsExact Page, name, background and every ordered copy, destination, Page-owned photo/ready-video ID, fit and spacing. Fresh exact media proof is captured and rechecked. The separate nested contract reviews photo carousels, first-position photo headers and last-position button footers, including every child’s copy, media, destination and order. Child-first receipts and root-only assembly; no recursive groups. Fresh Page authority, one send per step and durable IDs. Partial results stop without replay or automatic deletion. Publication and ad activation need separate approvals. A separate Collection draft contract reviews a Page-owned hero, the existing commerce product set reached through an exact selected-account source ad, its full filter and ordering, dynamic product tokens, and a one-button footer. It requires fresh catalog and Page proof before every single-send step. This approval creates unpublished content only. A separate Collection publication contract reviews full content, exact hero media and catalog scope with fresh proof; product availability, selection and prices remain dynamic. A separate first-Collection-ad approval reviews a fully published Page-owned hero/product-set/footer experience, exact commerce source/catalog/set/filter/order, compatible existing paused sales/catalog website parents and complete SHARE or VIDEO creative. Fresh evidence and provider validation protect one paused ad send and exact-ID recovery. Dynamic product selection, availability and prices are not fixed promises. A separate Collection parent contract reviews complete campaign/ad-set/first-ad setup before creating one paused sales/catalog campaign, then one separately approved website purchase ad set under its exact verified campaign. Full published content, Page hero, commerce source/catalog/set/filter/order and audience/budget proof are rechecked; each child has separate approval after parent-ID verification. No empty campaign is offered, no existing parent or Page content is changed, and no uncertain send is replayed. Template-video and activation remain separate.
Change an exact campaign name, scheduling, bidding or an existing lifetime budget. Provider validation, current-state binding, exact currency, policy checks and verification follow one request.Meta AdsExact old and new names or delivery settings. A name-only change preserves entity ID and delivery; later name changes require a fresh approval.
Change an exact ad-set name, targeting, placements, audiences, bidding, attribution, optimization, scheduling or an existing lifetime budget. Closed settings preserve untouched targeting. Ownership, caps, locks and blackout windows apply.Meta AdsExact old and new names or delivery settings and verified parent. A name-only change preserves entity ID and delivery; activation is a separate approval.
Create one paused Meta campaign. Explicit objective, special-ad-category declaration, exact budget mode and every included child are reviewed. Meta validates each object and verifies it paused. A complete-setup review can include the exact paused ad sets and ads in the same approval. Older object-only cards retain their original scope. Collection sales/catalog creation requires its separate full published-content/catalog contract and complete consistent ad-set/first-ad plan before this campaign approval.Meta AdsExact reviewed settings, verified parents and assets, paused creation and separate activation approval.
Activate one exact iNudge-created complete Meta setup.Meta AdsOff by default; the operator must explicitly switch it on. Platform and account write access and a separate exact approval are required. Only the exact verified iNudge-created campaign, ad sets and ads from one complete paused setup are included. Activates children before the campaign. Configured ACTIVE does not guarantee delivery; effective status and provider issues are shown separately. Interrupted steps are observed before a new remaining-scope approval; no automatic retry or rollback. Arbitrary or bulk enable remains unavailable outside this exact setup contract.
Create one paused Meta ad set. Parent campaign, budget ownership, targeting, pixel/event and selected assets are rechecked before one send. Collection website purchase ad sets have a separate full published-content/catalog contract under the exact paused sales/catalog campaign; the ad still needs separate approval.Meta AdsExact reviewed settings, verified parents and assets, paused creation and separate activation approval.
Create one paused standard image/video ad, fixed-order website carousel of 2–10 verified cards, first ad for a published manual Instant Experience or catalog-driven Collection, or reuse a verified account-owned Page-post creative in a website ad set.Meta AdsExact reviewed settings, parents and assets; every carousel card and its order, full published experience content and single image/video cover without a source ad, or the existing creative, Page, post and destination IDs. Post reuse changes no content and guarantees no engagement. No automatic reordering or end card; catalog-driven Collection uses its own full published-content/catalog/paused-parent contract with exact Page hero and ad copy, dynamic products and prices, and no new parent authoring. Media transfer, Page publication and activation require separate approvals.
Duplicate one paused Meta object without descendants. Campaign and ad-set copies use the native copy endpoint without validate-only. Standard ad copies instead create one paused ad with the exact existing creative and reviewed tracking; validate-only runs first. Unsupported ad-level settings are blocked rather than dropped. No timeout write is retried.Meta AdsExact reviewed settings, verified parents and assets, creative preservation for standard ad copies, paused creation and separate activation approval.
Transfer one private library MP4 up to 50 MiB without changing ads.Meta AdsExact file, checksum and destination approval; one send, saved video ID and read-only processing checks for up to 24 hours.
Transfer one private library PNG or JPEG, up to 10 MiB, to the selected Meta ad account without changing ads.Meta AdsExact filename, size, checksum and destination; separate approval, one send and verification by account image hash.
Campaign statusMeta AdsOne status row, ACTIVE to PAUSED or the reverse.
Campaign daily budgetMeta AdsOne daily budget row, both figures in your account's currency.
Budget moveMeta AdsOne row per leg, with the total held constant. The source falls by exactly what the destination rises by.
Ad-set statusMeta AdsOne status row, ACTIVE to PAUSED or the reverse, plus Meta’s effective delivery state after the write.
Ad status or nameMeta AdsOne status row, ACTIVE to PAUSED or the reverse, plus Meta’s effective delivery state; or one exact before/after ad name with unchanged configuration.
Ad-set daily budgetMeta AdsOne ABO daily-budget row, with current and requested figures in the ad account’s currency.
Ad creative replacementMeta AdsExact standard copy/media edits, all 2–10 website carousel cards or a bounded authorized identity change with the old and new Page/Instagram IDs. Page changes are Facebook-only; Instagram changes retain the existing Page. Actor, story and parent stay bound; automatic reordering and end cards are off. Meta creates and attaches a replacement creative, may review it again, and does not preserve old post engagement or change ad status.
Campaign statusGoogle AdsOne status row, ENABLED to PAUSED or the reverse.
Permanent campaign removalGoogle AdsReleased in Production for admitted workspaces. The card names the exact already-paused campaign, its budget identity and the permanent loss of its campaign ID, history and learning state. Google validates and receives one non-retried removal.
Pause a campaign batchGoogle AdsReleased in Production for admitted workspaces. The card lists 2–10 exact enabled campaigns, requires a second confirmation and applies them as one atomic pause. Every campaign is re-read afterward. Bulk enable, budget, targeting and mixed changes are excluded, and there is no one-click bulk undo.
Label relationshipGoogle AdsReleased in Production for admitted workspaces. The exact campaign, ad group, ad or keyword and the label’s current relationship are shown before one label is created, attached or removed.
Asset relationshipGoogle AdsReleased in Production for admitted workspaces. The card shows the exact campaign or ad group, the existing asset’s type and content summary, the current link status and the requested attach, pause, enable or removal before you approve.
Performance Max asset-group settingsGoogle AdsReleased in Production for admitted workspaces. The card shows the exact current and requested name, enabled or paused status, HTTPS destinations and display paths for one existing asset group. Creative, audience, product, budget and bidding settings stay unchanged.
Performance Max signalGoogle AdsReleased in Production for admitted workspaces. The card names the exact asset group and one search theme or existing audience being added or removed, and warns that signals guide Google rather than confining delivery.
Shopping product-group leafGoogle AdsReleased in Production for admitted workspaces. The card names the exact Performance Max asset group or Standard Shopping ad group, existing non-root leaf and inclusion change, or the exact before-and-after Manual CPC bid in the account currency. It warns that the whole tree must remain unchanged and that inclusion can change delivery.
Campaign nameGoogle AdsOne exact name row for one existing campaign. Status, budget, targeting and delivery remain unchanged.
Search PartnersGoogle AdsReleased in Production for admitted workspaces. One exact On/Off row for an existing Search campaign, with warnings about reach, spend and the limits of undo.
Campaign dates or trackingGoogle AdsReleased in Production for admitted workspaces. Exact before-and-after date rows with the account time zone, or exact campaign tracking values. Clearing an end date says No end date; clearing tracking says Not set at campaign level, because inherited tracking can remain.
Campaign targeting and delivery controlsGoogle AdsReleased in Production for admitted workspaces. One exact operation shows the reviewed country, region, radius or language target, demographic exclusion, device modifier, complete account-time-zone schedule or placement exclusion, with delivery and undo warnings.
Standard bidding strategy, target CPA or target ROASGoogle AdsReleased in Production for admitted workspaces. The card shows the previous and proposed standard strategy or target, with target CPA in the account currency and target ROAS as both a percentage and multiplier. Strategy switches also bind the campaign’s complete conversion-goal evidence.
Portfolio target CPA or target ROASGoogle AdsReleased in Production for admitted workspaces. The card shows the exact strategy and target, every linked campaign and the combined daily-budget ceiling, counting shared budgets once.
Campaign daily budgetGoogle AdsOne daily budget row, both figures in your account's currency.
Shared daily or campaign total budgetGoogle AdsReleased in Production for admitted workspaces. One exact row shows the budget amount or name before and after, in the account currency where applicable, and names every linked campaign affected by a shared-budget change.
End one running experimentGoogle AdsReleased in Production for admitted workspaces. The card names the exact experiment, its traffic split and affected campaigns, explains that treatment stops without being promoted, requires a second confirmation and states there is no one-click undo.
Dismiss one Google-native recommendationGoogle AdsReleased in Production for admitted workspaces. The card names the exact recommendation ID and type, says the impact estimate came from Google, and states that dismissal is permanent while campaign delivery stays unchanged.
Campaign conversion goalsGoogle AdsReleased in Production for admitted workspaces. The card names the exact campaign, goal category and source, whether Google may bid toward it, and whether the campaign will use its own map or the account defaults. Every approval requires a second confirmation.
Create a secondary conversion actionGoogle AdsReleased in Production for admitted workspaces. The card shows the exact secondary website or call conversion action and its settings, requires a second confirmation, and returns Google’s installation code after a verified create. iNudge does not install or verify the tag, make the action primary, or change attribution and account defaults.
Create an account-level calloutGoogle AdsReleased in Production for admitted workspaces. The card shows the exact 1–25-character text and account-level scope, requires a second confirmation, and warns that Google may still review or limit the new asset.
Create a detached call assetGoogle AdsReleased in Production for admitted workspaces. The card shows the exact phone number, reporting choice and complete account-time-zone business hours, requires a second confirmation, and explains that creation does not attach the immutable asset. A replacement leaves the old asset unchanged.
Create a detached Google-hosted lead formGoogle AdsReleased in Production for admitted workspaces. The card shows every visible sentence, requested field, privacy policy, post-submit destination and policy attestation, requires a second confirmation, and explains that creation does not attach the form. Leads remain in Google-hosted download rather than iNudge.
Negative keywordsGoogle AdsOne row per term, each showing the term and the match type that will block it.
Remove campaign negative keywordsGoogle AdsOne row per exact existing term, including match type, before removal.
Manage positive keywordsGoogle AdsOne row per exact keyword in one ad group, showing match type and the current and requested status, or that a term will be added or removed.
Manage an existing ad groupGoogle AdsOne exact row for ad group status or name, with the current value beside the requested value.
Manage Search ad-group structure or an existing audience linkGoogle AdsThe exact paused creation, removal, Manual CPC bid change, or existing user-list inclusion, exclusion or Observation/Targeting mode. Released in Production for admitted workspaces; removals are permanent.
Change location-presence modeGoogle AdsThe previous and requested location-presence mode for one Search campaign. Released in Production for admitted workspaces. Existing targets and exclusions remain unchanged.
Create a paused Search adGoogle AdsEvery headline, description, pin, destination and display path in an existing ad group. One supervised validation-and-create run passed in an isolated Preview. The family is released in Production for admitted workspaces, and creating the ad still requires exact approval.
One reviewed set of Search keyword bidsGoogle AdsEvery selected keyword name and exact bid in one account. Each row has its own checked result. Only proven-unsent failures can be tried again; successful and uncertain rows are excluded.
Change a keyword bid, destination or match typeGoogle AdsThe keyword identity and current Manual CPC bid, HTTPS destinations or match type beside the exact requested value. Released in Production for admitted workspaces. Match-type replacement changes the criterion id and cannot preserve learning state.
Existing ad statusGoogle AdsOne exact status row for one existing ad, with its ad-group and campaign context. This status operation leaves content unchanged.
Permanent paused-ad removalGoogle AdsOne exact already-paused ad and its campaign and ad-group context, with a permanent-removal warning. Released in Production for admitted workspaces; the same ad id and learning state cannot be restored.
Paused responsive search ad text and destinationsGoogle AdsReleased in Production for admitted workspaces. Every headline, description, pin, HTTPS final URL and display path is shown. The exact ad and its parent state are bound to the card, and the ad remains paused after a verified update.
A new campaign, pausedGoogle AdsNo before and after rows, because nothing exists yet. The card shows the campaign itself: budget, countries and languages, every keyword with its match type, every headline and description with its character count against the platform limit, and each image you uploaded.
New TikTok campaignTikTok AdsNo before and after rows, because nothing exists yet. The card shows the campaign itself: budget in the advertiser's own currency, objective, locations, the schedule in TikTok's own time format, which identity the ad runs under, the ad text against TikTok's character limit, and the video id it will use. It also says plainly that TikTok has not validated any of it, because TikTok publishes no way to check a campaign before creating it.
Transfer one exact private MP4TikTok AdsThe exact file, checksum, size and advertiser. One send, no automatic resend and read-only video-ID recovery. Creating or activating ads needs separate approval.
Existing TikTok campaign statusTikTok AdsThe exact campaign, current configured and effective status, requested status and current budget context. Enabling is checked against spending caps before the card can run.
Existing TikTok ad-group statusTikTok AdsThe exact ad group and parent campaign, current configured and effective status, requested status and configured budget. The card expires if that evidence changes.
Existing TikTok ad statusTikTok AdsThe exact ad and both parent ids, current configured and effective status and requested status. Enabling also rechecks the parent ad-group budget cap.
TikTok ad-group daily budgetTikTok AdsThe exact ad group, advertiser currency, current configured daily budget and requested amount. User edits are recorded, and magnitude, lock, blackout and spending-cap checks run again before execution.
Publish the product feedGoogle Merchant CenterHow many products would be added, updated and removed, and how many are already published unchanged. On a first publish the card also names the Merchant Center account and the data source iNudge would replace, because that publish takes over the feed serving your Shopping ads.

The warnings are the part a model cannot touch. They are computed in our own code before the card is built and stored beside the model's reasoning rather than inside it, deliberately absent from the schema the model writes into. So a model that would rather you did not see a tradeoff has no field to put it in and no field to take it out of.

The card carries no estimated saving and no projected impact. We do not compute one, so it does not show one. A modeled figure on a money decision is the kind of number that gets quoted back at us and cannot be defended, and its absence is deliberate rather than an omission.

You can correct the number before approving. A budget card lets you type the figure you want. It runs the same magnitude, churn and cap checks the agent's figure runs, and it is recorded as a human-stated figure the model can never originate, so an edited number is re-checked rather than trusted blind.

Section 04 · what it can change

What it can change. What it cannot.

Sixty-one operations across four platforms. Meta now includes separately approved activation of one exact verified iNudge-created complete setup, exact ad-set/ad status, ABO ad-set daily budgets and bounded standard link/video creative replacement in addition to campaign controls and budget rebalancing. Google Ads campaign creation is released in Production for admitted workspaces. TikTok Ads can create a paused campaign and prepare exact existing campaign, ad-group and ad status changes or one ad-group daily-budget change when both write switches are on. Each of the thirty-two Google action families has its own gate and is released in Production for admitted workspaces. They include bounded campaign batches, permanent paused-campaign removal, experiment end, recommendation dismissal, Performance Max and Shopping controls, budgets, conversion goals, secondary conversion-action creation with code returned for installation, account-level callout creation, detached call-asset creation, detached Google-hosted lead-form creation, campaign settings, location and delivery targeting, standard and portfolio Smart Bidding targets, paused Search-ad content, ad-group structure and existing audience links, keyword settings, labels, existing asset relationships, new paused Search-ad creation and permanent paused-ad removal. Experiment creation, experiment scheduling, promotion and graduation and Google’s generic recommendation apply endpoint are not implemented. This is the whole implemented list, followed by what is missing.

Table C · the complete write surface
PlatformWhat iNudge can propose todayWhat it cannot do today
Meta Ads
  • Publish one existing manual or separately reviewed catalog-driven Collection Instant Experience draft after exact Page, revision and full-content approval. Requires fresh Page content authority and pages_show_list, pages_manage_posts and pages_read_user_content, not requested by the ordinary connection flow. Missing grants block publication. No new content or ad is created or activated; no automatic retry or undo.
  • Create one new unpublished Instant Experience with fully reviewed ordered text and HTTPS website buttons. Requires fresh Page content authority. Each step sends once with a durable ID; partial creation stops without replay or automatic deletion. Publication and ad activation need separate approvals. Media, catalog, forms and linked content need separate contracts.
  • Change an exact campaign name, schedule, bidding or existing lifetime budget after provider validation.
  • Change an exact ad-set name, delivery, targeting, placements, attribution, bidding, optimization or existing lifetime budget after validation.
  • Create one paused campaign with an explicit objective, category declaration and exact budget mode.
  • Activate one exact iNudge-created complete Meta setup. Off by default; the operator must explicitly switch it on. Platform and account write access and a separate exact approval are required. Only the exact verified iNudge-created campaign, ad sets and ads from one complete paused setup are included. Activates children before the campaign. Configured ACTIVE does not guarantee delivery; effective status and provider issues are shown separately. Interrupted steps are observed before a new remaining-scope approval; no automatic retry or rollback. Arbitrary or bulk enable remains unavailable outside this exact setup contract.
  • Create one paused ad set using verified parent and measurement assets, exact targeting and budget ownership.
  • Create one paused image/video ad, fixed-order website carousel with 2–10 verified image/video cards, or first ad for a published manual Instant Experience or catalog-driven Collection. Review every card or the full published experience, copy, destination, CTA and account-owned cover before approval; Page publication and activation are separate.
  • Duplicate one reviewed campaign, ad set or ad in paused state without its descendants.
  • Transfer one approved private library MP4 up to 50 MiB to the selected Meta account. Processing must be ready before a separate ad-use approval; no automatic resend.
  • Transfer one private library PNG or JPEG, up to 10 MiB, to the selected Meta ad account after exact approval; verify the image hash without creating, changing or activating an ad.
  • Pause or activate a campaign.
  • Set a campaign daily budget, at campaign level only.
  • Move daily budget between two campaigns, or between two ad sets, inside one account, with the total held constant.
  • Pause or activate one exact existing ad set.
  • Pause, activate or rename one exact existing ad. Name-only renames keep status, parents, creative and tracking unchanged.
  • Set one exact ABO ad set’s daily budget. Campaign-owned and lifetime budgets are refused.
  • Replace the CTA, primary text, headline, description, HTTPS destination or URL tags on one standard link or video ad by creating and attaching a replacement creative.
Delete campaigns, ad sets or ads; upload video beyond the separate 50 MiB MP4 transfer or arbitrary remote media; create audiences, deep-copy trees or create dynamic/catalog creatives. Change carousel, collection, existing-post or unsupported creatives, an existing campaign objective or account settings.
Google Ads
  • End one exact currently running experiment. This family is released in Production for admitted workspaces and always requires a second confirmation. The complete experiment, arm, traffic-split and attached-campaign state is checked before and after Google validation, then one non-retried end request is verified by re-read. Treatment stops without being promoted; no winner is chosen and there is no one-click undo. Experiment creation, scheduling, promotion and graduation are unsupported.
  • Pause or enable a campaign.
  • Permanently remove one exact already-paused campaign. This family is released in Production for admitted workspaces. The campaign and budget identity are checked around Google validation, one removal is sent and the result is re-read. An uncertain response is never replayed, and the campaign ID, history and learning state cannot be restored.
  • Pause 2–10 exact enabled campaigns as one atomic operation. This family is released in Production for admitted workspaces and always requires a second confirmation. Every campaign must be named explicitly and remain unchanged through Google validation. Every result is re-read. Bulk enable, budget, targeting and mixed-operation batches are unsupported, and there is no one-click bulk undo.
  • Create and attach one label, attach one existing label or remove one label relationship from one exact campaign, ad group, ad or positive keyword. The account, target and complete attached-label list are re-read before a single atomic write. This metadata-only family is released in Production for admitted workspaces.
  • Attach, pause, enable or remove one existing asset relationship on one exact campaign or ad group. This family is released in Production for admitted workspaces. The target, asset content and current link state are re-read before Google validates and receives one request. Supported links are bounded; account-level links other than the separate callout-creation family, location asset sets, asset creation beyond the separate callout, call and lead-form families, asset editing, and Performance Max asset-group assets are excluded. This family does not yet have supervised Production write-and-inverse evidence.
  • Change the name, enabled or paused status, HTTPS destinations or display paths of one existing Performance Max asset group. This family is released in Production for admitted workspaces. The exact campaign, budget, currency, asset group and current settings are bound to the card, Google validates the request, state is checked again and one update is re-read. Creative assets, asset links, audience signals, product groups, URL expansion, campaign budget and bidding stay unchanged by this operation.
  • Add or remove one search-theme or existing-audience signal on one exact Performance Max asset group. This family is released in Production for admitted workspaces. The complete signal set and exact campaign, account and asset group are bound to the card, checked twice around Google validation and re-read after one mutation. Signals guide Google’s optimization; they do not restrict delivery to the named theme or audience. Audience creation, Customer Match uploads, creative, product groups, URL expansion, campaign budget and bidding stay unchanged by this operation.
  • Include or exclude one existing non-root leaf in one complete Performance Max or Standard Shopping product-group tree, or change one existing included Manual CPC Shopping leaf’s direct bid. This family is released in Production for admitted workspaces. The complete tree and exact account, campaign, container, currency and leaf are bound to the card, checked twice around Google validation, changed in one atomic request and re-read for semantic verification. Trees over 200 nodes, roots, subdivisions, shared-budget Shopping campaigns, arbitrary tree construction and Merchant Center item creation are refused. This family does not yet have supervised Production write-and-inverse evidence.
  • Rename one exact existing campaign. Its current name and status are checked again before mutation, and only the name is changed.
  • Released in Production for admitted workspaces. Turn Search Partners on or off for one existing Search campaign, with exact approval, Google validation and re-read verification. Enabling a shared-budget campaign is refused.
  • Exact campaign dates or campaign tracking settings, released in Production for admitted workspaces. Dates and tracking require separate approvals. Google validates and saved settings are re-read, but the click path and analytics results are not tested. Undo requires another approval and cannot restore an expired date or recover spend.
  • One exact country, named-region, radius or language target, demographic exclusion, device bid modifier, complete account-time-zone schedule or placement exclusion, released in Production for admitted workspaces. Country and language changes use up to 10 reviewed codes; regions resolve through Google from an exact name and country code or an exact geo target id, and radii bind coordinates, distance and units. Google validates, checks state again and re-reads the complete criterion set.
  • Switch one eligible campaign between standard Maximize Conversions and Maximize Conversion Value, or set or clear one exact target CPA or target ROAS, released in Production for admitted workspaces. A switch binds the complete conversion-goal evidence and needs a second confirmation. Shared portfolio strategies, shared budgets, unsupported campaign types, drafts and experiments are refused. No result is promised.
  • Set or clear one exact target CPA or target ROAS on an existing portfolio strategy. This family is released in Production for admitted workspaces. The strategy and every linked campaign are bound to the card; shared budgets are counted once in the combined daily ceiling. Locks and caps cover the whole set. Google validates, checks drift, sends once and re-reads the target and linked set. Undo requires another approval.
  • Set a campaign daily budget, where the budget is not shared with other campaigns.
  • Change one existing shared daily budget’s amount or name, or one eligible campaign total budget. This family is released in Production for admitted workspaces. The exact budget, currency and complete linked-campaign set are bound to the card and checked twice around Google validation before one budget field is sent, then the budget and linked campaigns are re-read. It cannot create, assign, unassign, unshare or remove a budget, and it refuses portfolio-strategy-aligned budgets and experiments.
  • Permanently dismiss one exact Google-native recommendation after approval. This family is released in Production for admitted workspaces. The suggestion is re-read before one non-retried dismissal and afterward for verification. Campaign delivery stays unchanged, Google provides no undo, and its generic recommendation apply endpoint is not implemented.
  • Include or exclude one exact campaign conversion goal, or restore that campaign to account defaults. This family is released in Production for admitted workspaces and always requires a second confirmation. It binds the complete goal map and backing actions, refuses custom goals and experiments, and does not create or edit conversion actions, tags, attribution or account-wide defaults.
  • Create one exact secondary website page-load, website-click, mobile click-to-call or website-call conversion action, released in Production for admitted workspaces. It binds the conversion owner, complete current inventory and every reviewed setting; Google validates twice, state is checked twice, one non-retried creation is sent, and the verified receipt returns Google’s installation code. A second confirmation is required. iNudge does not install or verify the tag, edit or remove actions, make one primary, change goals or attribution, or alter account defaults.
  • Create one exact 1–25-character advertiser-authored callout and link it at account level, released in Production for admitted workspaces. It binds the complete bounded callout inventory; Google validates the atomic request, state is checked twice, one non-retried creation is sent, and the marked asset plus account link are re-read. A second confirmation is required. Google may still review or limit it, and iNudge cannot edit or delete the underlying asset.
  • Create one exact detached call asset for a named Search campaign, released in Production for admitted workspaces. It binds the country code, phone number, account-level reporting choice and complete business hours in the account time zone. Google validates the asset and campaign, state is checked twice, one non-retried creation is sent, and the marked asset is re-read and confirmed detached. A second confirmation is required. Attaching it requires a separate approval; a replacement leaves the old asset unchanged.
  • Create one exact detached Google-hosted lead form for a named Search or Performance Max campaign, released in Production for admitted workspaces. It binds every visible sentence, requested field, HTTPS privacy policy, post-submit destination and four advertiser policy attestations. Google validates the form and campaign, state is checked twice, one non-retried creation is sent, and the marked asset is re-read and confirmed detached. A second confirmation is required. Attaching it requires a separate approval; leads are not delivered to or stored by iNudge.
  • Add between 1 and 20 negative keywords to a campaign, as exact, phrase or broad, defaulting to exact.
  • Remove between 1 and 20 existing campaign negative keywords after binding exact text, match type and live criterion id.
  • Add, pause, enable or remove between 1 and 20 positive keywords in one ad group, with a fresh read before and after execution.
  • Pause, enable or rename one existing ad group. The exact current name and status are checked again before mutation, and enabling is checked against spending caps.
  • Create or remove one paused Search ad group, change its Manual CPC bid, or add, exclude, remove or change the mode of one exact existing user-list audience link. Exact approval, validation and verification are required, and the family is released in Production for admitted workspaces. Removals are permanent; audience creation and Customer Match uploads are not supported.
  • Change one Search campaign’s location-presence mode, with exact approval, locks, caps, validation and verification, released in Production for admitted workspaces. Undo requires another approval.
  • Create one paused responsive search ad after full-content approval. Released in Production for admitted workspaces; one supervised validation-and-create run passed in an isolated Preview. Existing ads are not edited.
  • Review one complete set of selected Search keyword bids. Every row is checked separately, and another attempt includes only proven-unsent failures.
  • Change one keyword’s Manual CPC bid or HTTPS destinations, or replace its match type. Exact approval, locks, caps, validation and verification are required, and the family is released in Production for admitted workspaces. Match-type replacement is atomic, refuses labels or customizers, and cannot preserve the old criterion id or learning state.
  • Pause or enable one exact existing ad. The ad, ad group and campaign are checked again before mutation, and enabling is checked against spending caps.
  • Permanently remove one exact already-paused ad. Released in Production for admitted workspaces. The ad and both parents are checked again, removal is sent once, and an interrupted response is reconciled without replaying it.
  • Replace the complete reviewed headlines, descriptions, pins, HTTPS final URLs and display paths of one paused responsive search ad, released in Production for admitted workspaces. Google validates, the exact ad and parent state are checked again, and content is re-read. The ad stays paused and may re-enter policy review.
  • Create a new campaign, paused, with its budget, targeting, ad groups, keywords, copy and images. Released in Production for admitted workspaces. Approval creates the campaign PAUSED, so it spends nothing until you approve activation separately.
Create or edit most asset content, manage location asset sets, or change Performance Max asset-group assets. Edit image, video or non-responsive-search creative, or edit the content of an enabled ad. Create audiences, upload Customer Match data or build arbitrary Shopping trees. Delete enabled campaigns or enabled ads. Edit or remove an existing conversion action, install or verify tracking code, change attribution, or turn budget sharing on or off. Move budget between campaigns as one conserved operation: there is no Google Ads rebalance tool, and the agent is instructed to say so rather than fake one with two separate writes.
Google Merchant Center
  • Publish the product feed iNudge builds from your Shopify catalog. The first publish makes iNudge the primary data source for that Merchant Center account, which replaces whatever feed supplies your Shopping ads today, and the card says so before you approve. Only products that changed since the last publish are sent, and a build carrying an error Google would reject cannot be published at all.
Change bids, budgets or campaigns. Change your Merchant Center account settings, shipping, tax or returns. Delete a data source. Touch an account you did not connect. Merchant Center accepts products one at a time, so a publish reports each item's outcome and can end partial; it never claims Google approved anything, because approval arrives later and the feed audit is what reports it.
ShopifyNothing. Shopify is read-only today: no write permission is requested and no write path exists in the code.It is absent from the list of providers the write switch accepts, so the switch refuses to arm for it. There is no proposal tool and the code that executes approved changes has no Shopify branch.
TikTok Ads
  • Create a new campaign, ad group and ad in one card, every object paused. The identity, video and pixel are verified before proposal and checked again at approval. Nothing is activated by the creation approval; activation is a separate exact proposal.
  • Transfer one exact private MP4 to the selected advertiser after its own checksum-bound approval. One send, read-only video-ID recovery and no automatic resend. No ad is created or activated.
  • Pause or enable one existing campaign after a fresh exact-id read, safety checks and exact approval.
  • Pause or enable one existing ad group after a fresh exact-id read, parent-budget checks and exact approval.
  • Pause or enable one existing ad after a fresh exact-id read, parent-budget checks and exact approval.
  • Change one ad group’s configured daily budget in the advertiser’s currency after caps, rules and exact approval.
Change bids, targeting, schedules, identity, creative or destination on an existing object. Delete anything. Upload remote media. A selected private MP4 can be transferred through its own approval; campaign creation requires a ready advertiser video. Change audiences, pixels or the Events API. TikTok has no all-or-nothing create, so campaign, ad group and ad are three separate calls; every object is created paused, and a build that fails part-way names exactly which objects exist rather than reporting a bare error.
Google Analytics 4Nothing. The permission we request is read-only.We read your property list and your traffic by source. No write permission, no mutating call.
Google Search ConsoleNothing. The permission we request is read-only.We read your site list and your search queries and pages. No write permission, no mutating call, and there is no write path.

Not built: LinkedIn Ads, Microsoft Ads, Pinterest Ads, Snapchat Ads, Klaviyo, Amazon Ads. No connector, no login flow, no API client and no agent tool for any of them. We write not built rather than planned, because that word is a delivery promise and there is no date behind one.

Four connected platforms have at least one bounded write operation: Meta Ads, Google Ads, TikTok Ads and Merchant Center. Everything else we connect is read-only by construction rather than by policy. The bound is structural: one function in our code sends every Meta change, including the closed placement-value, audience and bid-cap operations, and the account-level spend cap set at connect. Background reporting also uses that sender to request a report, without changing advertiser settings. Google mutations compile from closed service-specific operation lists, including exact criterion removals, ad-group changes, existing-ad status changes and a separate permanent-removal operation restricted to already-paused ads. Atomic multi-operation paths carry paused campaign creation, the Google families released in Production for admitted workspaces and a separate 2–10 campaign pause batch. Separate non-retried Google endpoints can permanently dismiss one exact provider recommendation without applying it, end one exact running experiment without promoting treatment changes or selecting a winner, and create verified detached call or Google-hosted lead-form assets. All thirty-two Google action families are released in Production for admitted workspaces. Each change needs that account’s write switch and either approval of the exact change or a current permission for that supported fix. No outbound operation can delete an enabled campaign, an enabled ad, an account or a conversion action.

Where this stands today.

Meta is a reviewer-only path. Meta's read and write code is implemented, but Meta app review is still in progress. Access is limited to Meta reviewers and explicitly allowlisted test accounts, and no Meta capability is offered to other beta customers.

Google Ads is open to the controlled beta. Account reads and recommendations are available to beta customers. All thirty-two Google action families are released in Production for admitted workspaces. Each change needs that account’s write switch and either approval of the exact change or a current permission for that supported fix. Google Ads campaign status, campaign name and one private daily-budget path have supervised Production write-and-inverse evidence. The other released families do not yet have that same provider-evidence standard.

Every field we read from each platform, and the permission behind it, are on the integrations page.

Section 05 · the limits, in code

The limits live in code, not in a prompt.

Two kinds of rule. A block means no approval card is ever created, so there is nothing to press. A warning means the card is created and carries the tradeoff above the button.

Table D · every block and every warning
RuleWhat happensWhere it applies
A budget increase larger than 300%Warning A smaller step is recommended. Proceed with the requested amount after acknowledging this exact change on the approval card. Saved caps and platform checks still apply.Meta campaign, Meta ad set, Google Ads campaign
A budget change larger than 20%, up or downWarning Allowed, with the tradeoff printed on the card above the approve button.Meta campaign, Meta ad set, Google Ads campaign
A Google Ads budget shared with other campaignsBlock Blocked when the proposal is drafted, and blocked again by the executor before it sends, because changing it would move money in campaigns you did not review.Google Ads campaign budget
A Meta campaign whose budget lives on its ad sets, or that runs on a lifetime budget, or an amount of zero or lessBlock Blocked.Meta campaign budget
A campaign already in the state being asked for, or deleted, or archivedBlock Blocked, with the campaign's real current state named.Meta status changes
A Google Ads campaign that has been removed, or cannot be read from the accountBlock Blocked when drafted, and re-checked against live state before the write is sent.Google Ads changes
A budget move whose two sides sit in different ad accountsBlock Blocked, failing closed, because two accounts can bill in two currencies. It is blocked the same way when the account cannot be confirmed at all.Meta budget move
A budget move that would take the source to zero or belowBlock Blocked. Turning a campaign off has to be proposed as a pause and approved as one.Meta budget move
A campaign covered by a lock rule you wroteBlock Blocked in code, and the refusal quotes your own words back at you.Meta and Google Ads status changes
A number in the proposal that cannot be traced to a live read from that same turnBlock Blocked before a card exists, with strict matching, so a hundredfold unit error cannot pass as a rounding difference.Every change
A proposal older than 24 hoursBlock Refused at approve time. Nothing transitions and nothing is sent. Ask again and the account is read afresh.Every change
Writes switched off after the proposal was draftedBlock Refused at approve time. The card stays pending with the reason on it.Every change
A Google Ads change that could apply to more than one connected accountBlock Blocked. iNudge asks which account you mean instead of guessing.Google Ads changes
Negative keywords per proposalWarning Bounded between 1 and 20, in the schema the model is offered and again at runtime.Google Ads negative keywords
Pressing approve twiceWarning An atomic claim on the row means exactly one write goes out. The second press loses the race and is answered with the first one's result.Every change

These are not instructions in a prompt the model could talk itself out of. They run in our own code, before the model's output ever reaches a card, and the ones that guard money run again at the moment you press.

Section 06 · the second you press approve

What happens the second you press approve.

Seven steps, in one request. There is no queue, no worker and no callback: the write and the check that proves it are the same round trip.

  1. 01Your subscription and that connection's write switch are re-checked at the moment you press, not at the moment the proposal was written.
  2. 02Anything older than 24 hours is refused, and nothing transitions.
  3. 03The row is claimed atomically, moving from proposed to executing. A second press loses the race and replays the same answer.
  4. 04Inside the claim, the propose-time guards re-run against fresh platform state. If the account moved underneath, the row settles as failed with the reason and nothing is sent.
  5. 05Exactly one write goes to the platform.
  6. 06The platform is read back, in the same request.
  7. 07The re-read is compared against what you approved, field by field. A match settles as verified. A mismatch settles as a failed verification with the discrepancy stored in plain words, for example "Re-read shows 420 USD, not 320 USD."

A proposal is a claim about a moment. Past 24 hours the numbers on the card describe an account that has moved, so the honest answer is to ask again rather than to execute on a snapshot nobody re-checked.

Activating a Meta campaign counts as done when Meta saved it, and what Meta is still doing with it is shown as a state. Meta reports a campaign's own status and its effective status separately, and a campaign can be ACTIVE in name while gated by review, by budget or by an account issue. The check verifies the saved status and reads the effective one into words on the card ("Meta is still reviewing the ad"), then reads it again until it clears, so a review hold is never dressed as a failed change and never hidden as a live one.

If the guards cannot be re-run, nothing runs. An action type with no re-checkable guard is refused rather than allowed through on a pass that was a claim about nothing, and a read failure before the write settles the row as failed with the reason instead of executing blind.

Section 07 · the record it leaves

Every change leaves a record you can read.

One row in our database per proposal, approved or not, written as the change moves through its states. This is what the row holds.

Table E · the record, field by field
FieldWhat it holds
Summary and action typeWhat was proposed, in words, and which of the sixty-one operations it was.
Target and connectionThe campaign, ad set or campaign target, and which connected account it belongs to.
Conversation and messageThe exact turn of chat the proposal came out of.
DecisionThe agent's claim, its confidence, its evidence list, and the warnings our server computed and showed you.
Before stateWhat the platform said before, at propose time.
Requested stateWhat you were asked to approve.
Executor resultWhat the platform returned.
Verified stateWhat the platform said when we read it back.
Verification resultWhether those two matched, and the discrepancy where they did not.
API errorThe provider error or host safety reason, mapped into a title, a detail and a suggested fix.
TimestampsCreated, decided, executed.

The states a change can be in

proposeddeniedexpiredexecutingverifiedverification failedfailedrolled backrollback failed

Only finished rows become receipts. A proposal still waiting on you is not a receipt, because nothing has happened. The ledger on your Today screen is built from rows that reached a decision, so it is a record of what was done rather than a list of what was suggested.

One thing we will not claim. The record stores that a change was approved, when, on which account, and which signed-in person pressed the button. Workspaces can include an Owner and Members, so that person-level record is what makes each approval accountable. A proposal that expires because a newer one replaced it records no approver, because nobody approved it.

How long we keep all of this, and how to have it deleted, is in the privacy policy.

Section 08 · when something goes wrong

When something goes wrong, it says so.

The second fear about letting anything touch a live account is not that it refuses. It is that it fails halfway and nobody tells you. Here is every way this can end badly and what you see in each case.

Table F · the failure matrix
What went wrongWhat you seeWhat we do
The platform rejects the writefailed Failed, not confirmed live, with the provider's own reason translated into a sentence and a suggested fix.Nothing changed. The row settles as failed.
The write applied and the re-read disagreesverification failed A failed verification, with the discrepancy written out.It is not marked done and it does not go green. The mismatch is stored on the row so a reload shows the real difference rather than a generic sentence.
A budget move fails after its first legrolled back Which legs applied, and that the account was put back.Compensation runs on its own: applied legs are restored in reverse order and re-read to confirm they landed. The row settles as rolled back.
The compensation itself failsrollback failed Could not fully undo, action needed, naming the exact entities and the value each should be back at.We say the true thing rather than the comfortable one: a step failed, we could not fully undo it, and your account may be changed. Check these in Ads Manager.
Something throws after the write was sentfailed Failed, with the real error.The write may or may not have applied, so we say exactly that and tell you to re-check the campaign before retrying. The row is never left stuck mid-flight.
The guards refuse before anything is sentfailed The account changed since this was proposed, with the blocker named.Nothing was sent. The row settles as failed and says so, which is a different sentence from the one above on purpose.

Undo shows the exact settings to restore. Supported earned-change receipts offer an exact undo for 24 hours. Your tap authorizes only the displayed previous settings after a fresh account check. Other eligible verified Google Ads and TikTok receipts prepare a separate approval. Unsupported or unverified actions need a new review. Undo cannot recover spend, impressions or learning effects. Compensation inside a failed Meta budget move remains separate. Uncertain platform writes are not automatically replayed.

A mismatch is never recorded as a success. The status a card shows is derived from the re-read, not from the platform's own reply, so a partial cannot be presented as a completion. That is why the verified footer says the change was confirmed live by re-read rather than saying the platform accepted it.

Section 09 · the questions worth asking

The questions worth asking.

Can iNudge change my campaigns without asking me?

No, and two separate gates stand in the way. A connection is read-only until you switch writes on for that specific account, and while it is off the change tools are never handed to the model. With writes on, supported fixes may run only within a separate permission and saved limits for that account. You can withdraw it. Changes outside that permission still wait for your exact approval.

What if I never approve anything?

Nothing changes. Proposals sit there and are refused after 24 hours. Read-only features can continue without enabling writes. Repeat audits, daily monitoring, alerts and AI features require an active trial, plan or eligible Shopify install.

What happens if a change fails halfway through?

Two cases. A single change either lands or does not, and the re-read tells you which. A budget move has two legs, so if the second fails the first is put back automatically and the row is marked rolled back. If a leg cannot be put back, we say so and name the exact campaigns to check in Ads Manager instead of pretending it resolved.

Can I undo a change?

Supported earned-change receipts offer an exact undo for 24 hours. You see the previous settings and tap once to restore them after a fresh account check. Other eligible verified receipts prepare a separate approval. Unsupported or unverified actions need a new review, and undo cannot recover money already spent.

What are the hard limits?

A budget increase larger than 300% requires acknowledgment of the exact change on the approval card. You can edit the amount or proceed after reviewing the recommendation. A change larger than 20% carries a spending explanation; that percentage alone does not prove a learning reset. Saved spending caps, campaign locks, permissions and platform checks still apply. Conflicting saved rules need an explicit settings change before a new approval.

Can it invent a number to justify a change?

Structurally, no. Every figure on a proposal has to trace back to a live read from that same turn, the check runs before the card is built, and the metric it can cite is a closed list of the metrics our read tools actually return. A proposal with an untraceable number is refused rather than softened.

Which platforms can it actually change?

Google Ads, TikTok Ads, GA4, Merchant Center, Search Console and Shopify are open to the controlled beta. Meta Ads is reviewer-only while app review completes. All thirty-two Google action families are released in Production for admitted workspaces. Each change needs that account’s write switch and either approval of the exact change or a current permission for that supported fix. TikTok Ads changes are available to admitted workspaces with both write switches on and exact approval. Meta has implemented change operations but is reviewer-only. Merchant Center publishing is supervised-only. Shopify, GA4 and Search Console have no customer write path.

What if I click approve twice?

The row is claimed atomically, so exactly one write goes out. The second press gets the same answer as the first, because the endpoint is idempotent rather than because the browser stopped you.

Do you record which of us approved it?

Yes. We record that a change was approved, when, on which account, and which signed-in person pressed the button. Workspaces can include an Owner and Members, so each approval is attributed to the person who made it. A proposal that expires because a newer one replaced it records no approver, because nobody approved it.

Do I need a paid plan to publish?

Google Ads connection and one initial audit need no card. Repeat audits, daily monitoring, alerts and AI features require an active trial, plan or eligible Shopify install. Merchant Center publishing is supervised-only. Approving a permitted change draws no credits, but the conversation that produced it does.

Controlled beta

Start read-only. Turn writes on only when you trust the evidence.

Sign up with one active Google Ads account. You review the first recommendation before any write capability is considered.

  • writes off until you switch them on, per account
  • one card, one decision, no bulk approve
  • every figure on this page: one demo account

You connect read-only first. You choose which supported fixes iNudge may handle within saved account limits. New ads and higher total spending need your approval.

Receipts

  1. Write access is off on every new connection. While it is off, the agent's change tools are left out of the request sent to the model, so it is never handed them.
  2. Write access is granted per connected account and can be withdrawn without disconnecting the read. Arming one platform never arms another.
  3. Every product view and every figure on this page is the Gymszy sample account, labeled as demo data where it appears. Nothing here is presented as a customer result, because there are none to present yet.
  4. Warnings on a proposal are computed by our server and stored beside the model's reasoning rather than inside it, deliberately outside the schema the model writes into, so it can neither author them nor remove them.
  5. Google Ads, TikTok Ads, GA4, Merchant Center, Search Console and Shopify are open to the controlled beta. Meta Ads is reviewer-only while app review completes. All thirty-two Google action families are released in Production for admitted workspaces. Each change needs that account’s write switch and either approval of the exact change or a current permission for that supported fix. TikTok Ads changes are bounded and available to admitted workspaces with both write switches on and exact approval. Merchant Center publishing is supervised-only. Shopify, GA4 and Search Console have no customer write path.
  6. A budget increase larger than 300% requires acknowledgment of the exact change. A change larger than 20% in either direction is explained on the card. Saved limits and platform validation still apply.
  7. A proposal older than 24 hours is refused at approve time and has to be asked for again against a fresh read.
  8. Every approved change executes exactly once and is verified by reading the platform back in the same request and comparing it, field by field, against what you approved. A mismatch is recorded as a failed verification, never as a success.
  9. The record stores that a change was approved, on which account, and which signed-in person pressed the button. Workspaces can include an Owner and Members, so each approval remains attributable to the person who made it.
  10. Compensation inside a failed Meta budget move remains automatic. Supported earned-change receipts separately offer an exact 24-hour undo; other eligible verified receipts prepare a new approval. Undo cannot recover spend or delivery effects, and uncertain platform writes are not automatically replayed.