π Strategy guide β how each option behaves (read once, then collapse)
Core concepts
Buy Box (BB) β Walmart picks one seller per product to be the "default" offer on the product page. That seller gets nearly all the sales. Our repricer's job is to either win the BB or extract more margin while we already own it.
min_price / max_price β Hard guardrails. The repricer will never price below min or above max, no matter what the strategy decides. These are your safety net.
tick_interval_seconds β How often this policy is re-evaluated. Default 1800 (30 min). Walmart's own repricer cycles every 4β6 hours, so going under 900s (15 min) wastes API calls without faster results.
DRY / LIVE β In DRY mode the engine computes a decision and logs it but does not push the new price to Walmart. Always start a new SKU in DRY, watch decisions for 1β2 days, then flip to LIVE once you trust it.
Strategies
probe_up β Recommended default.
When you own the BB β push price up by probe_step each tick
(clamped to max_price). When a competitor takes the BB β undercut them by
beat_by. When no competitor at all and
raise_when_alone=true β jump to max.
Best for: maximizing margin while keeping the Buy Box. The engine
keeps probing higher until you lose BB, then defends.
beat_buybox β Aggressive defender.
If a competitor owns the BB β undercut them by beat_by.
If you already own the BB at or below their price β do nothing (no self-undercut spiral).
Best for: SKUs where you want to lock the BB at the lowest defensible
price. No upward exploration β price will trend down over time.
match_buybox β Match exactly.
Set our price = BB price. If you already own the BB at or below it β do nothing.
Best for: keeping pace with the BB without racing to the bottom.
You'll tie for BB rotation rather than win it outright.
hold_at_max β Freeze.
Always price at max_price. Ignores all competition.
Best for: brand items where you don't want to price-compete,
testing, or temporarily freezing a SKU's price.
walmart_native β Defer to Walmart's "Buy Box Price" strategy.
Our engine does not push prices for this SKU. Instead, when you save the policy
we send a REPRICER_ELIGIBILITY feed to Walmart binding the SKU to Walmart's own Buy
Box Price strategy with your min/max as guardrails. Walmart then manages the price
within those bounds.
Best for: leveraging Walmart's internal optimizations (which
sometimes see competitor data the API doesn't expose). Note: dry_run
has no meaning here β Walmart pushes regardless. Walmart's first cycle takes 24β48h.
Field reference
beat_by β Used by beat_buybox and probe_up. How much to undercut a competitor's BB. $0.01 = beat by 1 cent.
probe_step β Used by probe_up only. How much to nudge price up per tick when we already own BB. $0.10 = try 10 cents higher each cycle. Bigger steps = faster margin discovery but rougher BB loss recovery.
raise_when_alone β When TRUE and there's no competitor visible at all, jump straight to max_price (free money). When FALSE, keep current price. Set FALSE if you suspect the API hides competitors and don't want to overshoot.
enabled β Master on/off. Disabled policies are kept for history but never tick.
Reading the decisions table
reason values you'll see: probe_up (pushed up because BB ours), beat_buybox (undercut competitor), match_buybox, no_change (already at target), no_competitor_raise (alone, jumped to max), clamped_max / clamped_min (would have gone past bound, capped instead), disabled, walmart_native.
push column: success (price actually updated on Walmart), failed (push attempt errored β see push_response), skipped (DRY mode β would have pushed), unchanged (decision was no_change).