Features
Automatically pause product ads that waste budget without delivering efficient results.
✓ Accounts with product ads consuming spend without converting — identifies zero-order waste after sufficient testing
✓ Campaigns where individual ASINs underperform — catches ads with poor ACOS relative to targets
✓ High-volume accounts needing automated cleanup — scales evaluation requirements based on conversion history
✓ Accounts with Target ACOS configured — required for ACOS-based evaluation
Daily Automation: Set State using Paused
The segment evaluates product ads through two distinct paths based on conversion history. Zero-order ads are evaluated purely on whether they've received enough spend and clicks to constitute a fair test. Ads with orders are evaluated against your Target ACOS threshold — if ACOS exceeds the safeguard multiplier, they become pause candidates.
The key insight is that these paths require different evaluation criteria. An ad with no orders needs enough exposure to prove it can't convert. An ad with orders already has efficiency data — the question becomes whether that efficiency is acceptable.
As ads accumulate orders, the segment requires proportionally more data before making pause decisions. This prevents premature action on ads that are converting but haven't stabilized.
With default settings (20 clicks and $5 per order via $clicks_scaling_per_order and $spend_scaling_per_order):
The scaling recognizes that converting ads deserve more patience — each order represents real revenue and suggests the ad has potential.
Rather than separate "evaluation" and "protection" thresholds, this segment uses one clear line. The $safeguard_acos setting (default 400%) means an ad is pausable only if its ACOS exceeds 4× your target acos. This conservative default ensures you're only pausing genuinely wasteful ads, not borderline performers that might improve.
Ads reaching the $safeguard_orders threshold (default 10) are protected regardless of current ACOS. High order volume indicates proven demand — temporary ACOS spikes shouldn't trigger permanent pause decisions for established performers.
$safeguard_acos$clicks_scaling_per_order + lower $spend_scaling_per_order works well for low-CPC, high-volume campaigns.target acos set → Converting ads can't be evaluated (zero-order path still works)$reason values:$result values:When first deployed, you may see many pause candidates — this is the segment catching accumulated waste. Volume should decrease as the backlog clears and new ads are evaluated faster.
Expect to see many ads with ACOS just below the $safeguard_acos threshold. These are your "bubble" ads — converting but barely acceptable. Consider whether your threshold is set appropriately for your margins.
In accounts with many product variations, zero-order pauses often outnumber ACOS-based pauses. This is normal — most product ads simply never find their audience.
You may see ads with 10+ orders and high ACOS showing as "Protected." This is intentional — the segment assumes high-volume ads have strategic value worth preserving. Review these manually if ACOS concerns persist.
/*
=== Core: Product Ad Waste Elimination ===
Version: 1.1
Docs: merchjar.com/templates/core-product-ad-waste-elimination
Purpose: Pause wasteful product ads that have spent enough without efficient results.
Dataset: Product Ads
Recommended: Set State | Daily Schedule
*/
// === Core Settings ===
let $clicks_threshold = 20; // CORE: Base clicks required before evaluation
let $spend_threshold = 5.00; // CORE: Base spend required before evaluation
// === Safeguards ===
let $safeguard_orders = 10; // SAFEGUARD: Never pause ads with this many orders or more
let $safeguard_acos = 400%; // SAFEGUARD: Never pause if ACOS ≤ (Target × 400%) [e.g., 30% target = 120% threshold]
// === Advanced Settings ===
let $clicks_scaling_per_order = 20; // ADVANCED: Additional clicks required per order [e.g., 2 orders = 20 + (2 × 20) = 60 clicks]
let $spend_scaling_per_order = 5.00; // ADVANCED: Additional spend required per order [e.g., 2 orders = $5 + (2 × $5) = $15]
// === Segment Filters ===
let $include_campaigns = [""]; // FILTER: Apply to all campaigns, or specify terms
let $exclude_campaigns = ["NEVER_MATCH"]; // FILTER: Exclude campaigns containing these terms
// ============================================================================
// === Segment Logic ===
// ============================================================================
// Performance metrics
let $lifetime_orders = orders(lifetime);
let $lifetime_clicks = clicks(lifetime);
let $lifetime_spend = spend(lifetime);
let $lifetime_acos = acos(lifetime);
// Scaled thresholds - require more data as orders accumulate
let $clicks_required = $clicks_threshold + ($lifetime_orders * $clicks_scaling_per_order);
let $spend_required = $spend_threshold + ($lifetime_orders * $spend_scaling_per_order);
// Data sufficiency
let $sufficient_data = case(
$lifetime_clicks >= $clicks_required and $lifetime_spend >= $spend_required => 1,
else 0
);
// Safeguard checks
let $high_order_protection = case(
$lifetime_orders >= $safeguard_orders => 1,
else 0
);
let $acos_protection = case(
$lifetime_orders > 0 and target acos > 0 and $lifetime_acos <= target acos * $safeguard_acos => 1,
else 0
);
// === Pausing Paths ===
// Zero-order waste: sufficient data with no conversions
let $zero_order_candidate = case(
$lifetime_orders = 0 and $sufficient_data = 1 => 1,
else 0
);
// Poor ACOS: has orders, sufficient data, and ACOS exceeds threshold
let $poor_acos_candidate = case(
$lifetime_orders > 0 and $sufficient_data = 1 and target acos > 0 and $lifetime_acos > target acos * $safeguard_acos => 1,
else 0
);
// Combined pausing candidate
let $pausing_candidate = case(
$zero_order_candidate = 1 or $poor_acos_candidate = 1 => 1,
else 0
);
// === Diagnostics ===
let $reason = case(
$high_order_protection = 1 => "Protected - high order volume",
$acos_protection = 1 => "Protected - ACOS within acceptable range",
$zero_order_candidate = 1 => "Zero orders with sufficient spend/clicks",
$poor_acos_candidate = 1 => "ACOS exceeds safeguard threshold",
$lifetime_orders = 0 and $lifetime_spend < $spend_required and $lifetime_clicks < $clicks_required => "Insufficient spend and clicks",
$lifetime_orders = 0 and $lifetime_spend < $spend_required => "Insufficient spend",
$lifetime_orders = 0 => "Insufficient clicks",
$lifetime_orders > 0 and $sufficient_data = 0 => "Insufficient data for order volume",
$lifetime_orders > 0 and target acos <= 0 => "No target ACOS set",
else "Performing within acceptable range"
);
let $result = case(
$high_order_protection = 1 => "Protected - No Action",
$acos_protection = 1 => "Protected - No Action",
$zero_order_candidate = 1 => "Pause - Zero Orders",
$poor_acos_candidate = 1 => "Pause - High ACOS",
else "No Action"
);
// === Final Filter ===
state = "effectively enabled"
and (campaign name contains any $include_campaigns)
and (campaign name does not contain any $exclude_campaigns)
and $pausing_candidate = 1
and $high_order_protection = 0
Simplified from three evaluation paths to two. Removed efficiency path (clicks-per-order for converting ads) in favor of single ACOS threshold. Added $safeguard_acos setting that protects ads with acceptable ACOS and gates pause decisions for converting ads. Scaling settings ($clicks_scaling_per_order, $spend_scaling_per_order) now apply to both paths.
Initial release. Three-path evaluation: zero-order waste, efficiency (clicks-per-order), and ACOS performance.
/*
=== Core: Product Ad Waste Elimination ===
Version: 1.1
Docs: merchjar.com/templates/core-product-ad-waste-elimination
Purpose: Pause wasteful product ads that have spent enough without efficient results.
Dataset: Product Ads
Recommended: Set State | Daily Schedule
*/
// === Core Settings ===
let $clicks_threshold = 20; // CORE: Base clicks required before evaluation
let $spend_threshold = 5.00; // CORE: Base spend required before evaluation
// === Safeguards ===
let $safeguard_orders = 10; // SAFEGUARD: Never pause ads with this many orders or more
let $safeguard_acos = 400%; // SAFEGUARD: Never pause if ACOS ≤ (Target × 400%) [e.g., 30% target = 120% threshold]
// === Advanced Settings ===
let $clicks_scaling_per_order = 20; // ADVANCED: Additional clicks required per order [e.g., 2 orders = 20 + (2 × 20) = 60 clicks]
let $spend_scaling_per_order = 5.00; // ADVANCED: Additional spend required per order [e.g., 2 orders = $5 + (2 × $5) = $15]
// === Segment Filters ===
let $include_campaigns = [""]; // FILTER: Apply to all campaigns, or specify terms
let $exclude_campaigns = ["NEVER_MATCH"]; // FILTER: Exclude campaigns containing these terms
// ============================================================================
// === Segment Logic ===
// ============================================================================
// Performance metrics
let $lifetime_orders = orders(lifetime);
let $lifetime_clicks = clicks(lifetime);
let $lifetime_spend = spend(lifetime);
let $lifetime_acos = acos(lifetime);
// Scaled thresholds - require more data as orders accumulate
let $clicks_required = $clicks_threshold + ($lifetime_orders * $clicks_scaling_per_order);
let $spend_required = $spend_threshold + ($lifetime_orders * $spend_scaling_per_order);
// Data sufficiency
let $sufficient_data = case(
$lifetime_clicks >= $clicks_required and $lifetime_spend >= $spend_required => 1,
else 0
);
// Safeguard checks
let $high_order_protection = case(
$lifetime_orders >= $safeguard_orders => 1,
else 0
);
let $acos_protection = case(
$lifetime_orders > 0 and target acos > 0 and $lifetime_acos <= target acos * $safeguard_acos => 1,
else 0
);
// === Pausing Paths ===
// Zero-order waste: sufficient data with no conversions
let $zero_order_candidate = case(
$lifetime_orders = 0 and $sufficient_data = 1 => 1,
else 0
);
// Poor ACOS: has orders, sufficient data, and ACOS exceeds threshold
let $poor_acos_candidate = case(
$lifetime_orders > 0 and $sufficient_data = 1 and target acos > 0 and $lifetime_acos > target acos * $safeguard_acos => 1,
else 0
);
// Combined pausing candidate
let $pausing_candidate = case(
$zero_order_candidate = 1 or $poor_acos_candidate = 1 => 1,
else 0
);
// === Diagnostics ===
let $reason = case(
$high_order_protection = 1 => "Protected - high order volume",
$acos_protection = 1 => "Protected - ACOS within acceptable range",
$zero_order_candidate = 1 => "Zero orders with sufficient spend/clicks",
$poor_acos_candidate = 1 => "ACOS exceeds safeguard threshold",
$lifetime_orders = 0 and $lifetime_spend < $spend_required and $lifetime_clicks < $clicks_required => "Insufficient spend and clicks",
$lifetime_orders = 0 and $lifetime_spend < $spend_required => "Insufficient spend",
$lifetime_orders = 0 => "Insufficient clicks",
$lifetime_orders > 0 and $sufficient_data = 0 => "Insufficient data for order volume",
$lifetime_orders > 0 and target acos <= 0 => "No target ACOS set",
else "Performing within acceptable range"
);
let $result = case(
$high_order_protection = 1 => "Protected - No Action",
$acos_protection = 1 => "Protected - No Action",
$zero_order_candidate = 1 => "Pause - Zero Orders",
$poor_acos_candidate = 1 => "Pause - High ACOS",
else "No Action"
);
// === Final Filter ===
state = "effectively enabled"
and (campaign name contains any $include_campaigns)
and (campaign name does not contain any $exclude_campaigns)
and $pausing_candidate = 1
and $high_order_protection = 0
© Merch Jar LLC