Integrations · what we read, what we can change

Six beta integrations. Every other status, named.

iNudge connects to the platforms listed here. 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.

The implementation details below do not turn those limits into customer availability. Each connection is read-only until you turn on its write switch, and supported fixes then need your current account permission and saved limits; changes outside that permission need your exact approval. This page lists each platform's status, the exact permissions requested, the fields implemented, and what each connection can read or change. Platforms we have not built are named below, so nothing here is implied.

No card to connect. Every connection is read-only until you turn writes on, per account.

Not a demo: the same status words as the matrix below.

Section 01 · where each platform stands

Seven platforms, and six we have not built.

Six states for the platforms we have built, one for the platforms we have not, and no eighth. There is no coming-soon badge on this page, because a badge without a date is a promise we would be making with your money on the table. Read the status column before the two on its right: a platform whose code is finished says exactly that and nothing more, until production has evidenced the rest.

Where each platform stands today
PlatformStatusWhat iNudge readsWhat iNudge can change with your permission
Meta AdsReviewer-only · app review in progressAd accounts, campaign and configured ad-set inventory, complete bounded ad and creative inventory, plus performance at account, campaign, ad set and ad level: spend, impressions, clicks, CTR, CPC, CPM, frequency, reach, purchase ROAS and exact Meta action types. Ad-set budgets are labeled as campaign-owned (CBO) or ad-set-owned (ABO), never inferred from spend.Eighteen approval-only operations: exact campaign/ad-set delivery; paused campaign, ad-set and standard ad creation; separate exact activation of one iNudge-created complete setup; single-object paused duplication; campaign/ad-set/ad status; campaign or ABO ad-set daily budgets; budget rebalancing; bounded creative replacement; exact image/video transfers; and publication of one existing manual experience draft when the required Page content permissions are granted
Google AdsControlled beta · full production evidence pendingCampaigns, exact budget identity, period, sharing state and complete bounded linked-campaign sets, experiments with control/treatment splits and Google-reported uncertainty, ad groups, keywords, search terms, responsive search ad text and policy status, existing campaign and ad-group asset links, complete bounded Shopping product-group trees, plus cost, impressions, clicks, conversions and conversion value, day by dayThirty-six changes across thirty-two families: pause 2–10 exact enabled campaigns in one atomic batch, end one exact running experiment without promoting its treatment, permanently dismiss one exact Google-native recommendation without applying it, pause, enable, rename or permanently remove one already-paused campaign, create or change one operational label relationship, attach, pause, enable or remove one existing campaign or ad-group asset relationship, create one advertiser-authored account-level callout, create one detached call asset, create one detached Google-hosted lead form, change one existing Performance Max asset group’s name, status, HTTPS destinations or display paths, add or remove one Performance Max search-theme or existing-audience signal, include or exclude one existing non-root Performance Max or Standard Shopping product-group leaf or change one eligible Manual CPC product-group bid, set a non-shared campaign daily budget, change one existing shared daily budget’s amount or name or one eligible campaign total budget, change Search Partners, exact campaign dates or tracking, country, region, radius or language targeting, demographic exclusions, device modifiers, complete schedules or placement exclusions, set or clear one exact target CPA or target ROAS on an existing eligible standard or portfolio strategy, include or exclude one exact campaign conversion goal or restore account defaults, create one exact secondary website or call conversion action and return Google’s code for installation, replace complete reviewed content on one paused responsive search ad, create a paused campaign, add or remove campaign negatives, manage positive ad-group keywords, pause, enable or rename an ad group, create or remove a paused Search ad group, change its Manual CPC bid or manage an exact existing audience link and mode, change a keyword bid, HTTPS destinations or match type, change location-presence mode, pause or enable one existing ad, and permanently remove one already-paused ad. 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 Merchant CenterControlled beta · full production evidence pendingYour Merchant Center accounts, the data sources in them, and every product with its item-level issues and per-country approval statusOne change: publish the product feed iNudge builds from your Shopify catalog, which makes us the primary data source for that account
TikTok AdsControlled beta · full production evidence pendingAdvertiser accounts with currency and timezone; typed campaign, ad-group and ad inventory; spend, impressions, clicks, conversions and TikTok's own attributed purchase value by day at account, campaign and ad-group level; plus deterministic auditsApproved campaign, ad-group and ad status changes; approved ad-group daily-budget changes; and one paused campaign tree created from verified account assets
ShopifyShopify App Store · read-onlyShop name, domain, currency, plan and timezone; daily gross sales, discounts, returns, net sales, total sales and order count; product count; order count and a sampled revenue total for a windowNothing. Shopify is read-only today: no write permission is requested and no write path exists in the code
Google Analytics 4Controlled beta · full production evidence pendingSessions, key events, purchases and revenue by traffic source and medium, day by day, plus the same window rolled up by channel groupNothing. The permission we request is read-only
Google Search ConsoleControlled beta · full production evidence pendingSearch queries and pages, with clicks and impressions by day, plus the list of your verified sites at connect timeNothing. The permission we request is read-only
Six more platformsNot builtNothingNothing

