Promotions

Scheduled bulk price editor

Schedule price changes for selected products, using a percentage or fixed amount. Preview the changes first and optionally restore the original prices automatically.

When to use this template

This template is built for Shopify stores using the JsWorkflows app.

What it does: Schedule price changes for selected products, using a percentage or fixed amount. Preview the changes first and optionally restore the original prices automatically.

It is designed for Shopify promotion workflows and gives you a production-ready starting point instead of building the automation from scratch.

This workflow uses the scheduled trigger model and starts from the "Scheduled price update" trigger. It includes setup fields for merchant-facing values, so you can configure the workflow before installing it.

Setup guide

Before you start

This template helps run a scheduled bulk price update across matching product variants, then optionally rolls the variants back to their original prices.

Configure in setup

  • Variant search query: choose which product variants should be included in the price update. Variants are the sellable product options in Shopify, such as size/color combinations or SKUs. Leave product_status:active to target variants on active products, or narrow it before turning off dry run.
  • Examples you can copy: tag:clearance targets products with the clearance tag, vendor:Acme targets one vendor, product_type:Shoes targets one product type, and sku:TEE-* targets SKUs that start with TEE-.
  • You can combine filters with spaces, for example product_status:active tag:clearance. This means variants must match both filters.
  • To match either of two filters, use OR, for example product_status:active (tag:summer-sale OR tag:clearance).
  • Dry run only: keep enabled for the first run to preview matching variants without changing prices. The workflow logs how many matching variants it scanned.
  • Safety limit: the workflow stops after scanning this many matching variants. You do not need to know the exact number before testing. Leave the default for the first dry run. If the workflow reaches this limit, some matching variants will not be processed until you increase the limit or narrow the search query.
  • Price action and Price value: choose percentage or fixed amount adjustments.
  • Compare-at mode: choose whether compare-at price is set to the original price, preserved when valid, or cleared.
  • Rollback: optionally restore the original price and compare-at price after a configured number of hours.

Safety behavior

  • The template is dry-run by default.
  • Price changes stop at Safety limit so a broad search query cannot accidentally update more variants than expected. The workflow reports clearly if the limit is reached. In dry-run mode, variantsScanned is the reliable count of variants matched by the query up to the safety limit.
  • Each updated variant stores a temporary snapshot of its original price in variant metafields.
  • Rollback restores from those snapshots and deletes the snapshot metafields afterward.
  • Variants with an active snapshot from another price update run are skipped by default.

Notes

  • This template updates variant price and compareAtPrice only.
  • It does not update inventory cost, discounts, markets, or price lists.
  • For large stores, start with a narrow search query and a dry run before applying changes. For full-catalog or very large product-level updates, use Catalog-scale bulk price editor instead.

Setup fields

Price update label
textRequiredconfig

Human-readable label stored in temporary snapshot metafields and logs.

Variant search query
textareaRequiredconfig

Controls which product variants are included. Keep product_status:active for all active products, or narrow it with filters such as tag:clearance, vendor:Acme, product_type:Shoes, or sku:TEE-*. Use spaces for AND, for example product_status:active tag:clearance. Use OR for alternatives, for example product_status:active (tag:summer-sale OR tag:clearance). Run dry run first.

Dry run only
checkboxOptionalconfig

When enabled, the workflow logs matching variants and calculated prices without updating Shopify.

Safety limit
numberRequiredconfig

Maximum matching variants to scan in one run.

Price action
selectRequiredconfig

How the new variant price should be calculated from the current price.

Price value
numberRequiredconfig

Percentage, fixed amount, or exact price depending on the selected price action.

Minimum price
numberRequiredconfig

Lowest allowed calculated price. Variants that would fall below this value are set to this value.

Rounding mode
selectRequiredconfig

Optional merchandising rounding applied after the price action.

Compare-at mode
selectRequiredconfig

How compare-at price should be handled during the price update.

Skip active price snapshots
checkboxOptionalconfig

Skip variants that already have a temporary price snapshot from a different run.

Rollback price change
checkboxOptionalconfig

Restore original prices after the configured number of hours.

Rollback after hours
numberRequiredconfig

How long to wait before restoring original prices. Used only when rollback is enabled.