If you can't find your question below, write to admin@adsplane.com or use the in-app Support page (footer of any dashboard screen). A human reads every message and replies within one business day.
General
What AdsPlane is, who builds it, and why a deterministic engine matters.
What does AdsPlane actually do?
AdsPlane pulls your Amazon Ads inventory + performance reports, runs a deterministic decision engine over them, and produces a per-campaign manifest of recommended actions — bid changes, budget moves, pauses, negative keywords, search-term expansions, and 4-hour intraday adjustments. Every recommendation has a written rationale you can trace back to the rule that produced it.
You review and approve manifests; AdsPlane executes the approved actions back to Amazon, then reconciles the result against what you asked for.
How is AdsPlane different from a rule-based bid manager?
Bid managers fire rules per keyword in isolation. AdsPlane classifies the whole account first — funding tier, role, lane, intent tier per keyword — and then makes decisions inside that classification. The same keyword can earn a +12% bid in a PROFIT_ENGINE campaign or a 0% nudge in a TEST_DEFEND, because the classification it sits inside is different.
The engine is also deterministic: given the same inputs (reports + guardrails + economics), AdsPlane produces the same output. No randomness, no learning loop you can't inspect.
Who builds AdsPlane?
AdsPlane is built by Infinite Path Ventures (GSTIN 27AAMPW7123Q1ZQ) in Navi Mumbai, India. The decision engine ports a production-validated build that has been running live on real Amazon Ads accounts for over a year.
Does AdsPlane use AI to make ad changes?
No. Core decisions — bid changes, budget changes, pauses, negatives — are made by deterministic rules with explicit guardrails. AI is only used (where enabled) for narration and natural-language summaries on top of the decision output, never for the decision itself. See our Privacy Policy section on AI for the full statement.
Onboarding wizard
The seven-step setup flow you see after signing up.
What are the seven onboarding steps?
- Connect Amazon — single-click OAuth via AdsPlane's approved Amazon Ads Partner app; pick your primary advertising profile.
- Bootstrap pull — first-run fetch of campaigns, ad groups, keywords, targets, product ads, and recent performance reports.
- Allowlist — pick up to 100 campaigns AdsPlane should optimise (T2 cap; T3+ unlimited).
- Economics & uploads — five inputs: per-ASIN economics, campaign→ASIN map, SQR, Rally history seed, and the keyword Harvest map.
- Guardrail policy — set the rules the engine optimises within (seven tabs of editable levers).
- Telegram setup — link a Telegram bot + chat so alerts and approvals arrive there.
- You're set up — a quick orientation card on what happens next.
Do I have to complete every step before AdsPlane works?
Steps 1 and 2 (Connect Amazon + Bootstrap) are mandatory — without them there's no data to analyse. Steps 3-6 are all editable later from the sidebar, so you can skip ahead and come back. Telegram and several economics inputs are optional — the engine runs with sensible defaults if you skip them.
What if I close the browser mid-onboarding?
Your progress is persisted server-side after each step. Sign in again and you'll land on the step you were on. Bootstrap runs server-side too, so you can close the page while it's pulling and it'll still finish.
Connecting Amazon
How AdsPlane talks to your Amazon Ads account and what permissions it asks for.
Is the Amazon OAuth flow safe?
Yes. AdsPlane uses Amazon's official OAuth authorization through our approved Amazon Ads Partner app. You sign in to Amazon directly — AdsPlane never sees your password — and Amazon hands back a refresh token. That refresh token is encrypted at rest (Fernet) before being stored in your tenant row.
You can disconnect at any time via Settings → Amazon or by revoking the AdsPlane integration inside Amazon Seller Central → Apps & Services → Manage Your Apps.
Which Amazon Ads scopes does AdsPlane request?
Only the scopes needed to pull reports and (when you approve a manifest) write campaign-level changes back: advertising::campaign_management for read + manage scope on Sponsored Products, Brands, and Display. AdsPlane does not request scopes for retail data, Brand Analytics, AMC, or any non-advertising Seller Central data.
Can I switch the connected Amazon account or profile later?
Yes. Settings → Amazon → Disconnect drops the saved refresh token; reconnecting fires the same Step 1 OAuth flow with a fresh authorization, after which you re-select the primary advertising profile. Switching the profile re-anchors all subsequent bootstraps, allowlists, and manifests to the new profile.
Why do I have to select a primary profile?
A single Amazon Ads account can hold multiple advertising profiles — different marketplaces (IN, US, UK), agency accounts on your behalf, or different brands. AdsPlane works one profile at a time so reports, allowlists, and economics don't accidentally bleed across them. T3+ plans will support multi-profile workspaces; T2 ships single-profile only.
Bootstrap pull
The one-time first-run sync that loads your campaigns and recent performance.
What does Bootstrap pull?
Sixteen stages running back-to-back, covering inventory (campaigns, ad groups, keywords, targets, product ads) and performance reports (search-term reports, product-ad reports, placements) for Sponsored Products, Sponsored Brands, and Sponsored Display. State-only stages pull all enabled and paused entities; performance reports pull either 30 or 31 days of trailing data (Amazon's hard limit on each report bucket).
How long does Bootstrap take?
Typical accounts complete in 8-15 minutes. Larger accounts (5,000+ keywords or 30+ campaigns) can take up to 30 minutes, mostly waiting on Amazon's report-generation queue, not on AdsPlane. The dashboard shows per-stage progress so you can see where you are.
What happens if a stage fails?
AdsPlane auto-continues to the next stage and marks the failed one. The bootstrap completes with the failed stage flagged so you can retry just that stage from the same page. The two exceptions are auth errors (401/403) which break the whole run — since the same token would fail every subsequent stage — and explicit user cancellation.
Why are some windows 30 days and others 31?
Amazon's v3 reporting API enforces a hard ceiling per report type: product-ads reports allow up to 31 days, search-term reports allow up to 30. AdsPlane requests the maximum each bucket supports. Daily catch-up pulls fill the window forward in time from the bootstrap point.
Allowlist (Step 3)
Which campaigns AdsPlane actively manages.
What's the campaign cap?
Hosted Starter (T2) — 100 campaigns. Hosted Growth (T3) and Hosted Pro (T4) — unlimited. The cap is enforced server-side; the UI shows your remaining slot count and prevents over-selection.
Can I add or remove campaigns after onboarding?
Yes. Re-enter Step 3 from the sidebar at any time. Changes apply to the next analysis run; in-flight manifests aren't retroactively re-scoped. There's a soft-lock once executions have started: removing a campaign with applied changes flags it for reconciliation rather than silently dropping it.
What happens to campaigns I don't allowlist?
They stay completely untouched by AdsPlane — no analysis, no manifests, no changes. They still appear in your Amazon account exactly as you left them. You can use AdsPlane on a subset of campaigns and continue managing the rest manually or with other tools.
I have 500 campaigns and only see 100 listed — why?
The picker only shows campaigns the Bootstrap pull saw (enabled + paused, excluding archived). If something looks missing, re-run the campaigns sync stage from the Bootstrap page. If your account has more than 1,000 active campaigns, the picker paginates — use the search box to find specific ones.
Economics & uploads (Step 4)
Five inputs that make the engine's recommendations economy-aware: ASIN economics, campaign→ASIN map, SQR, Rally history, and Harvest map.
Why do I need to upload per-ASIN economics?
Without per-ASIN unit cost, sale price, and target margin, AdsPlane can't tell whether a campaign's spend is profitable — only whether ACOS is high or low in absolute terms. With economics, every recommendation is checked against the campaign's actual breakeven ACOS instead of a global default, and campaigns get correctly classified into CORE_SCALE_HERO, SECONDARY_SCALE, or QUARANTINE funding tiers.
Without economics, campaigns default to QUARANTINE (the conservative tier) which limits the engine's ability to push for growth.
What is the Campaign → ASIN map for?
It tells AdsPlane which ASIN a campaign is "really about". Most campaigns advertise one focus product even when their product-ad list has many. The map links the campaign to that focus ASIN, which is what the engine uses to look up economics and to score the campaign's importance. Without the map, AdsPlane infers from the product-ads list but accuracy drops sharply when campaigns have mixed ASINs.
What is SQR and why does AdsPlane want it?
SQR (Search Query Performance) is Amazon Brand Analytics' search-term report. It gives query-level metrics — impressions, clicks, cart adds, purchases — that don't appear in the standard advertising reports. AdsPlane uses SQR to detect medium-intent keywords (Tier 3) which need cart-adds evidence, not just clicks.
SQR is optional. Without it, the engine falls back to a click-only intent classifier (Tier 3 is suppressed). Upload SQR when you have it; everything else still works without it.
What's the Rally history seed?
Rally-Control needs to know each keyword/target's lifetime performance (RALLY / KEEP / TEST / NEGATIVE / IGNORE) before it fires intraday actions on it. The seed lets you bring in pre-AdsPlane classifications you've already validated, or override classifications that the bootstrap is too pessimistic about.
If you skip the upload, AdsPlane autopopulates from the bootstrap data using the same M8 weekly-refresh logic that Rally-Control will use on an ongoing basis.
What's the Keyword Harvest map?
It tells AdsPlane "when I harvest a search-term, where does it go?" — i.e. given a converting search-term in campaign A, which campaign B + ad-group should the new keyword land in. Without the map, AdsPlane can identify harvest candidates but can't add them automatically; the recommendation says "add 'kw' to somewhere" instead of "add 'kw' to this exact ad group".
Guardrail policy (Step 5 & Settings → Guardrails)
The rules the engine optimises within — bid caps, action ceilings, protected items, decision-quality floors.
What does the Guardrail policy actually control?
Three things, in resolution order:
- Hardcoded fallback — base values shipped in code (e.g.
min_confidence_score = 0.70, default decrease cap 15%). - Tier defaults — values shipped per plan (T2 / T3 / T4) by Infinite Path Ventures.
- Your overrides — anything you change in the 7-tab editor.
Every action runs through this stack plus a manifest validator that adds paused-campaign blocks, paused-keyword blocks, EXACT-never-negate, recent-converter pause skip, confidence floor, and per-campaign action caps.
What are the seven tabs?
- Aggressiveness — 24-input table: increase / decrease ceilings + bid floor / bid ceiling per behaviour class.
- Spend protection — daily / weekly tenant caps + per-campaign caps.
- Protected items — keyword terms, campaigns, and ASINs that the engine never touches; brand-defence flags; newly-launched grace window.
- Decision quality —
min_confidence_scorefloor (range 0.50-0.90). - Auto-approval — opt-in toggle that lets eligible actions skip the manual approve step. Confidence floor + per-action-type allowlist + per-run / per-campaign caps are all editable.
- Search-term mining — matching dial, inclusion thresholds, negation thresholds.
- Impression protection — zero-impression starve protection + dormant-keyword reactivation window.
Which fields can I actually edit?
On T2 Hosted Starter, 32 leaf paths are editable across the seven tabs. Numeric paths are clamped to safe min/max ranges (e.g. bid increase ceilings 0-50%, confidence score 0.50-0.90). T3 / T4 unlock additional paths. Anything not in the allowlist for your tier is rejected at save time with a clear error.
Are guardrail changes audited?
Yes. Every save inserts a row in guardrail_policy_versions capturing the full sanitized payload, the previous version, the list of leaf paths that changed, the user who made the change, and the source (wizard vs. settings page). The "Recent changes" strip on the Settings → Guardrails page surfaces the last five versions; the full history is available to admins.
Rally-Control (intraday bid engine)
A 4-hour intraday loop that nudges bids on real-time performance signals — separate from the daily manifest.
What is Rally-Control?
Rally-Control is an intraday engine that runs every 4 hours and tunes bids based on same-day performance. Where the daily manifest looks at trailing 30 days, Rally looks at "today so far" — it RALLies a converting keyword that's only spent 20% of budget, KEEPs a stable one, BLEEDs a leaky one, and CUTs an outright failure. Targets stay within tight bid floor / ceiling guardrails throughout.
When does it run?
By default every 4 hours. Tier-locked runs/day caps: T2 = 2 runs/day, T3 = 4, T4 = 6. Time caps (configurable, IST hour-of-day) suppress late-day RALLY/KEEP and prevent CUTs from firing before the second half of the day — protecting hero campaigns that earn most of their conversions later.
Rally-Control is opt-in per tenant — flip the master switch on the policy page when you're ready. The policy page is editable before activation so your config is ready on day one.
What are the five Rally-Control tabs?
- Schedule & Eligibility — run interval, eligible ad-types / roles / lanes, time caps, per-role campaign impression thresholds.
- RALLY & KEEP — bid-increase % per match type, RALLY gates, KEEP block, daily caps.
- BLEED & CUT — BLEED (5 levers) + CUT (7 levers including the
min_ist_hoursafety guard). - Guardrails & Intraday — bid floor / ceiling, campaign-budget block, BLEEDING / CUT_SIGNAL / STARVED intraday state thresholds.
- Classification Gates — RALLY / KEEP / TEST promotion thresholds + DEMOTION hysteresis gates + SB-specific variants (SB_RALLY, SB_KEEP, SB_TEST).
How is Rally different from the daily manifest?
Daily manifest = trailing 30-day signal, larger bid moves (up to 30-50%), reviewed and approved by you. Rally = today's signal, smaller bid moves (4-15%), runs automatically inside guardrails. They share guardrail data (bid floor / ceiling, daily total cap) but are otherwise independent engines.
Telegram alerts
Per-tenant bot routing for manifests, executions, and Rally-Control summaries.
How do I set up Telegram alerts?
Three steps:
- On Telegram, message @BotFather, run
/newbot, give the bot a name + handle. Save the token BotFather hands back. - Message your new bot once (any message). Visit
https://api.telegram.org/bot<TOKEN>/getUpdatesand copychat.id. Or message @userinfobot for the same value. - Paste both into the Telegram page on AdsPlane, pick which alert categories you want, save, hit "Send test alert".
Is the bot token encrypted?
Yes. The token is Fernet-encrypted at rest using the same key family as your Amazon OAuth refresh token. It's never returned by the API — the GET endpoint sends back a redacted sentinel plus a "token configured" boolean. To rotate, paste a new token and save; leaving the field blank keeps the existing token unchanged.
What can I get alerts for?
- Manifest ready — a new manifest is available for approval.
- Manifest applied — post-apply summary with accepted / blocked counts.
- Execution drift — drift, errors, or pending reconciliations.
- Bootstrap complete — first-run bootstrap finished.
- Rally-Control summary — per-run summary of intraday RALLY / KEEP / BLEED / CUT counts.
You can enable any subset. Each category fires automatically once you opt in.
Account & Settings
Things you can edit about your workspace after onboarding.
What can I edit under Settings → Account?
Today: your workspace name (the human-readable label that appears in headers, exports, and Telegram messages). Read-only context shown alongside: plan + tier key, status, workspace created date, your email, your role, and membership status. Display name, time zone, and password reset land in a later phase.
Who can change which settings?
- Owner / Admin — everything, including account name, billing, and tenant-level config.
- Operator — guardrails, Rally policy, Telegram routing, allowlist, economics uploads. Cannot edit account name or billing.
- Viewer — read-only across all surfaces.
Role changes are owner-only and land in a later phase. T2 ships single-user workspaces by default.
Billing & plans
Subscription, invoices, and changing plans.
What plans does AdsPlane offer?
- Free Local Lite — laptop-side, preview-only. Pulls reports + runs analysis, but no live execution.
- Hosted Starter (T2) — full hosted workflow: bootstrap, manifests, execution, reconciliation, Telegram alerts. 100-campaign allowlist cap. 2 Rally runs/day.
- Hosted Growth (T3) — unlimited campaigns, 4 Rally runs/day, multi-profile workspace (Phase M).
- Hosted Pro (T4) — Hosted Growth plus 6 Rally runs/day, Placement Optimization, priority support.
See the pricing section for current pricing and feature comparisons.
How do I upgrade or downgrade?
Upgrades take effect immediately via Razorpay subscription change. Downgrades take effect at the end of the current billing cycle so you don't lose features mid-month. Email admin@adsplane.com for plan changes that involve refunds or proration outside the standard flow.
Where do I find invoices?
The Billing page in the sidebar shows your current plan, next renewal date, and the last 12 invoices. Razorpay also emails an invoice receipt for every successful payment. For GST-formatted invoices or duplicate copies, email admin@adsplane.com with the transaction reference.
What's the refund policy?
If you cancel within 7 days of a fresh subscription start and haven't generated any manifests, we refund in full. After 7 days, refunds are prorated to the next billing cycle. Full details in our Terms of Service.
Security & data
Where your data lives, how it's protected, and how to get it deleted.
Where is my data stored?
Hosted AdsPlane (T2+) stores data in Supabase Postgres with row-level security: every row is FK-bound to your tenant ID and access is gated by membership checks. Encrypted credentials (Amazon refresh token, Telegram bot token) use Fernet at the application layer in addition to the database's at-rest encryption.
Free Local Lite stores data on your laptop under %LOCALAPPDATA%\AdsPlane\connector. The hosted engine processes each bundle in memory and stores only the result + audit metadata; raw report data is discarded after analysis.
How are credentials encrypted?
All credentials (Amazon OAuth refresh tokens, Telegram bot tokens, encrypted service credentials) are encrypted with Fernet (symmetric AES-128-CBC + HMAC-SHA256) using a 32-byte key held in the platform's environment, never in the database. Plaintext credentials only exist in memory during the second the engine needs them; the GET API never returns them.
How do I delete my data?
Email privacy@adsplane.com from your registered AdsPlane address with "Delete my data" in the subject. We confirm your identity, disconnect Amazon and Telegram, then erase personal data and tenant config within 30 days. Some logs (security, audit, billing/tax) are retained as required by Indian law — see our Privacy Policy section 14.
How decisions are made
The deterministic rules behind each kind of recommendation. Useful when a manifest looks surprising.
How does the engine decide a bid change?
Each SP keyword is classified into one of five evidence tiers, in priority order:
- Tier 1 — ads-confirmed (confidence 0.88) — keyword converted in the bundle window. Bid moves up to the classifier-aware cap.
- Tier 2 — high-intent (0.82) — purchase rate ≥ 5% AND clicks ≥ 25 AND at least one purchase.
- Tier 3 — medium-intent (0.72) — between 1 and 3 purchases (requires SQR for cart-adds signal).
- Tier 4 — discovery nudge (0.72) — restricted to CORE_SCALE_HERO with ≥ 15 clicks and ≥ ₹200 spend.
- Tier 5 — zero-spend nudge (0.72) — only fires for CORE_SCALE_HERO campaigns to wake up sleepy keywords.
SB keyword bid changes follow the same tier flow, with ASSIST_ENGINE bid bands scaled to 0.6× the SP/PROFIT equivalent. SD target bid changes are uniform per parent campaign because Amazon's API has no per-target SD performance report — and are skipped entirely on AMAZON_OPTIMIZED parents.
How does the engine decide a budget change?
Budget INCREASE recommendations fire only when a campaign passes all six gates:
- Campaign is in a growth lane (SCALE_PROFITABLY, FEED_EXACT, SUPPORT_HERO_FLOW, DEFEND_FULL, TEST_CONTINUE).
- Funding tier is mapped (not QUARANTINE).
- ACOS sits at or below the growth-cap (with breakeven as fallback).
- Capital priority score ≥ 40.
- Budget lane is ACCELERATE, SCALE_SELECTIVE, or HOLD.
- Daily-spend utilization ≥ 85%, OR utilization unknown and capital priority score ≥ 75 (the score-fallback path).
Budget DECREASE fires for TRIM_TO_PROFIT / CONTAIN_DISCOVERY / ASSIST_CONTAIN labels in CONTAIN or MINIMUM_ONLY lanes with HIGH or BLEED ACOS bucket — pulling daily budget back so further damage is limited.
How does the engine decide a pause?
Campaign pauses are quarantined into a separate manifest envelope so you can approve them independently from bid/budget moves. A campaign is queued for pause review when:
- Its action label is CUT_WASTE / STOP_DISCOVERY / ASSIST_CUT / TEST_STOP.
- Zero orders in the bundle window.
- Spend ≥ ₹200 (configurable via Spend Protection tab).
- Role is not DEFENSE_ENGINE (brand-protection campaigns never pause on metrics alone).
- Not recently_converted (a 7-day-window order is real evidence; we never pause on top of that).
Keyword pauses run a similar gate plus the no_pause_if_converted_within_days lookback (default 14) and the ₹200 keyword spend floor.
What is "capital priority"?
A 0-100 score that ranks campaigns by how much they should consume your incremental ad spend. Computed from six axes: product economics (30%), revenue importance (20%), campaign role (20%), efficiency momentum (20%), structural confidence (10%), and AMC assist validity (0%, neutralized in T2 until path-to-conversion data lands).
The recommendations panel sorts by capital priority so the top of the list is always the highest-leverage moves; the per-campaign action cap fills with the highest-priority actions first when it's hit.
What's the difference between "blocked" and "rejected"?
Blocked means a candidate action emerged from the classifier but failed a guardrail check (e.g. confidence below floor, recently converted, exceeds bid cap). Blocked actions show up in the Recommendations panel grayed-out with a rationale explaining which guardrail caught them — useful for understanding what the engine wanted to do but chose not to.
Rejected in the post-execution sense (after a live change actually fails to apply at Amazon) appears in the Execution Ledger with the Amazon-API error code. Free Local Lite has no execution layer; everything you see "rejected"-style there is actually the manifest validator's blocked list.
Why are some campaigns marked "NEEDS REVIEW"?
That's the QUARANTINE funding tier. Without ASIN economics (margin / breakeven ACOS), the engine can't tell whether spend on a campaign is profitable. Upload per-ASIN economics in Step 4 to get more accurate CORE_SCALE_HERO / SECONDARY_SCALE classification.
Troubleshooting
When something doesn't look right.
I see "Telegram settings lookup failed" / similar lookup error.
Usually means a database migration hasn't been applied yet — the error now includes the upstream PostgREST status code and body so you can tell. If you self-host, run the latest migration in Supabase and notify the schema cache: notify pgrst, 'reload schema';. If you're on hosted AdsPlane, email admin@adsplane.com — we'll check the platform side.
The Save button is greyed out on Settings → Account.
You're signed in as an Operator or Viewer. Account name is owner/admin-only by design. Email the workspace owner to make the change, or ask them to upgrade your role.
How do I report a bug or surprising recommendation?
Click the Support link in the dashboard footer — it opens an in-app page with our contact details and a checklist of helpful information to include (timestamp, page, error text if any, your AdsPlane email). Or write directly to admin@adsplane.com. We aim to reply within one business day.
AdsPlane automatically captures unhandled errors with a request ID — including that ID in your email helps us correlate to the exact event.
Question we should add? Email admin@adsplane.com with "FAQ suggestion" in the subject.