Features
Recovers lost impression share for proven high-performers when visibility suddenly drops.
Daily Automation: Change Bid: Set ($) using $target_bid
The blueprint calculates daily impression averages over two time periods (recent 7 days vs. baseline 30 days) and detects percentage drops from baseline. When qualified targets show drops of 40%+ and meet performance criteria (15+ lifetime orders, ACOS within 120% of target, 2+ baseline orders), it applies a 10% bid increase with CPC-based safety limits. A 3-day cooldown prevents over-adjustment while allowing the market to respond to bid changes.
Rather than reacting to single-day impression changes, the algorithm compares daily averages across time periods. Recent period (7 days) captures current state. Baseline period (30 days) represents normal performance. This approach filters out daily noise and identifies sustained traffic loss requiring intervention.
The impression drop ratio is calculated as: (Baseline Daily Avg - Recent Daily Avg) / Baseline Daily Avg. For example, if baseline is 1000 impressions/day and recent is 600/day, the drop ratio is 0.40 (40%). The algorithm only acts when this ratio exceeds your configured threshold, ensuring you're responding to material changes.
Multiple conditions must be met simultaneously: proven performer status (15+ lifetime orders), acceptable baseline performance (ACOS ≤ 120% of target with 2+ orders), sufficient baseline volume (50+ daily impressions), and cooldown clearance (3+ days since last change). This layered approach ensures bid increases only happen for established winners experiencing genuine traffic loss.
The final bid is capped at 2× your 90-day average CPC. If the 10% increase would push your bid above this limit, it gets reduced to the cap. This prevents expensive recovery attempts in markets where competitors have significantly higher bids, protecting you from unprofitable visibility recovery.
The impression drop threshold creates a tradeoff: lower values (25-30%) respond faster to traffic loss but act more frequently, while higher values (50%+) wait for severe drops but act less often. Consider your market dynamics - highly competitive markets benefit from faster response, while stable markets need patience to avoid chasing normal fluctuations.
The 15-order requirement ensures you're only recovering traffic for genuinely proven performers. Lowering this threshold allows faster recovery for newer winners but increases risk of boosting marginally profitable targets. If you lower it below 10 orders, tighten the ACOS threshold (110% vs. 120%) to maintain safety.
The 120% ACOS threshold means a 30% target allows increases up to 36% baseline ACOS. For high-margin products (50%+ profit margins), loosening to 130-140% recovers more volume. For thin-margin products (20-30% profit margins), tighten to 110% to avoid recovering unprofitable traffic. This setting directly impacts which performers qualify for recovery.
The 7-day recent period vs. 30-day baseline balance responsiveness with stability. Shortening recent to 3-5 days responds faster but risks reacting to weekend/weekday patterns. Extending baseline to 60 days smooths seasonal fluctuations but may miss market shifts. Maintain at least a 3:1 ratio (baseline 3× longer than recent) for reliable comparisons.
Bid Increase: Major Drop (75%+) - Severe traffic loss requiring immediate attention. Verify if this is due to competitors, budget constraints in parent campaigns, or Amazon algorithm changes.
Bid Increase: Significant Drop (50-75%) - Substantial traffic loss indicating market shift. Most common scenario for competitive keywords where recovery is warranted.
Bid Increase: Moderate Drop (25-50%) - Meaningful but not extreme. Typical when new competitors enter the auction or your Quality Score decreases slightly.
Bid Increase: CPC Limited - Attempted recovery but capped by 2× CPC limit. Indicates highly competitive auction where full recovery may be unprofitable. Consider whether this target is still worth pursuing.
Major/Significant/Moderate Drop - No Action - Traffic dropped but didn't meet qualification criteria (lifetime orders, ACOS performance, or cooldown). Review $reason to understand blocking factor.
"Insufficient lifetime orders" - Target hasn't proven itself yet. Let it accumulate more conversion history before recovery attempts.
"ACOS too high for increase" - Baseline ACOS exceeds 120% of target. This target may be declining in profitability - consider whether it's worth recovering or should be allowed to phase out naturally.
"Low baseline impression volume" - Less than 50 daily impressions in baseline period. Traffic is too low for reliable drop detection. May indicate dying keyword or very niche target.
"Cooldown active" - Changed within last 3 days. Be patient - Amazon needs time to adjust ad positioning after bid changes.
Best results occur with established winners (20-30+ lifetime orders) showing 50-75% impression drops while maintaining strong ACOS (90-110% of target). These typically indicate competitor bid increases or temporary Quality Score dips where recovery is highly effective.
Targets with 15-20 lifetime orders showing 40-50% drops and 110-120% baseline ACOS. Recovery often works but requires monitoring - if ACOS deteriorates further after increase, the market dynamics may have permanently shifted against this target.
The blueprint intentionally won't act on: targets with inconsistent baseline performance (fewer than 2 orders in 30 days), targets recently adjusted (within 3 days), or targets where the calculated increase would exceed 2× average CPC. These protective measures prevent wasteful spending on declining performers or markets where you can't compete profitably.
With default settings, expect 5-15% of your proven performers to qualify for increases on any given day. If you're seeing higher rates (25%+), your impression drop threshold may be too sensitive. If you're seeing lower rates (<5%), either your proven performers are maintaining visibility well, or your thresholds are too conservative for your competitive market.
/*
=== Core: Impression Recovery Boost ===
Version: 1.0
Docs: merchjar.com/templates?=impression-recovery-boost
Purpose: Increases bids for proven performers when impression volume drops significantly.
Dataset: Keywords & Targets
Recommended: Change Bid: Set ($) using $target_bid | Daily
*/
// === Core Settings ===
let $orders_min_lifetime = 15; // CORE: Minimum lifetime orders to qualify as "proven performer"
let $orders_min_baseline = 2; // CORE: Minimum orders in baseline period for data reliability
let $impression_drop_threshold = 40%; // CORE: Act when impressions drop at least 40% from baseline
let $bid_change_increase = 10%; // CORE: Bid increase amount when conditions are met
// === Strategy Settings ===
let $t_acos_threshold_increase = 120%; // STRATEGY: Only increase if ACOS ≤ (Target ACOS × 120%) [e.g., 30% target = 36% threshold]
let $impressions_min_daily = 50; // STRATEGY: Minimum daily impressions for reliable analysis
// === Time Periods ===
let $period_recent = 7d; // TIME: Recent period for drop detection
let $period_baseline = 30d; // TIME: Baseline comparison period
let $cooldown_period = 3d; // TIME: Wait 3 days after bid change before adjusting again
// === Advanced Settings ===
let $bid_limit_cpc_multiplier = 2.0; // SAFEGUARD: Max bid = Avg CPC × 2.0 [e.g., $0.50 CPC = $1.00 max]
let $bid_limit_cpc_period = 90d; // SAFEGUARD: Period for calculating CPC-based bid limits
// === Segment Filters ===
let $include_campaigns = [""]; // FILTER: Apply to all campaigns, or specify terms like ["SP-", "Auto"]
let $exclude_campaigns = ["NEVER_MATCH"]; // FILTER: Exclude campaigns containing these terms, e.g., ["Brand", "Test"]
// ============================================================================
// === Segment Logic ===
// ============================================================================
// Advanced logic below - modify carefully
// === Impression Analysis ===
let $recent_impressions = impressions($period_recent);
let $baseline_impressions = impressions($period_baseline);
let $recent_days = interval($period_recent) / 86400;
let $baseline_days = interval($period_baseline) / 86400;
let $recent_daily_avg = $recent_impressions / $recent_days;
let $baseline_daily_avg = $baseline_impressions / $baseline_days;
let $impression_drop_ratio = case(
$baseline_daily_avg > 0 => $recent_daily_avg / $baseline_daily_avg,
else 1 // No baseline data = no drop detected
);
let $impression_drop_percent = case(
$baseline_daily_avg > 0 => (($baseline_daily_avg - $recent_daily_avg) / $baseline_daily_avg) * 100,
else 0 // No baseline data = no drop
);
// === Performance Protection ===
let $baseline_orders = orders($period_baseline);
let $baseline_acos = acos($period_baseline);
let $acos_acceptable = case(
target acos > 0 and $baseline_orders >= $orders_min_baseline and $baseline_acos <= (target acos * $t_acos_threshold_increase) => 1,
else 0
);
// === Bid Calculation ===
let $calculated_target_bid = bid * (1 + $bid_change_increase);
// === Dynamic Bid Cap ===
let $avg_cpc = cpc($bid_limit_cpc_period);
let $dynamic_cap = case(
$avg_cpc > 0 => $avg_cpc * $bid_limit_cpc_multiplier,
else 999 // No cap if no CPC history
);
let $target_bid = case(
$calculated_target_bid > $dynamic_cap => $dynamic_cap,
$calculated_target_bid < 0.02 => 0.02,
else $calculated_target_bid
);
// === Cooldown Check ===
let $cooldown_cutoff = now() - interval($cooldown_period);
let $timing_ready = case(
is_null(last bid change) => 1,
last bid change < $cooldown_cutoff => 1,
else 0
);
// === Qualification Logic ===
let $impression_drop_detected = case(
$impression_drop_percent >= ($impression_drop_threshold * 100) => 1,
else 0
);
let $action_needed = case(
target acos <= 0 => 0, // Invalid target
orders(lifetime) < $orders_min_lifetime => 0, // Not proven performer
$baseline_daily_avg < $impressions_min_daily => 0, // Insufficient baseline data
$impression_drop_detected = 0 => 0, // No drop detected
$acos_acceptable = 0 => 0, // Poor baseline performance
$timing_ready = 0 => 0, // Cooldown active
$target_bid <= bid => 0, // No increase calculated
else 1
);
// === Diagnostic Properties ===
let $reason = case(
target acos <= 0 => "No target ACOS set",
orders(lifetime) < $orders_min_lifetime => "Insufficient lifetime orders to qualify as proven performer",
$baseline_daily_avg < $impressions_min_daily => "Baseline impression volume too low for reliable analysis",
$impression_drop_detected = 0 => "No significant impression drop detected",
$acos_acceptable = 0 => "Baseline ACOS exceeds acceptable threshold for bid increase",
$timing_ready = 0 => "Recently changed - cooldown active",
$target_bid <= bid => "No bid increase calculated",
$calculated_target_bid > $dynamic_cap => "Impression drop detected - bid capped by CPC limit",
$action_needed = 1 => "Impression drop detected on proven performer - increasing bid",
else "Stable impression volume"
);
let $result = case(
$action_needed = 1 => case(
$impression_drop_percent >= 75 => "Bid Increase: Major Drop (75%+)",
$impression_drop_percent >= 50 => "Bid Increase: Significant Drop (50-75%)",
$calculated_target_bid > $dynamic_cap => "Bid Increase: CPC Limited",
else "Bid Increase: Moderate Drop"
),
$impression_drop_percent >= 75 => "Major Drop (75%+) - No Action",
$impression_drop_percent >= 50 => "Significant Drop (50-75%) - No Action",
$impression_drop_percent >= 25 => "Moderate Drop (25-50%) - No Action",
$impression_drop_percent > 0 => "Minor Drop (<25%) - No Action",
$impression_drop_percent < 0 => "Impressions Increased - No Action",
else "No Change Detected"
);
// === Final Filter ===
state = "effectively enabled"
and (campaign name contains any $include_campaigns)
and (campaign name does not contain any $exclude_campaigns)
and $action_needed = 1
/*
=== Core: Impression Recovery Boost ===
Version: 1.0
Docs: merchjar.com/templates?=impression-recovery-boost
Purpose: Increases bids for proven performers when impression volume drops significantly.
Dataset: Keywords & Targets
Recommended: Change Bid: Set ($) using $target_bid | Daily
*/
// === Core Settings ===
let $orders_min_lifetime = 15; // CORE: Minimum lifetime orders to qualify as "proven performer"
let $orders_min_baseline = 2; // CORE: Minimum orders in baseline period for data reliability
let $impression_drop_threshold = 40%; // CORE: Act when impressions drop at least 40% from baseline
let $bid_change_increase = 10%; // CORE: Bid increase amount when conditions are met
// === Strategy Settings ===
let $t_acos_threshold_increase = 120%; // STRATEGY: Only increase if ACOS ≤ (Target ACOS × 120%) [e.g., 30% target = 36% threshold]
let $impressions_min_daily = 50; // STRATEGY: Minimum daily impressions for reliable analysis
// === Time Periods ===
let $period_recent = 7d; // TIME: Recent period for drop detection
let $period_baseline = 30d; // TIME: Baseline comparison period
let $cooldown_period = 3d; // TIME: Wait 3 days after bid change before adjusting again
// === Advanced Settings ===
let $bid_limit_cpc_multiplier = 2.0; // SAFEGUARD: Max bid = Avg CPC × 2.0 [e.g., $0.50 CPC = $1.00 max]
let $bid_limit_cpc_period = 90d; // SAFEGUARD: Period for calculating CPC-based bid limits
// === Segment Filters ===
let $include_campaigns = [""]; // FILTER: Apply to all campaigns, or specify terms like ["SP-", "Auto"]
let $exclude_campaigns = ["NEVER_MATCH"]; // FILTER: Exclude campaigns containing these terms, e.g., ["Brand", "Test"]
// ============================================================================
// === Segment Logic ===
// ============================================================================
// Advanced logic below - modify carefully
// === Impression Analysis ===
let $recent_impressions = impressions($period_recent);
let $baseline_impressions = impressions($period_baseline);
let $recent_days = interval($period_recent) / 86400;
let $baseline_days = interval($period_baseline) / 86400;
let $recent_daily_avg = $recent_impressions / $recent_days;
let $baseline_daily_avg = $baseline_impressions / $baseline_days;
let $impression_drop_ratio = case(
$baseline_daily_avg > 0 => $recent_daily_avg / $baseline_daily_avg,
else 1 // No baseline data = no drop detected
);
let $impression_drop_percent = case(
$baseline_daily_avg > 0 => (($baseline_daily_avg - $recent_daily_avg) / $baseline_daily_avg) * 100,
else 0 // No baseline data = no drop
);
// === Performance Protection ===
let $baseline_orders = orders($period_baseline);
let $baseline_acos = acos($period_baseline);
let $acos_acceptable = case(
target acos > 0 and $baseline_orders >= $orders_min_baseline and $baseline_acos <= (target acos * $t_acos_threshold_increase) => 1,
else 0
);
// === Bid Calculation ===
let $calculated_target_bid = bid * (1 + $bid_change_increase);
// === Dynamic Bid Cap ===
let $avg_cpc = cpc($bid_limit_cpc_period);
let $dynamic_cap = case(
$avg_cpc > 0 => $avg_cpc * $bid_limit_cpc_multiplier,
else 999 // No cap if no CPC history
);
let $target_bid = case(
$calculated_target_bid > $dynamic_cap => $dynamic_cap,
$calculated_target_bid < 0.02 => 0.02,
else $calculated_target_bid
);
// === Cooldown Check ===
let $cooldown_cutoff = now() - interval($cooldown_period);
let $timing_ready = case(
is_null(last bid change) => 1,
last bid change < $cooldown_cutoff => 1,
else 0
);
// === Qualification Logic ===
let $impression_drop_detected = case(
$impression_drop_percent >= ($impression_drop_threshold * 100) => 1,
else 0
);
let $action_needed = case(
target acos <= 0 => 0, // Invalid target
orders(lifetime) < $orders_min_lifetime => 0, // Not proven performer
$baseline_daily_avg < $impressions_min_daily => 0, // Insufficient baseline data
$impression_drop_detected = 0 => 0, // No drop detected
$acos_acceptable = 0 => 0, // Poor baseline performance
$timing_ready = 0 => 0, // Cooldown active
$target_bid <= bid => 0, // No increase calculated
else 1
);
// === Diagnostic Properties ===
let $reason = case(
target acos <= 0 => "No target ACOS set",
orders(lifetime) < $orders_min_lifetime => "Insufficient lifetime orders to qualify as proven performer",
$baseline_daily_avg < $impressions_min_daily => "Baseline impression volume too low for reliable analysis",
$impression_drop_detected = 0 => "No significant impression drop detected",
$acos_acceptable = 0 => "Baseline ACOS exceeds acceptable threshold for bid increase",
$timing_ready = 0 => "Recently changed - cooldown active",
$target_bid <= bid => "No bid increase calculated",
$calculated_target_bid > $dynamic_cap => "Impression drop detected - bid capped by CPC limit",
$action_needed = 1 => "Impression drop detected on proven performer - increasing bid",
else "Stable impression volume"
);
let $result = case(
$action_needed = 1 => case(
$impression_drop_percent >= 75 => "Bid Increase: Major Drop (75%+)",
$impression_drop_percent >= 50 => "Bid Increase: Significant Drop (50-75%)",
$calculated_target_bid > $dynamic_cap => "Bid Increase: CPC Limited",
else "Bid Increase: Moderate Drop"
),
$impression_drop_percent >= 75 => "Major Drop (75%+) - No Action",
$impression_drop_percent >= 50 => "Significant Drop (50-75%) - No Action",
$impression_drop_percent >= 25 => "Moderate Drop (25-50%) - No Action",
$impression_drop_percent > 0 => "Minor Drop (<25%) - No Action",
$impression_drop_percent < 0 => "Impressions Increased - No Action",
else "No Change Detected"
);
// === Final Filter ===
state = "effectively enabled"
and (campaign name contains any $include_campaigns)
and (campaign name does not contain any $exclude_campaigns)
and $action_needed = 1
© Merch Jar LLC