Skip to main content

Product Discounts - Targeting Strategies

Advanced techniques for selecting which products receive discounts.

Targeting Overview

Product discounts support multiple targeting strategies:
  1. Direct Targeting: IDs, handles, vendors (simple, fast)
  2. Selector-Based: JMESPath/filters (flexible, powerful)
  3. Combination: Mix multiple strategies

Direct Targeting Methods

By Product Handle

Target specific products by URL-friendly handle:
When to use:
  • Known product handles
  • Small, specific product sets
  • Performance-critical scenarios

By Variant ID

Most specific targeting method:
When to use:
  • Specific sizes/colors
  • Exact variant targeting
  • Integration with external systems

By Vendor

All products from specific brands:
When to use:
  • Brand-specific sales
  • Vendor agreements
  • Multi-brand discounts

By Variant Title

Target by size, color, or other options:
When to use:
  • Size-specific discounts
  • Color-based pricing
  • Option-based sales

Selector-Based Targeting

Use selector parameter with JMESPath or filter syntax for complex queries.

Basic Selector

Returns array of line IDs where product handle is ‘t-shirt’.

Collection-Based Selection

Target all items in a collection:
How it works:
  1. Query finds lines where product is in ‘sale’ collection
  2. Extracts line IDs
  3. Applies discount to those lines

Tag-Based Selection

Target products with specific tags:

Price Range Selection

Target products in specific price range:

Multiple Criteria Selection

Combine multiple conditions:
Targets: Nike products that are also in the sale collection.

Selector Syntax Reference

JMESPath Filtering

Common conditions:
  • merchandise.product.handle == 'value': Exact match
  • merchandise.product.vendor == 'Nike': Vendor match
  • merchandise.priceV2.amount >= 100“: Price comparison
  • merchandise.product.tags[?@ == 'sale']: Array contains
  • merchandise.product.collections[?handle=='sale']: Nested array query

Custom Filter Syntax

Alternative to JMESPath:
Filters:
  • select(): Filter items
  • map(): Extract property
  • sum(): Aggregate values

Targeting Decision Guide

Performance Considerations

Fastest (use when possible)

  1. variant_ids: Direct ID lookup
  2. handles: Simple string match
  3. vendors: Indexed field lookup

Moderate

  1. selector with simple conditions: Single field filter

Slower (use when necessary)

  1. selector with nested queries: Collection/tag traversal
  2. selector with multiple conditions: Complex logic
Optimization tips:
  • Cache selector results in facts
  • Use direct targeting when product set is known
  • Test with realistic cart sizes

Advanced Patterns

Exclude Products

Target all except specific products:

Metafield-Based Targeting

Target using custom metafields:

Conditional Targeting

Different products based on customer:

Next Steps