Features
Pause keywords and targets that have spent enough to prove they are not converting profitably.
Daily automation: Set State to Paused for the entities this segment returns.
Each keyword or target is evaluated on its lifetime performance and paused under one of two conditions: it has spent enough with zero orders, or it has enough orders to trust its ACOS and that ACOS sits above your pause threshold. A converter safeguard and a per-match-type evidence bar prevent it from pausing anything prematurely.
Different match types deserve different patience. Exact match is deliberate, so 20 clicks with nothing to show is enough to act. Broad match and auto-targeting groups are exploratory, so they get 50 clicks before the segment considers them. The base click requirement is selected from the entity's own match type.
A keyword that has produced orders has earned some benefit of the doubt. Each lifetime order adds 20 clicks to its requirement, so a target with 2 orders must reach its base plus 40 clicks before it can be paused. This keeps a periodic converter from being paused on a short cold streak.
The ACOS pause line is your Target ACOS times 300 percent. A 30 percent target pauses at 90 percent ACOS, a 60 percent target pauses at 180 percent. Because it scales with your target, the same segment behaves correctly across campaigns with different goals.
Until an entity clears both its match-type click bar and the spend floor, it returns an "Insufficient" reason and is never paused. Expect new traffic to run untouched while it gathers data.
High-order keywords show "Protected - proven converter" and never pause, even when a recent stretch looks expensive. This is intentional. The safeguard trusts accumulated results over short-term ACOS.
Broad match and auto-targeting groups are held to a higher click bar than exact match before they can be paused, so exploratory traffic gets a fair chance to find winners before the segment acts.
/*
=== Core: Pause Underperforming Keywords & Targets ===
Version: 1.0
Docs: merchjar.com/templates?t=core-pause-underperforming-keywords-targets
Purpose: Pause keywords and targets that spent enough to prove they are not converting profitably.
Dataset: Keywords & Targets
Recommended: Set State: Paused | Daily
*/
// === Core Settings ===
let $orders_min_for_acos = 5; // CORE: Minimum lifetime orders before ACOS is trusted for pausing
let $spend_min = 5.00; // CORE: Minimum lifetime spend before an entity is eligible to pause ($5.00)
// === Strategy Settings ===
// Match-type click thresholds: lifetime clicks with no efficient result before an entity can be paused.
// Manual keywords
let $clicks_exact = 20; // STRATEGY: Exact match keywords - base clicks before evaluation
let $clicks_phrase = 30; // STRATEGY: Phrase match keywords - base clicks before evaluation
let $clicks_broad = 50; // STRATEGY: Broad match keywords - base clicks before evaluation
// Product targeting
let $clicks_product = 20; // STRATEGY: Product (ASIN) targeting - base clicks before evaluation
let $clicks_expanded = 40; // STRATEGY: Expanded product targeting - base clicks before evaluation
// Auto targeting
let $clicks_auto = 50; // STRATEGY: Auto-targeting groups - base clicks before evaluation
// === Advanced Settings ===
let $clicks_scaling_per_order = 20; // ADVANCED: Extra clicks required per lifetime order [e.g. 2 orders = base + (2 x 20)]
let $t_acos_threshold_pause = 300%; // STRATEGY: Pause when ACOS >= (Target ACOS x 300%) [e.g. 30% target = 90% threshold]
// === Safeguards ===
let $safeguard_orders = 10; // SAFEGUARD: Never pause entities with this many lifetime orders or more
// === 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
// Lifetime performance metrics
let $lifetime_orders = orders(lifetime);
let $lifetime_clicks = clicks(lifetime);
let $lifetime_spend = spend(lifetime);
let $lifetime_acos = acos(lifetime);
// Match-type-aware base click requirement (match-type values are API-level)
let $base_clicks = case(
match type = "exact" => $clicks_exact,
match type = "phrase" => $clicks_phrase,
match type = "broad" => $clicks_broad,
match type = "product exact" => $clicks_product,
match type = "similar" => $clicks_expanded,
match type = "close match" => $clicks_auto,
match type = "loose match" => $clicks_auto,
match type = "complements" => $clicks_auto,
match type = "substitutes" => $clicks_auto,
else $clicks_expanded
);
// Clicks required scales up as orders accumulate (more evidence before pausing a converter)
let $clicks_required = $base_clicks + ($lifetime_orders * $clicks_scaling_per_order);
// Data sufficiency: enough clicks AND enough spend to judge
let $sufficient_data = case(
$lifetime_clicks >= $clicks_required and $lifetime_spend >= $spend_min => 1,
else 0
);
// ACOS pause threshold, relative to the account Target ACOS
let $acos_pause_threshold = target acos * $t_acos_threshold_pause;
// Safeguard: protect proven converters
let $protected = case(
$lifetime_orders >= $safeguard_orders => 1,
else 0
);
// Path 1 - zero-order waste: enough data, still no orders
let $zero_order_waste = case(
$lifetime_orders = 0 and $sufficient_data = 1 => 1,
else 0
);
// Path 2 - poor ACOS: has orders, enough data, ACOS above the pause threshold
let $poor_acos = case(
$lifetime_orders >= $orders_min_for_acos and $sufficient_data = 1 and $lifetime_acos > $acos_pause_threshold => 1,
else 0
);
// Pause candidate (either path), unless protected
let $pause_candidate = case(
$protected = 1 => 0,
$zero_order_waste = 1 => 1,
$poor_acos = 1 => 1,
else 0
);
// === Diagnostics ===
let $reason = case(
$protected = 1 => "Protected - proven converter",
$sufficient_data = 0 and $lifetime_spend < $spend_min => "Insufficient spend to evaluate",
$sufficient_data = 0 => "Insufficient clicks for match type",
$zero_order_waste = 1 => "Spend with zero orders",
$poor_acos = 1 => "ACOS above pause threshold",
$lifetime_orders > 0 => "Converting within acceptable range",
else "No action needed"
);
let $result = case(
$pause_candidate = 1 and $zero_order_waste = 1 => "Pause - Zero Orders",
$pause_candidate = 1 and $poor_acos = 1 => "Pause - Poor ACOS",
else "No Action"
);
// === Final Filter ===
state = "effectively enabled"
and (campaign name contains any $include_campaigns)
and (campaign name does not contain all $exclude_campaigns)
and $pause_candidate = 1
Initial release. Match-type-aware click thresholds, order-scaled evidence, target-relative ACOS pausing, and a 10-order converter safeguard. Two pause paths: zero-order waste and poor ACOS.
/*
=== Core: Pause Underperforming Keywords & Targets ===
Version: 1.0
Docs: merchjar.com/templates?t=core-pause-underperforming-keywords-targets
Purpose: Pause keywords and targets that spent enough to prove they are not converting profitably.
Dataset: Keywords & Targets
Recommended: Set State: Paused | Daily
*/
// === Core Settings ===
let $orders_min_for_acos = 5; // CORE: Minimum lifetime orders before ACOS is trusted for pausing
let $spend_min = 5.00; // CORE: Minimum lifetime spend before an entity is eligible to pause ($5.00)
// === Strategy Settings ===
// Match-type click thresholds: lifetime clicks with no efficient result before an entity can be paused.
// Manual keywords
let $clicks_exact = 20; // STRATEGY: Exact match keywords - base clicks before evaluation
let $clicks_phrase = 30; // STRATEGY: Phrase match keywords - base clicks before evaluation
let $clicks_broad = 50; // STRATEGY: Broad match keywords - base clicks before evaluation
// Product targeting
let $clicks_product = 20; // STRATEGY: Product (ASIN) targeting - base clicks before evaluation
let $clicks_expanded = 40; // STRATEGY: Expanded product targeting - base clicks before evaluation
// Auto targeting
let $clicks_auto = 50; // STRATEGY: Auto-targeting groups - base clicks before evaluation
// === Advanced Settings ===
let $clicks_scaling_per_order = 20; // ADVANCED: Extra clicks required per lifetime order [e.g. 2 orders = base + (2 x 20)]
let $t_acos_threshold_pause = 300%; // STRATEGY: Pause when ACOS >= (Target ACOS x 300%) [e.g. 30% target = 90% threshold]
// === Safeguards ===
let $safeguard_orders = 10; // SAFEGUARD: Never pause entities with this many lifetime orders or more
// === 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
// Lifetime performance metrics
let $lifetime_orders = orders(lifetime);
let $lifetime_clicks = clicks(lifetime);
let $lifetime_spend = spend(lifetime);
let $lifetime_acos = acos(lifetime);
// Match-type-aware base click requirement (match-type values are API-level)
let $base_clicks = case(
match type = "exact" => $clicks_exact,
match type = "phrase" => $clicks_phrase,
match type = "broad" => $clicks_broad,
match type = "product exact" => $clicks_product,
match type = "similar" => $clicks_expanded,
match type = "close match" => $clicks_auto,
match type = "loose match" => $clicks_auto,
match type = "complements" => $clicks_auto,
match type = "substitutes" => $clicks_auto,
else $clicks_expanded
);
// Clicks required scales up as orders accumulate (more evidence before pausing a converter)
let $clicks_required = $base_clicks + ($lifetime_orders * $clicks_scaling_per_order);
// Data sufficiency: enough clicks AND enough spend to judge
let $sufficient_data = case(
$lifetime_clicks >= $clicks_required and $lifetime_spend >= $spend_min => 1,
else 0
);
// ACOS pause threshold, relative to the account Target ACOS
let $acos_pause_threshold = target acos * $t_acos_threshold_pause;
// Safeguard: protect proven converters
let $protected = case(
$lifetime_orders >= $safeguard_orders => 1,
else 0
);
// Path 1 - zero-order waste: enough data, still no orders
let $zero_order_waste = case(
$lifetime_orders = 0 and $sufficient_data = 1 => 1,
else 0
);
// Path 2 - poor ACOS: has orders, enough data, ACOS above the pause threshold
let $poor_acos = case(
$lifetime_orders >= $orders_min_for_acos and $sufficient_data = 1 and $lifetime_acos > $acos_pause_threshold => 1,
else 0
);
// Pause candidate (either path), unless protected
let $pause_candidate = case(
$protected = 1 => 0,
$zero_order_waste = 1 => 1,
$poor_acos = 1 => 1,
else 0
);
// === Diagnostics ===
let $reason = case(
$protected = 1 => "Protected - proven converter",
$sufficient_data = 0 and $lifetime_spend < $spend_min => "Insufficient spend to evaluate",
$sufficient_data = 0 => "Insufficient clicks for match type",
$zero_order_waste = 1 => "Spend with zero orders",
$poor_acos = 1 => "ACOS above pause threshold",
$lifetime_orders > 0 => "Converting within acceptable range",
else "No action needed"
);
let $result = case(
$pause_candidate = 1 and $zero_order_waste = 1 => "Pause - Zero Orders",
$pause_candidate = 1 and $poor_acos = 1 => "Pause - Poor ACOS",
else "No Action"
);
// === Final Filter ===
state = "effectively enabled"
and (campaign name contains any $include_campaigns)
and (campaign name does not contain all $exclude_campaigns)
and $pause_candidate = 1
© Merch Jar LLC