In full: LinkedIn Ads, Microsoft Ads, Pinterest Ads, Snapchat Ads, Klaviyo, Amazon Ads. Section 04 says what not built means, and it is stricter than it sounds.

Section 02 · the two switches

Two switches stand between iNudge and your account.

01

Writes are off when a connection is created.

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 the agent cannot emit a change even if you ask it to.

02

You turn writes on per account, and confirm it.

The switch lives on that one connection. Arming Meta never arms Google or TikTok. Turning it on takes a confirmation and turning it off does not, and the code refuses to arm it at all for Shopify, GA4 and Search Console.

03

You choose which fixes iNudge may handle.

You approve new ads, activation, higher total spending and destination changes. Supported fixes can run within a separate permission for that account and its saved limits. You can withdraw it in chat or Settings. Results are checked against the account before iNudge reports them.

A proposal older than 24 hours will not execute and has to be asked for again. A double-click cannot execute it twice. After a change runs, iNudge re-reads the platform in the same request and reports success only when the platform's own value matches what you approved. A mismatch is stored as a failed verification and shown to you as one.

The refusals, the audit record and the exact bounds are on the security page.

Section 03 · every field, per platform

Every field we ask for, one platform at a time.

Meta Ads

Reviewer-only · app review in progress

Why it is here. The account iNudge audits, watches daily and can be authorized to adjust, for Meta reviewers while app review completes.

Permissions we request:

ads_readads_managementbusiness_managementpages_show_listpages_read_engagementpages_manage_ads

pages_manage_ads is optional and used only to create a paused ad for a named Facebook Page after your separate approval. Existing connections need a new Meta grant for that action. Where the connection runs through Facebook Login for Business, our authorize request omits the permission list entirely and the granted set comes from a configuration inside our Meta app rather than from our code. Meta's own consent screen shows you the permission set you are actually granting, and that screen is the authority.

What we read

  • Which ad accounts your login can reach: account id, name, currency, account status, the business that owns it, and lifetime amount spent
  • Account summary: name, currency, status, lifetime amount spent, business name and timezone
  • Campaigns: id, name, status, effective status, objective, daily budget, lifetime budget and start time
  • Performance at account, campaign, ad set and ad level: spend, impressions, clicks, CTR, CPC, CPM, frequency, reach, purchase ROAS, actions, action values and cost per action
  • The same figures broken out by day, which is the history the daily watch compares against
  • Ads and creative: parent campaign/ad-set identity, configured and effective status, tracking and conversion-domain fields, and the creative’s id, name, title, body, CTA, object-story/asset-feed shape, image/video identity, destination tags, thumbnail and Instagram permalink
  • The state of a campaign or ad set immediately before a change, and again immediately after, to verify it

What can change, after you approve it

