Actions and limits
The changes Meerkats can make in your tools, and the limits on each.
An action is a change Meerkats makes in a connected tool. This page lists every one, with the limit that applies, the risk class, how the change is verified, and how it is undone. It is the registry the automation engine enforces: an action that isn’t listed here cannot run, and a plan that asks for one is refused when it is staged, not when it runs.
In every connected tool, Meerkats can create, read, update and delete records, within the permissions you grant and the permissions the tool allows. The actions below are how that shows up in automations. Each connector page lists the ones that apply to it.
How every action is governed#
- Approval first. Every action except notifications and tasks starts as a proposal in your Inbox. It runs when a person approves it, or on its own if you allowed that rule and action type to run alone.
- Caps always apply. Whether approved by a person or run alone, a budget cut is at most 20%, a budget rise at most 50% a week, a bid change at most 15%. A plan asking for more is clamped and says so.
- Before state is real. Every proposal carries the target’s current values, fetched in that run, never from cache.
- Live re-check. Immediately before applying, Meerkats re-reads the target. If anything moved since the proposal, it stops and re-proposes.
- Read back and verify. After the write, the object is read back and compared with the plan. A difference stops the plan and is reported verbatim.
- Rollback is stored. Every action records the value it replaced, so it can be undone from Agents run history.
- Never on a protected entity. Entities marked protected in the goal frame are never changed automatically, whatever the mode.
The action registry#
| Action | Target | Limit | Risk |
|---|---|---|---|
| Reduce budget | Campaign | At most 20% per change | Low |
| Increase budget | Campaign | At most 50% per week per campaign | Medium |
| Pause | Campaign, ad set, ad, keyword, product | Spend with zero conversions must be older than 3 days | Medium |
| Enable | Campaign, ad set, ad, keyword | Only something Meerkats or you paused | Medium |
| Lower bid | Keyword, campaign | At most 15% per change | Low |
| Add negative keyword | Search term | — | Low |
| Change bidding strategy or target | Campaign | 14 days since the last bidding change; a target CPA is never set below the trailing CPA | Medium |
| Restock alert | Product | — | None |
| Send alert or report | A person or channel | — | None |
| Create a task | A person | — | None |
Verification, rollback and expected effect#
| Action | Verified by | Undone by | Expected effect | Typical cause |
|---|---|---|---|---|
| Reduce budget | Read the budget back | Restore the previous budget | Spend down, ROAS up | Pricier clicks, spend spike |
| Increase budget | Read the budget back | Restore the previous budget | Revenue up, ROAS held or better | A winner capped by budget |
| Pause | Read the status back | Reactivate | Spend down, revenue flat | Zero-conversion burn past the attribution lag; out of stock |
| Enable | Read the status back | Pause | Spend resumes | Stock back; condition cleared |
| Lower bid | Read the bid back | Restore the previous bid | CPC down | Bid pressure |
| Add negative keyword | Read the negative list back | Remove the negative | Wasted spend down | Junk queries |
| Change bidding strategy or target | Read the strategy back | Restore the previous strategy | Depends on the strategy | Learning complete; wrong target |
| Restock alert | Not needed | Not needed | Conversion recovers after restock | Stockout. A notification, not a platform change |
| Send alert or report | Not needed | Not needed | — | Any rule |
| Create a task | Not needed | Not needed | — | Price, stock, listing or tracking work that belongs to someone else |
The expected effect is what the watch checks after the action runs: a budget cut should lower spend and raise ROAS over the next window. If it doesn’t, the watch marks the outcome diverged and starts an investigation.
Creating things#
Creation is a different kind of action. Everything Meerkats creates is born paused, each step is verified against the approved plan before the next, and switching the new object on is its own high-risk action with a second confirmation.
| Action | Risk | Verification |
|---|---|---|
| Create a campaign | Medium. Created paused. | Every field read back and compared with the approved plan; the created object is deleted on failure |
| Create an ad set or ad group | Medium. Created paused. | Optimisation goal, audience, budget and attribution read back |
| Create an ad | Medium. Created paused. | Creative reference read back and a preview attached to the plan |
| Activate what was created | High. A second confirmation after the read-back shows no difference. | Status read back; rollback is pause |
A multi-object plan (a campaign with its ad sets and ads) is a transaction. If any step fails, everything the plan created is removed, and the report names the exact step and the platform’s own error. Preconditions, for example that the product is in stock and the landing page resolves, are re-checked live at execution time, not only at planning time.
Risk classes#
| Class | What's in it | What it takes to run |
|---|---|---|
| None | Notifications, reports, tasks for a person. No platform write. | Runs on its own once a rule says so |
| Low | Reversible tuning inside the caps: lower a bid, lower a budget, add a negative keyword | Proposed by default; can be allowed to run alone per rule and action type |
| Medium | Raise a budget, pause or enable, change bidding, create objects (paused) | Always proposed for approval |
| High | Activate a created object, move budget across platforms, touch a protected entity | Proposed, plus a second confirmation |
The class decides the friction. The size of the predicted return never lowers it.
What is never automated#
- Prices, stock and listing content. A price change on Shopify, Amazon or Flipkart is staged as a task for the person who owns the listing, with the margin impact shown. An ad rule never changes a price.
- Outbound to customers. Nothing is sent to a customer, a lead or a buyer without a person approving that specific message.
- Protected entities. Anything you mark protected in the goal frame.
- During a learning phase. Edits to an object in a platform learning phase are frozen; the freeze and its end date are shown.
- Expired approvals. An approval past its expiry is re-validated and re-staged, never executed as-is.
Where a platform has no write access yet
The plan becomes a guided checklist: the exact changes with before and after values, which you make in the platform and tick off. The watch attaches the same way, so the outcome is still measured.Actions by connector#
| Connector | What Meerkats can change |
|---|---|
| Meta Ads | Pause or enable a campaign, ad set or ad; Lower a budget; Raise a budget; Change a bid or bid cap; Create a campaign, ad set or ad; Create or update a custom audience |
| Google Ads | Pause or enable a campaign, ad group, ad or keyword; Lower a campaign budget; Raise a campaign budget; Change a keyword bid or a bid-strategy target; Add a negative keyword; Add keywords, ads or ad groups; Create a campaign |
| Amazon Ads | Pause or enable a campaign, ad group, keyword or target; Lower a budget or bid; Raise a budget; Add negative keywords or targets; Create a campaign, ad group, keywords or targets; Price or stock changes |
| TikTok Ads | Pause or enable a campaign, ad group or ad; Lower a budget; Raise a budget; Change a bid; Create a campaign or ad group |
| Walmart Connect | Pause or enable a campaign, ad group or keyword; Change a budget or bid; Add keywords or items to a campaign |
| Microsoft Advertising | Pause or enable a campaign, ad group, ad or keyword; Change a budget or bid; Add negative keywords |
| Shopify | Create a product, variant or collection (for example a bundle); Change a price or compare-at price; Create or end a discount; Adjust stock at a location; Fix tracking (pixel or UTM setup) |
| Flipkart | Pause or enable a campaign or FSN; Change a campaign budget; Add or change keywords and bids; Create a PLA or PCA campaign; Price, stock or listing content |
| Blinkit | Pause or enable a campaign; Change a campaign budget or bid; Replenishment or listing changes |
| Zepto | Pause or enable a campaign; Change a campaign budget or bid |
| Swiggy Instamart | Pause or enable a campaign; Change a campaign budget |
| Razorpay | Create a payment link; Issue a refund |
| HubSpot | Update a contact, company or deal property; Move a deal to another stage; Create a contact, company or deal; Log a note or create a task on a record; Add a contact to a list |
| Salesforce | Update a field on a lead, account, contact or opportunity; Change an opportunity stage; Create a lead, contact or opportunity; Create a task or log an activity; Add a lead or contact to a campaign |
| Apollo | Enrich a contact or company; Create or update a contact or account; Add a contact to a sequence |
| Slack | Send an alert or report to a channel or person; Post an approval request with Approve and Reject buttons; Reply in a thread |
| Gmail | Send a report or alert to you or your team; Create a draft reply; Apply a label |
| Documents | Create or replace a document from an agent's output (for example a weekly summary); Delete a document |
| Google Analytics 4 | Create an audience in GA4; Create a custom dimension or key event |
| Data warehouse | Write a result table (for example daily corrected ROAS by campaign); Update rows in your tables |
| Competitor tracking | Add or remove a tracked competitor; Change the crawl schedule; Your own price or listing changes |
| Inventory | Pause ads on an out-of-stock product; Create a restock task; Adjust Shopify stock |
| Any other system | Create, update, enable, disable or delete a rule; Approve or reject a proposal; Run an agent now |