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. Leaveproduct_status:activeto target variants on active products, or narrow it before turning off dry run.- Examples you can copy:
tag:clearancetargets products with theclearancetag,vendor:Acmetargets one vendor,product_type:Shoestargets one product type, andsku:TEE-*targets SKUs that start withTEE-. - 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 exampleproduct_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 actionandPrice 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 limitso a broad search query cannot accidentally update more variants than expected. The workflow reports clearly if the limit is reached. In dry-run mode,variantsScannedis 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
priceandcompareAtPriceonly. - 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 editorinstead.
Setup fields
Human-readable label stored in temporary snapshot metafields and logs.
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.
When enabled, the workflow logs matching variants and calculated prices without updating Shopify.
Maximum matching variants to scan in one run.
How the new variant price should be calculated from the current price.
Percentage, fixed amount, or exact price depending on the selected price action.
Lowest allowed calculated price. Variants that would fall below this value are set to this value.
Optional merchandising rounding applied after the price action.
How compare-at price should be handled during the price update.
Skip variants that already have a temporary price snapshot from a different run.
Restore original prices after the configured number of hours.
How long to wait before restoring original prices. Used only when rollback is enabled.