All eighteen Meta Ads changes
  • Publish one exact reviewed Page-owned Instant Experience draft. Manual, Collection and ready catalog-generated template-video content have separate approvals. Fresh Page authority and full content are rechecked; catalog formats also bind the exact commerce source, set, filter and ordering. Generated video needs a ready preview. Required Page permissions are separate from ordinary connection access. One send and exact readback; no automatic retry or undo. Publication does not create or activate an ad.
  • Create one new unpublished Instant Experience with fully reviewed ordered plain text and HTTPS buttons, or a separate Page-media contract adding exact Page-owned photos/ready videos, fit and spacing. A separate nested-layout contract adds reviewed photo carousels, first-position photo headers and last-position button footers with every child’s content and destination. Children are created before groups; only roots enter the experience. Fresh Page content authority and permissions are required. Each step sends once and saves its exact ID; partial creation stops without replay or automatic deletion. Publication and ad activation require separate approvals. Media uploads/URLs, recursive groups, product tagging, forms and linked content are outside these contracts. 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. A separate template-video draft contract creates unpublished catalog-generated hero/product-set/footer content with an exact commerce source, storefront source template, matching product sets and reviewed product-name/price/color settings. Meta chooses the video layout and products dynamically. Fresh catalog and Page proof protect each single send and durable receipt. Complete readback reports preview processing or readiness separately from configuration success. A separate template-video publication approval requires a ready generated preview, exact source template, full Page content and fresh catalog proof. Neither draft nor publication approval creates an ad; generated-video ad use remains separate.
  • Change exact campaign scheduling, bidding or an existing lifetime budget. Provider-validated settings, current-state binding, exact currency, policy checks and verification after one request.
  • Change exact ad-set targeting, placements, audiences, bidding, attribution, optimization, scheduling or an existing lifetime budget. Closed settings preserve untouched targeting. Account ownership, caps, locks and blackout windows apply.
  • 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, including ready catalog-generated template video, requires its own full published-content/catalog contract and a complete, consistent ad-set and first-ad plan before campaign approval.
  • 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 Meta ad set. The parent campaign, budget ownership, targeting, pixel/event and selected assets are rechecked before one send. Collection website purchase ad sets, including ready catalog-generated template video, have separate full published-content/catalog contracts under the exact paused sales/catalog campaign. The ad still needs separate approval.
  • Create one paused standard image/video Meta ad or first ad for a published manual Instant Experience or catalog-driven Collection. Verified Page, media, form and parent IDs plus exact copy, destination and CTA. First-experience ads review full published content and a single account-owned cover without requiring a source ad. Uses account-uploaded assets; Page publication, media transfer and activation need separate approvals. Catalog-driven Collection reviews full published Page content, catalog scope and paused parents. Photo and uploaded-video heroes use their own contract; a ready catalog-generated template-video uses a distinct dynamic Collection-video contract. Products, prices and rendered video stay dynamic. New Collection parents have their own full-setup approval contract; this ad approval does not create parents.
  • Duplicate one Meta campaign, ad set or ad in paused state. One object without descendants. Copy has no validate-only contract; one send is verified without a timeout retry.
  • Transfer one approved private library MP4 up to 50 MiB to the selected Meta account. Check processing read-only for up to 24 hours. A ready video needs a separate ad-use approval; interrupted uploads are never resent.
  • Transfer one private library PNG or JPEG, up to 10 MiB, to the selected Meta ad account after exact file, checksum and destination approval. Verify the returned image hash in that account. No ad is created, changed or activated; interrupted uploads are not resent.
  • Pause or activate a campaign.
  • Set a campaign daily budget. Campaign-level budgets only, so a campaign whose budget lives on its ad sets is refused, and so is one on a lifetime budget.
  • Move daily budget between two campaigns or two ABO daily-budget ad sets in the same parent campaign, with the total held constant.
  • Pause or activate one exact existing ad set.
  • Pause, activate or rename one exact existing ad. A rename changes the name only and binds the current configuration.
  • 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/video ad. Meta creates a replacement creative and iNudge attaches it to the same ad.

What we never touch: Deleting Meta campaigns, ad sets or ads; changing billing or account settings; uploading customer lists; changing pixel settings; or sending Conversions API events. A new ad is created paused and needs a separate approval to activate. Creating a Page ad does not publish a Page post.

Guardrails, enforced in code

  • A budget increase over 300%, which is more than four times the current figure, is blocked before an approval card is ever created
  • A budget change over 20% in either direction shows a warning above the approve button, because it can restart Meta's learning
  • A rebalance across two different accounts is blocked and fails closed
  • A rebalance cannot take the source down to zero. Pausing is a separate, explicit action
  • A campaign covered by a lock rule you wrote cannot be paused, and the refusal quotes your rule back to you

