Skip to content

template

Impression Recovery Boost

Raises the bid on a proven keyword when its impressions fall well below their usual level.

Changes bidsDaily, once enabled

How it works

When it helps. A proven keyword or target has lost visibility and you want to consider a controlled bid increase.

It looks at

  • Recent and baseline impressions
  • Order and ACoS history
  • Current bid and CPC
  1. 1Looks for an impression decline among targets that meet your performance requirements.
  2. 2Checks the cooldown and calculates an increase within the configured bid limits.

What you get back

Qualifying targets with a proposed higher bid. It identifies a visibility drop; it does not diagnose every possible cause or guarantee recovery.

Make it fit your account

Your Copilot helps you choose the settings before previewing the results.

  • Impression decline and performance requirements
  • Bid increase, caps and cooldown
View logic and technical details
Version
1.0
Dataset
Keywords & Targets
Item ID
core-impression-recovery-boost
View versioned source

Download source file

Segment Logic

/*
=== Core: Impression Recovery Boost ===
Version: 1.0
Docs: merchjar.com/templates?t=core-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
Tags: bid, default
Risk: bids
Schedule: daily
Goal: grow
Requires-Properties: none
Pairs-With: build-segment, check-segments
Last-Updated: 2026-06-15
Min-Pack-Version: 1.0.0
*/

// === 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 x 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 x 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 ===
// NOTE: Cooldown is intentionally short (3d) - missing a boost window has a real cost for impression-starved targets
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 $planned_action = 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 all $exclude_campaigns)
and $action_needed = 1