Features
Intelligently negate wasteful search terms using KDP performance data and relevance analysis.
✓ KDP accounts wanting sophisticated waste analysis beyond just zero-conversion terms
✓ Authors with blended profit data from both sales and page reads for reliable analysis
✓ Campaigns mixing fiction and non-fiction requiring profit-scaled efficiency thresholds
✓ Accounts needing KENP-aware optimization that considers page read engagement patterns
Daily Automation: Create Negative Exact Match using automatic detection
This blueprint uses four distinct negation paths to identify wasteful search terms in KDP campaigns. It combines profit-scaled efficiency analysis with KDP-specific blended metrics to account for both immediate sales and page read engagement. The system automatically adjusts click thresholds based on the blended profit generated, allowing higher-value terms more opportunity to convert while quickly identifying true waste.
Profit-Scaled Click Thresholds: Base threshold (20 clicks) increases by 4 clicks per dollar of blended profit generated. A term generating $5 in blended profit gets 40 total clicks before evaluation (20 + 5×4). This prevents negating terms that show profitability but need more volume to optimize.
Blended Performance Analysis: Uses KDP-specific metrics that combine sales revenue and estimated KENP royalties. This captures terms that drive page reads but not immediate sales, or vice versa, providing complete performance visibility for subscription-based reading.
Four-Path Negation Logic: Irrelevant terms (fast negation with minimal data), zero-profit waste (no engagement after sufficient testing), efficiency violations (converting but requiring too many clicks), and performance failures (converting well but poor blended ACOS).
Blended ROAS Protection: Prevents negating profitable terms by calculating target blended ROAS from target blended ACOS and protecting terms achieving 50% of that threshold. This safeguards against accidentally removing terms with acceptable profitability ratios.
Profit Scaling Strategy: The 4.0 clicks per dollar works well for mixed-genre accounts. Increase to 6.0+ for high-value non-fiction or business books where longer consideration cycles are normal. Decrease to 2.5-3.0 for quick-decision romance or thriller genres.
Target Blended ACOS Context: KDP campaigns typically target 100% blended ACOS (break-even) rather than 30% profit margins common in physical products. This reflects the different economics of digital content and subscription reading models.
Threshold Multiplier Applications: Use 1.5x for conservative accounts wanting more data before decisions, or 0.8x for aggressive waste removal in budget-constrained campaigns. This scales all thresholds proportionally while maintaining relative relationships.
Safeguard Balance: The $50 blended profit safeguard protects established performers while allowing aggressive optimization of low-value terms. Adjust based on your typical book price points and engagement patterns.
Efficiency vs Performance Negations: "Over Click Limit" indicates converting terms that require too many clicks per dollar of profit generated. "High Blended ACOS" indicates terms converting efficiently but with poor profitability ratios.
Protection Classifications: "Blended ROAS protection" means the term shows acceptable profitability even if other metrics suggest negation. "Too much blended profit" indicates established revenue streams that warrant protection regardless of efficiency.
Data Sufficiency Signals: "Insufficient clicks for profit level" means the term hasn't reached its profit-scaled threshold yet. This helps distinguish between terms needing more time versus clear non-performers.
Genre-Specific Behavior: Romance and thriller terms tend to convert quickly or fail clearly, leading to faster negation decisions. Business and self-help terms often show gradual profit accumulation, benefiting from profit-scaled thresholds.
Page Read Dynamics: Terms driving significant page reads but few sales will show in efficiency rather than zero-profit categories. The blended profit calculation captures this engagement and adjusts thresholds accordingly.
Seasonal Adaptation: During high-traffic periods (holidays, back-to-school), the profit scaling naturally accommodates increased engagement without premature negation. The system becomes more selective as terms generate more blended profit.
Volume Expectations: Expect 15-25% of search terms to qualify for negation in mature KDP campaigns, with higher percentages in the first weeks of deployment. The multi-path approach captures waste that simple zero-conversion analysis might miss.
/*
=== KDP Core: Search Term Waste Elimination ===
Purpose: Intelligently negate wasteful search terms using performance data and relevance analysis.
Recommended: Create Negative Exact Match | Daily
*/
// === Core Settings ===
let $clicks_threshold = 20; // CORE: Base click threshold for zero-profit terms
let $spend_threshold = 5.00; // CORE: Minimum lifetime spend required for evaluation
// === Strategy Settings ===
let $blend_profit_min_for_acos_eval = 20.00; // STRATEGY: Blended profit required for ACOS-based evaluation ($20.00 threshold)
let $clicks_min_for_acos_eval = 100; // STRATEGY: Clicks required for ACOS-based evaluation
let $t_blend_acos_threshold_negate = 500%; // STRATEGY: Negate if blended ACOS ≥ (Target Blended ACOS × 500%) when min clicks & profit are met [e.g., 100% target = 500% threshold]
// === Advanced Settings ===
let $clicks_scaling_per_dollar = 4.0; // ADVANCED: Additional clicks allowed per $1.00 blended profit [e.g., $5 profit = 20 + (5 × 4) = 40 clicks]
let $threshold_multiplier = 1.0; // ADVANCED: Scales testing thresholds for clicks and spend [e.g., 1.5 = 50% higher requirements]
let $spend_scaling_enabled = 0; // ADVANCED: Scale spend requirement with profit using threshold multiplier (1=yes, 0=no) [e.g., 0 profit = $5, $5 profit = $10]
let $irrelevant_terms = ["NEVER_MATCH"]; // ADVANCED: Aggressively negate search terms containing these keywords (unrelated terms)
let $irrelevant_clicks_threshold = 10; // ADVANCED: Clicks required to negate irrelevant terms (ignores all scaling and spend requirements)
// === Safeguards ===
let $safeguard_blend_profit = 50.00; // SAFEGUARD: Never negate terms with this much blended profit or more
let $safeguard_min_blended_roas_ratio = 50%; // SAFEGUARD: Protect terms with blended ROAS ≥ (Target Blended ROAS × 50%) [e.g., 1.0 target ROAS = 0.5 protection]
let $protected_terms = ["NEVER_MATCH"]; // SAFEGUARD: Never negate search terms containing these keywords (your brand, product names, strategic terms)
// === Segment Filters ===
let $include_campaigns = [""]; // FILTER: Apply to all campaigns, or specify terms like ["SP-", "Auto", "Research"]
let $exclude_campaigns = ["NEVER_MATCH"]; // FILTER: Exclude campaigns containing these terms, e.g., ["Brand", "Test", "Archive"]
// ============================================================================
// === Blueprint Logic ===
// ============================================================================
// Advanced logic below - modify carefully
// Pre-calculate performance metrics
let $lifetime_blended_profit = blended profit(lifetime);
let $lifetime_clicks = clicks(lifetime);
let $lifetime_spend = spend(lifetime);
let $lifetime_blended_acos = blended acos(lifetime);
let $lifetime_blended_roas = blended roas(lifetime);
// Calculate scaled click threshold based on blended profit
let $base_clicks_threshold = $clicks_threshold * $threshold_multiplier;
let $allowed_clicks = $base_clicks_threshold + ($lifetime_blended_profit * $clicks_scaling_per_dollar * $threshold_multiplier);
let $spend_required = case(
$spend_scaling_enabled = 1 => $spend_threshold + (($lifetime_blended_profit / 5.0) * $threshold_multiplier * $spend_threshold),
else $spend_threshold
);
// Data sufficiency check (both clicks and spend)
let $sufficient_data = case(
$lifetime_clicks >= $allowed_clicks and $lifetime_spend >= $spend_required => 1,
else 0
);
// Blended ROAS-based protection calculation
let $target_blended_roas = case(
target acos > 0 => 1 / target acos,
else 0
);
let $blended_roas_protection_threshold = case(
$target_blended_roas > 0 => $target_blended_roas * $safeguard_min_blended_roas_ratio,
else 0
);
let $blended_roas_protected = case(
$lifetime_blended_profit > 0 and $target_blended_roas > 0 and $lifetime_blended_roas >= $blended_roas_protection_threshold => 1,
else 0
);
// Search term relevance analysis
let $protected_term = case(
search term contains any $protected_terms => 1,
else 0
);
let $irrelevant_term = case(
search term contains any $irrelevant_terms => 1,
else 0
);
// Protection safeguards
let $high_profit_protection = case(
$lifetime_blended_profit >= $safeguard_blend_profit => 1,
else 0
);
let $protected_overall = case(
$high_profit_protection = 1 => 1,
$protected_term = 1 => 1,
$blended_roas_protected = 1 => 1,
else 0
);
// Four negation paths: irrelevant, zero-profit waste, efficiency, and ACOS performance
let $irrelevant_candidate = case(
$irrelevant_term = 1 and $lifetime_clicks >= $irrelevant_clicks_threshold => 1,
else 0
);
let $zero_profit_waste_candidate = case(
$lifetime_blended_profit = 0 and $sufficient_data = 1 => 1,
else 0
);
let $efficiency_candidate = case(
$lifetime_blended_profit > 0 and ($lifetime_blended_profit < $blend_profit_min_for_acos_eval or $lifetime_clicks < $clicks_min_for_acos_eval) => case(
$sufficient_data = 1 => 1,
else 0
),
else 0
);
let $performance_candidate = case(
$lifetime_blended_profit >= $blend_profit_min_for_acos_eval and $lifetime_clicks >= $clicks_min_for_acos_eval => case(
target acos > 0 and $lifetime_blended_acos > target acos * $t_blend_acos_threshold_negate => 1,
else 0
),
else 0
);
let $negation_candidate = case(
$irrelevant_candidate = 1 => 1,
$zero_profit_waste_candidate = 1 => 1,
$efficiency_candidate = 1 => 1,
$performance_candidate = 1 => 1,
else 0
);
// Diagnostic properties
let $reason = case(
$high_profit_protection = 1 => "Protected - too much blended profit to negate",
$protected_term = 1 => "Protected - contains protected keyword",
$blended_roas_protected = 1 => "Protected - blended ROAS above safeguard threshold",
$irrelevant_candidate = 1 => "Contains irrelevant terms, met click threshold",
$irrelevant_term = 1 and $lifetime_clicks < $irrelevant_clicks_threshold => "Contains irrelevant terms, needs more clicks",
$zero_profit_waste_candidate = 1 => "Zero blended profit, met click threshold",
$efficiency_candidate = 1 and $lifetime_clicks >= $allowed_clicks * 1.5 => "Greatly exceeds profit-scaled click limit",
$efficiency_candidate = 1 => "Exceeds profit-scaled click limit",
$performance_candidate = 1 => "Blended ACOS far above target threshold",
$sufficient_data = 0 and $lifetime_spend < $spend_required and $lifetime_clicks < $allowed_clicks => "Insufficient spend and clicks",
$sufficient_data = 0 and $lifetime_spend < $spend_required => "Insufficient spend",
$sufficient_data = 0 => "Insufficient clicks for profit level",
$lifetime_blended_profit > 0 and ($lifetime_blended_profit < $blend_profit_min_for_acos_eval or $lifetime_clicks < $clicks_min_for_acos_eval) => "Converting within profit-scaled click limit",
$lifetime_blended_profit >= $blend_profit_min_for_acos_eval and $lifetime_clicks >= $clicks_min_for_acos_eval => "Blended ACOS below negation threshold",
else "Zero blended profit, needs more clicks"
);
let $result = case(
$zero_profit_waste_candidate = 1 => "Negate - Zero Profit, High Clicks",
$irrelevant_candidate = 1 => "Negate - Irrelevant Term",
$efficiency_candidate = 1 => case(
$lifetime_blended_profit <= 5.00 => "Negate - Low Profit, High Clicks",
$lifetime_blended_profit >= 15.00 => "Negate - Converting but Inefficient",\
else "Negate - Over Click Limit"
),
$performance_candidate = 1 => "Negate - High Blended ACOS",
$high_profit_protection = 1 or $protected_term = 1 or $blended_roas_protected = 1 => "Protected - No Action",
else "No Action"
);
// === Final Filter ===
negated = false
and (campaign name contains any $include_campaigns)
and (campaign name does not contain any $exclude_campaigns)
and $negation_candidate = 1
and $protected_overall = 0
/*
=== KDP Core: Search Term Waste Elimination ===
Purpose: Intelligently negate wasteful search terms using performance data and relevance analysis.
Recommended: Create Negative Exact Match | Daily
*/
// === Core Settings ===
let $clicks_threshold = 20; // CORE: Base click threshold for zero-profit terms
let $spend_threshold = 5.00; // CORE: Minimum lifetime spend required for evaluation
// === Strategy Settings ===
let $blend_profit_min_for_acos_eval = 20.00; // STRATEGY: Blended profit required for ACOS-based evaluation ($20.00 threshold)
let $clicks_min_for_acos_eval = 100; // STRATEGY: Clicks required for ACOS-based evaluation
let $t_blend_acos_threshold_negate = 500%; // STRATEGY: Negate if blended ACOS ≥ (Target Blended ACOS × 500%) when min clicks & profit are met [e.g., 100% target = 500% threshold]
// === Advanced Settings ===
let $clicks_scaling_per_dollar = 4.0; // ADVANCED: Additional clicks allowed per $1.00 blended profit [e.g., $5 profit = 20 + (5 × 4) = 40 clicks]
let $threshold_multiplier = 1.0; // ADVANCED: Scales testing thresholds for clicks and spend [e.g., 1.5 = 50% higher requirements]
let $spend_scaling_enabled = 0; // ADVANCED: Scale spend requirement with profit using threshold multiplier (1=yes, 0=no) [e.g., 0 profit = $5, $5 profit = $10]
let $irrelevant_terms = ["NEVER_MATCH"]; // ADVANCED: Aggressively negate search terms containing these keywords (unrelated terms)
let $irrelevant_clicks_threshold = 10; // ADVANCED: Clicks required to negate irrelevant terms (ignores all scaling and spend requirements)
// === Safeguards ===
let $safeguard_blend_profit = 50.00; // SAFEGUARD: Never negate terms with this much blended profit or more
let $safeguard_min_blended_roas_ratio = 50%; // SAFEGUARD: Protect terms with blended ROAS ≥ (Target Blended ROAS × 50%) [e.g., 1.0 target ROAS = 0.5 protection]
let $protected_terms = ["NEVER_MATCH"]; // SAFEGUARD: Never negate search terms containing these keywords (your brand, product names, strategic terms)
// === Segment Filters ===
let $include_campaigns = [""]; // FILTER: Apply to all campaigns, or specify terms like ["SP-", "Auto", "Research"]
let $exclude_campaigns = ["NEVER_MATCH"]; // FILTER: Exclude campaigns containing these terms, e.g., ["Brand", "Test", "Archive"]
// ============================================================================
// === Blueprint Logic ===
// ============================================================================
// Advanced logic below - modify carefully
// Pre-calculate performance metrics
let $lifetime_blended_profit = blended profit(lifetime);
let $lifetime_clicks = clicks(lifetime);
let $lifetime_spend = spend(lifetime);
let $lifetime_blended_acos = blended acos(lifetime);
let $lifetime_blended_roas = blended roas(lifetime);
// Calculate scaled click threshold based on blended profit
let $base_clicks_threshold = $clicks_threshold * $threshold_multiplier;
let $allowed_clicks = $base_clicks_threshold + ($lifetime_blended_profit * $clicks_scaling_per_dollar * $threshold_multiplier);
let $spend_required = case(
$spend_scaling_enabled = 1 => $spend_threshold + (($lifetime_blended_profit / 5.0) * $threshold_multiplier * $spend_threshold),
else $spend_threshold
);
// Data sufficiency check (both clicks and spend)
let $sufficient_data = case(
$lifetime_clicks >= $allowed_clicks and $lifetime_spend >= $spend_required => 1,
else 0
);
// Blended ROAS-based protection calculation
let $target_blended_roas = case(
target acos > 0 => 1 / target acos,
else 0
);
let $blended_roas_protection_threshold = case(
$target_blended_roas > 0 => $target_blended_roas * $safeguard_min_blended_roas_ratio,
else 0
);
let $blended_roas_protected = case(
$lifetime_blended_profit > 0 and $target_blended_roas > 0 and $lifetime_blended_roas >= $blended_roas_protection_threshold => 1,
else 0
);
// Search term relevance analysis
let $protected_term = case(
search term contains any $protected_terms => 1,
else 0
);
let $irrelevant_term = case(
search term contains any $irrelevant_terms => 1,
else 0
);
// Protection safeguards
let $high_profit_protection = case(
$lifetime_blended_profit >= $safeguard_blend_profit => 1,
else 0
);
let $protected_overall = case(
$high_profit_protection = 1 => 1,
$protected_term = 1 => 1,
$blended_roas_protected = 1 => 1,
else 0
);
// Four negation paths: irrelevant, zero-profit waste, efficiency, and ACOS performance
let $irrelevant_candidate = case(
$irrelevant_term = 1 and $lifetime_clicks >= $irrelevant_clicks_threshold => 1,
else 0
);
let $zero_profit_waste_candidate = case(
$lifetime_blended_profit = 0 and $sufficient_data = 1 => 1,
else 0
);
let $efficiency_candidate = case(
$lifetime_blended_profit > 0 and ($lifetime_blended_profit < $blend_profit_min_for_acos_eval or $lifetime_clicks < $clicks_min_for_acos_eval) => case(
$sufficient_data = 1 => 1,
else 0
),
else 0
);
let $performance_candidate = case(
$lifetime_blended_profit >= $blend_profit_min_for_acos_eval and $lifetime_clicks >= $clicks_min_for_acos_eval => case(
target acos > 0 and $lifetime_blended_acos > target acos * $t_blend_acos_threshold_negate => 1,
else 0
),
else 0
);
let $negation_candidate = case(
$irrelevant_candidate = 1 => 1,
$zero_profit_waste_candidate = 1 => 1,
$efficiency_candidate = 1 => 1,
$performance_candidate = 1 => 1,
else 0
);
// Diagnostic properties
let $reason = case(
$high_profit_protection = 1 => "Protected - too much blended profit to negate",
$protected_term = 1 => "Protected - contains protected keyword",
$blended_roas_protected = 1 => "Protected - blended ROAS above safeguard threshold",
$irrelevant_candidate = 1 => "Contains irrelevant terms, met click threshold",
$irrelevant_term = 1 and $lifetime_clicks < $irrelevant_clicks_threshold => "Contains irrelevant terms, needs more clicks",
$zero_profit_waste_candidate = 1 => "Zero blended profit, met click threshold",
$efficiency_candidate = 1 and $lifetime_clicks >= $allowed_clicks * 1.5 => "Greatly exceeds profit-scaled click limit",
$efficiency_candidate = 1 => "Exceeds profit-scaled click limit",
$performance_candidate = 1 => "Blended ACOS far above target threshold",
$sufficient_data = 0 and $lifetime_spend < $spend_required and $lifetime_clicks < $allowed_clicks => "Insufficient spend and clicks",
$sufficient_data = 0 and $lifetime_spend < $spend_required => "Insufficient spend",
$sufficient_data = 0 => "Insufficient clicks for profit level",
$lifetime_blended_profit > 0 and ($lifetime_blended_profit < $blend_profit_min_for_acos_eval or $lifetime_clicks < $clicks_min_for_acos_eval) => "Converting within profit-scaled click limit",
$lifetime_blended_profit >= $blend_profit_min_for_acos_eval and $lifetime_clicks >= $clicks_min_for_acos_eval => "Blended ACOS below negation threshold",
else "Zero blended profit, needs more clicks"
);
let $result = case(
$zero_profit_waste_candidate = 1 => "Negate - Zero Profit, High Clicks",
$irrelevant_candidate = 1 => "Negate - Irrelevant Term",
$efficiency_candidate = 1 => case(
$lifetime_blended_profit <= 5.00 => "Negate - Low Profit, High Clicks",
$lifetime_blended_profit >= 15.00 => "Negate - Converting but Inefficient",\
else "Negate - Over Click Limit"
),
$performance_candidate = 1 => "Negate - High Blended ACOS",
$high_profit_protection = 1 or $protected_term = 1 or $blended_roas_protected = 1 => "Protected - No Action",
else "No Action"
);
// === Final Filter ===
negated = false
and (campaign name contains any $include_campaigns)
and (campaign name does not contain any $exclude_campaigns)
and $negation_candidate = 1
and $protected_overall = 0
© Merch Jar LLC