Where this stands today. Meta reads and guarded write code exist, but Meta's app review is still in progress. New grants are limited to Meta reviewers and explicitly allowlisted supervised test accounts. Meta is not offered to other beta customers, and its implemented write tools are not a general availability claim.

Google Merchant Center

Controlled beta · full production evidence pending

Why it is here. The product feed behind Shopping, where a bad title costs every impression.

Permissions we request:

https://www.googleapis.com/auth/content

Google publishes one Merchant Center permission and it covers reading and writing, the same as Ads. There is no read-only version to ask for, so read-only is a behavior we enforce rather than a permission we request: publishing starts off on your connection, and while it is off no publish tool is sent to the model and the server refuses a publish even if one were proposed.

What we read

  • The Merchant Center accounts your login can reach, with their names
  • The data sources in an account, so we adopt an existing feed rather than creating a second
  • Products already in the account, with their offer ids and attributes
  • Item-level issues and per-country approval status, which is what the feed audit reports
  • The same product list again after a publish, to confirm what was accepted

Product reads stop after 5 pages of 250. When a read is cut short we label it truncated rather than presenting a partial catalog as the whole account.

What can change, after you approve it

  • Publish the built feed. 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. Nothing is published if the build has an error Google would reject.

What we never touch: Bids, budgets or campaigns. Your Merchant Center account settings. Shipping, tax or returns configuration. Deleting a data source. Anything in an account you did not connect.

Guardrails, enforced in code

  • Publishing is off by default on the connection, and arming it takes a confirmation
  • A first publish also requires typing the word PUBLISH, because it replaces the feed serving your ads
  • The feed is rebuilt and revalidated at the moment you approve, so a card drafted against an older catalog cannot publish a feed nobody reviewed
  • A build with any error Google would reject cannot be published at all
  • Merchant Center accepts items one at a time, so a publish reports each item's outcome and can end partial rather than claiming success

Where this stands today. The connector, reads, catalog import, feed audit, rules and preview are implemented and open to the controlled beta. Publishing stays off until the write switch is armed and the exact publish is approved, and remains under supervised validation until publish, verify and recovery have a complete production evidence pack. If Google refuses to list your accounts at connect time, the screen says so and names it as ours to fix. Implemented code is not a customer-available publishing promise.

TikTok Ads

Controlled beta · full production evidence pending

Why it is here. TikTok campaign structure, performance and deterministic checks for ecommerce and lead-generation accounts.

Permissions we request: There is no permission string in our code to print here. TikTok fixes an app's permission set when it approves the app in its own developer portal, so our authorize request sends no scope parameter at all. That makes this the one row on the page where the honest answer is a name from somebody else's dashboard rather than a literal from ours.

TikTok reports the approved grant as numeric ids and publishes no public id-to-name mapping. We therefore store the complete returned set and compare it with the exact reviewed production fingerprint; missing or additional ids fail closed. We never claim that an individual numeric id means a named permission. The consent screen and TikTok’s developer portal remain the authority on the permission names.

What we read

  • Which advertiser accounts your login can reach: advertiser id and name
  • Account details: name, currency, timezone and account status. That is a second call, because the account list carries none of them
  • Daily performance for the account: spend, impressions, clicks, conversions and TikTok's own attributed purchase value
  • The same figures per campaign, with the campaign id and campaign name, day by day
  • Typed campaign, ad-group and ad inventory, including configured budgets, delivery status and parent ids
  • Available identities, videos and pixels used to verify campaign-creation assets
  • Deterministic ecommerce or lead-generation audits at account, campaign and ad-group grain

A day TikTok sends no row for is stored as unread rather than as a zero. TikTok filters days with no data out of the response entirely, so a day with no spend and a day we never read arrive looking identical, and writing zeros there would understate spend and inflate every ratio built on it. A window TikTok answers as partially successful is stored incomplete rather than whole. The purchase value above is what TikTok attributed to its own ads: there is no attribution-window parameter on the reporting endpoint, each ad group carries its own windows, so those figures are not comparable with Meta's and are never labeled revenue.

What can change, after you approve it

  • Create a new campaign, ad group and ad in one card, every object paused. The selected identity, video and pixel are read from TikTok when the card is prepared and checked again at approval. TikTok publishes no dry run, so the card says that iNudge checked the draft and TikTok did not pre-validate it.
  • Transfer one exact reviewed private MP4 to the selected advertiser. One send, checksum-bound approval, read-only video-ID recovery and no automatic resend. Ads require separate approval.
  • Enable or pause one existing campaign after a fresh exact-id read and approval.
  • Enable or pause one existing ad group after a fresh exact-id read and approval.
  • Enable or pause one existing ad after a fresh exact-id read and approval.
  • Change one ad group’s configured daily budget in the advertiser’s currency after caps, rules and approval.

What we never touch: Deleting anything. Editing bids, targeting, schedules, creative, audiences, pixels or Events API settings. Remote media upload is not implemented. One private-library MP4 can be transferred through its own exact-file approval; ad creation then requires a ready advertiser video.

Guardrails, enforced in code

  • Writes are off by default globally and per connection
  • The complete numeric grant must exactly match the reviewed production fingerprint
  • Every target and campaign-creation asset is re-read before the write
  • Spending caps, locks and blackout rules are rechecked at approval
  • No automatic retry after an uncertain provider reply
  • Every successful existing-object write is verified by a provider re-read

Where this stands today. TikTok Ads reads, typed inventory, daily history and the deterministic audit are open to the controlled beta. Status and ad-group budget changes are available only with both write switches on and exact approval. Campaign creation produces paused objects only and requires complete identity, video and pixel evidence. TikTok deletion, bid, targeting and creative-upload writes are not implemented.

Shopify

Shopify App Store · read-only

Why it is here. Your revenue and returns are what turn a ROAS number into a profit judgment.

Permissions we request:

read_ordersread_productsread_reportsread_analyticsread_inventory

All five are read permissions. read_inventory reads a variant's unit cost, so a product's margin can inform its Shopping feed; the other four cover sales and catalog. We deliberately do not request read_all_orders, the protected permission that would let us list orders older than 60 days, because the reporting gain does not justify the access. Shopify shows you the permission list on its own install screen before you approve it, and a store that granted a wider set at some earlier install keeps that grant: what bounds the reads is the code, and customer identities, addresses, payment details and fulfillment records are not queried. Paid-order eligibility and product quantities after returns or removals are read for the last 28 completed shop-local days to identify bestsellers; only product identities and aggregate paid-order counts enter alert evidence. Raw order and line identities stay in memory.

What we read

  • Shop settings: name, domain, currency, plan and timezone
  • Daily sales from Shopify's own analytics: gross sales, discounts, returns, net sales, total sales and order count
  • Product count
  • Order count for a window, and a revenue total summed from the orders themselves
  • Canceled order count for a window
  • Best-selling products from paid, non-test, non-canceled orders over the last 28 completed shop-local days; incomplete coverage withholds the ranking

The revenue total for a window is a sample and the sample size travels with the figure. Orders are read 100 rows at a time and we follow Shopify's cursor rather than stopping at the first page, up to a budget of 50 pages. Past that the window comes back marked incomplete instead of being passed off as the whole total. When Shopify counts orders and returns none of them, revenue comes back empty with the reason in plain language, never as zero. A day holding an order whose money we cannot read is removed whole and named, from the live total and the stored series alike, so the two never disagree about what a day was worth.

What can change: Shopify is read-only today. It is absent from the list of providers the write switch accepts, so the switch refuses to arm for it, no proposal tool exists, and the code that executes approved changes has no Shopify branch. The only request we send to Shopify that is not a read is the install handshake itself.

What we never touch: Customer names, emails and addresses. Line items. Fulfillment and shipping. Discount codes. No customer, line-item or fulfillment endpoint is called anywhere in our code.

Where this stands today. Your gross margin sets the ROAS a campaign has to clear. Once there are enough measurable returns, that bar is raised by your own return rate rather than by an industry figure. Blended MER joins live Meta spend to Shopify revenue in one number, and it excludes Google Ads spend, which the number says on its face. Merchants can install iNudge from the Shopify App Store; connected stores sync every night.

Google Analytics 4

Controlled beta · full production evidence pending

Why it is here. What the site itself recorded, checked against what an ad platform claims for the same traffic.

Permissions we request:

https://www.googleapis.com/auth/analytics.readonly

Read-only by definition. This permission cannot change anything in your property, and Google shows it to you on its own consent screen before you approve.

What we read

  • Your GA4 account summaries and the property list under them, so you can pick a property
  • Sessions, total users, engaged sessions, key events, ecommerce purchases, purchase revenue and total revenue, by traffic source and medium, day by day
  • The same window rolled up by channel group: paid social, paid search, organic search, direct, email and referral

These are the site's own numbers, not an ad platform's attributed figures, and they will not match what Meta or Google Ads reports for the same traffic. That difference is the reason to read both, not an error in either one. A property GA4 reports no currency for comes back with its revenue named as an unknown unit rather than assumed to be dollars.

What can change: Nothing. There is no write permission and no write path.

What we never touch: Audiences, custom dimensions, user-level or demographic breakdowns, and real-time reports. The seven metrics listed above are the whole set we request, and no audience, demographic or real-time endpoint is called anywhere in our code.

Where this stands today. The connector, nightly sync and two live read tools are implemented, Google approved analytics.readonly, and GA4 is open to the controlled beta. Production evidence is pending: no sanitized connect-and-read pack is complete yet. No audit check reads GA4 and no write path exists.

Google Search Console

Controlled beta · full production evidence pending

Why it is here. What people searched to find your site, and the pages they landed on, read nightly and live in chat.

Permissions we request:

https://www.googleapis.com/auth/webmasters.readonly

This is the read-only variant. It cannot add a site or submit a sitemap even if we wanted it to. Google classes it as non-sensitive, so it needed no verification.

What we read

  • The list of your verified sites, so you can pick one
  • Search queries and the pages they landed on, with clicks and impressions, day by day

What can change: Nothing. There is no write permission and no write path.

What we never touch: Sitemaps, URL inspection, indexing coverage, mobile usability, Core Web Vitals and rich-result status. Only search queries and pages are read.

Where this stands today. The connector, the two spine tables, the nightly sync and two live agent read tools are built and shipped, and Search Console is open to the controlled beta: a connected site is read every night the same way Meta and Google Ads are, and the agent reads its search queries and pages live in chat. The button stayed closed for a week on the belief that webmasters.readonly needed Google's verification; it is a non-sensitive scope and never did. Production evidence is pending: no sanitized connect-and-read pack is complete yet.

Full permission table and security controls

Section 04 · what we have not built

What we have not built, named before you find it.

There is no connector, no login flow, no API client and no agent tool for any of these. Not a beta, and not behind a flag. We write not built rather than planned, because planned is a delivery promise and there is no date behind one.

LinkedIn AdsMicrosoft AdsPinterest AdsSnapchat AdsKlaviyoAmazon Ads

If your money is mostly in one of these, iNudge has little to offer you this month. Tell us which one at support@inudge.ai and it moves up the list.

Two more things worth knowing before you connect

  • Google service businesses have their own audit path. A service workspace runs twelve applicable Google checks for selected lead outcomes, campaign goals, settled spend and privacy-safe call patterns. Ecommerce runs twelve. Qualified-lead deterioration remains unassessed until a tenant-bound CRM series supplies compatible cohorts. Meta messaging campaigns are still excluded from purchase-based profit checks.
  • Team access is deliberately simple. Solo includes one login; Studio, Agency and Scale allow multiple people. A workspace has Owner and Member roles. Members can use the agent, read audits and approve changes for the brands the Owner has given them, while billing, account connections and write access stay with the Owner. There is no read-only role or ownership transfer yet.

Section 05 · why we ask for this much

Why we ask for this much and no more.

01

The audit is why we ask to read.

Google’s catalog contains twenty-one deterministic rules, with twelve selected for ecommerce and twelve for service businesses. Every finding names the rule, entity and number behind it. One initial audit is included per eligible account. Repeat audits, daily monitoring, alerts and AI features require an active trial, plan or eligible Shopify install. Meta's fourteen checks are implemented but Meta remains reviewer-only during app review.

02

The daily watch is why we ask for history.

With an active trial or plan, once a day from 7:00 AM in your brand's own timezone, each eligible connected ad account is read again and compared with its last scheduled run. You are alerted on new or worse findings only, never on the same problem twice.

03

The write permission is the one we cannot narrow.

Meta requires ads_management for the eighteen Meta changes, and Google publishes a single Ads permission that covers reads and writes together. Neither platform offers a read-only alternative, so read-only is a behavior we enforce rather than a permission we request. That is what the two switches above are for. Draft experience publication additionally requires Page content permissions; missing grants block it, and the ordinary connection flow is unchanged.

Section 06 · connecting and disconnecting

Connecting goes through their front door. Leaving takes one click.

  1. You connect through each platform's own login flow. The permission screen you approve comes from Meta, Google or Shopify, and we never see or store a platform password.
  2. Access tokens are encrypted with AES-256-GCM before they reach the database, under a key held in the server environment rather than in the database, and each token is cryptographically bound to the one connection it belongs to.
  3. Writes start off. You arm them on one connection at a time and confirm the dialog. Turning them back off takes one click and no confirmation.
  4. Meta's long-lived login tokens run about 60 days and we do not renew them for you. There is no Meta refresh path in our code and no stored expiry, so the first sign is a read that fails and the fix is to reconnect Meta from Integrations. Google connections hold a refresh token and renew themselves.
  5. Disconnecting deletes the stored credential outright. It is a delete rather than a flag. Metrics already pulled stay, so your history does not develop a hole where the connection used to be.
  6. You can revoke access from Meta, Google or Shopify at any time without touching iNudge, and that ends our access on the spot. If you delete your account, revoke there as well: we do not do it on your behalf.

Data handling, subprocessors and deletion are set out in the privacy policy, and the controls behind all of this are on the security page.

Section 07 · before you connect

Before you connect. The questions people actually ask.

Can iNudge change my campaigns without asking?

No. Write access starts off on every connection. After you enable it, supported fixes still need their own account permission and saved limits; other changes need exact approval. iNudge checks the actual platform result before reporting a change as verified.

What if I connect and never turn writes on?

Read-only use does not require turning writes on. During an active trial or plan, repeat audits, the daily watch, alerts, chat and analysis can run while every platform change remains disabled. Your included first audit also runs before writes are enabled.

What exactly can it change, at most?

Sixty-one operations across four platforms. On Meta Ads: transfer one approved private library PNG or JPEG, up to 10 MiB, or MP4 up to 50 MiB to the selected ad account without changing ads; change exact campaign delivery; change exact ad-set delivery; create one paused campaign, ad set, image/video ad or fixed-order website carousel with 2–10 verified cards; duplicate one object paused without descendants; separately approve activation of one exact verified iNudge-created complete setup; pause or activate a Meta campaign; pause or activate one Meta ad set; pause or activate one Meta ad; set a Meta campaign daily budget; set one ABO Meta ad-set daily budget; move budget between two Meta campaigns or two ABO ad sets; and replace selected CTA, copy, HTTPS destination or URL-tag fields on one standard link/video ad by creating and attaching a replacement creative. Publish one existing manual Instant Experience draft after full-content approval, exact Page authority and pages_show_list, pages_manage_posts and pages_read_user_content grants. The ordinary connection flow does not request the additional publication permissions, so missing grants block it; no ad is created or activated. On Google Ads: pause 2–10 exact enabled campaigns in one atomic batch; end one exact running experiment without promoting treatment changes; read and permanently dismiss one exact Google-native recommendation without applying it; pause or enable a Google campaign; permanently remove one exact already-paused campaign; create or change one Google Ads label relationship; attach, pause, enable or remove one existing Google Ads campaign or ad-group asset relationship; create one advertiser-authored account-level callout; create one detached call asset for a named Search campaign; create one detached Google-hosted lead form; change one existing Performance Max asset group’s name, status, HTTPS destinations or display paths; add or remove one Performance Max search-theme or existing-audience signal; include or exclude one existing non-root Performance Max or Standard Shopping product-group leaf or change one eligible Manual CPC product-group bid; rename one existing Google campaign; change Search Partners; change exact campaign dates or tracking settings; change exact country, region, radius or language targets, demographic exclusions, device modifiers, complete schedules or placement exclusions; set or clear one exact target CPA or target ROAS on an existing eligible standard strategy; set or clear one exact target CPA or target ROAS on an existing eligible portfolio strategy; include or exclude one exact campaign conversion goal or restore account defaults; create one exact secondary website or call conversion action and return Google’s code for installation; replace the complete reviewed text and HTTPS destinations of one paused responsive search ad; set a Google campaign daily budget; change one existing shared daily budget’s amount or name or one eligible campaign total budget; add negative keywords to a Google campaign; remove campaign negatives; add, pause, enable or remove positive keywords in one ad group; pause, enable or rename one Google ad group; pause or enable one exact existing Google ad; permanently remove one already-paused Google ad; change a keyword CPC bid, HTTPS destinations or match type; change Search location-presence mode; create or remove a paused Search ad group, change its Manual CPC bid or manage one existing audience link and mode; and create a Google campaign paused. The final six operations publish the product feed to Merchant Center; create a TikTok campaign paused; pause or enable one TikTok campaign; pause or enable one TikTok ad group; pause or enable one TikTok ad; and change one TikTok ad-group daily budget. Google Ads campaign creation is released in Production for admitted workspaces and creates every object paused. TikTok Ads can create a paused campaign after fresh asset checks and can prepare four existing-object management changes. Both TikTok write switches must be on, and every action requires exact approval, fresh evidence and a verification read. Each of the thirty-two Google action families has its own gate and is released in Production for admitted workspaces; the Google write switch cannot expose an unreleased family. Feed publishing stays off on each connection until its own controls are enabled. Broader bulk changes, experiment creation, experiment scheduling, promotion and graduation, Google’s generic recommendation apply endpoint, arbitrary product-tree construction, Google asset creation other than account-level callouts, detached call assets and detached Google-hosted lead forms, asset editing, audience creation and conversion-action editing remain outside this write surface. That is the complete list, and a test in this codebase fails the build if another operation appears without this page being rewritten.

A change failed halfway. Now what?

A budget move is two steps, and if the second fails the first is put back automatically and the result is shown to you. For a single change that executed but did not verify, the card says so and names the discrepancy. Supported earned-change receipts offer an exact 24-hour undo: you review the previous settings and tap once, with a fresh account check before the restore. Other eligible verified receipts prepare a separate approval. Money already spent cannot be recovered.

Do you read my customers' data from Shopify?

No. We read shop settings, daily sales totals, product count, order counts and order totals. No names, emails, addresses, line items or fulfillment, and no endpoint that would return them is called anywhere in our code.

Do you need my Meta or Google password?

No. Connections run through each platform's official login flow and we store a revocable token, never a credential you typed.

My platform is not here.

Then it is not supported, and there is no beta and no flag that changes that. Nothing on this page is a roadmap. Email us and we will tell you honestly whether it is close.

What does connecting cost?

Connecting Google Ads or TikTok Ads and running the available reporting needs no card. Repeat audits, daily monitoring, alerts and AI features require an active trial, plan or eligible Shopify install. Platform writes stay off until the account owner arms the exact connection. Meta Ads is reviewer-only while app review completes.

Controlled beta

See what your Google Ads account is doing.

Sign up with one active Google Ads account. One initial deterministic audit is included before you choose a plan.

No card for the included audit. Supported fixes need your account permission and saved limits; other changes need exact approval.

Receipts

  1. The permission strings on this page are the literal values our code sends. The platform's own consent screen is what actually grants them, and it shows you the set before you approve.
  2. Write access is stored per connection and starts off. While it is off, the change tools are left out of the request sent to the model, so the agent is never handed them.
  3. A proposal older than 24 hours is refused and has to be asked for again, because the numbers on the card describe a moment that has passed.
  4. Every approved change is executed once and then verified by re-reading the platform in the same request. Success is defined by the platform's own value, never by the platform's response.
  5. Shopify revenue for a window is summed from the orders themselves and carries its sample size. Orders are paged through 100 rows at a time up to a budget of 50 pages, and a window that runs past it is returned as incomplete rather than as a total.
  6. Platforms marked not built have no connector, no login flow, no API client and no agent tool anywhere in the product.
  7. Tokens are encrypted with AES-256-GCM under a key held outside the database, and the row holding one is deleted when you disconnect.
  8. Meta login tokens last about 60 days and we do not renew them. Nothing in our code stores their expiry, so the first sign is a read that fails.