In Shopify, change prices for multiple products by filtering your list at Products, clicking Edit products, adding the Price column and using the percentage adjustment dropdown. For scheduled sales use a discount or a price-scheduler app; for site-wide feed-visible sales use a real price change with a rollback snapshot.
- Bulk-editor percentage adjustments apply uniformly but don't round.
- Discounts apply at checkout; real price changes propagate to all channels including feeds.
- Never schedule price changes manually at midnight — automate it or use discounts.
- Always store a compare-at price so the sale is visible in the theme.
- Real price changes trigger Google Merchant feed updates within hours.
The bulk editor handles small filtered price changes. For sales and scheduled changes, use a price scheduler or discount codes — never rely on midnight manual edits.
Native bulk price editing
Filter your products, open the bulk editor, add the Price and Compare-at price columns, and update the values. Use percentage adjustments from the dropdown for uniform changes across a collection. The bulk editor supports both absolute and percentage adjustments but does not round — you'll need a second pass to snap to .99 or .95 endings.
- 1Filter to your target set
Filter by collection, tag or vendor. Sanity-check the product count before opening the editor.
- 2Open the editor
Products → select all → Edit products. Add the Price column.
- 3Apply the change
Use the column header dropdown to apply a percentage or fixed adjustment across all selected rows.
- 4Round in a second pass
Add a rounding column (usually a formula in a temporary CSV) and reimport, or apply rounding in an app.
Scheduled price changes
Shopify doesn't natively schedule real price changes. You have two clean options: discount codes with a start and end date, or a price-scheduler app that writes the new price and restores the original when the sale ends.
| Approach | Visible in checkout | Visible in feeds | Auto-restores |
|---|---|---|---|
| Discount code (automatic) | Yes | No | Yes |
| Manual price edit | Yes | Yes | No — manual |
| Price scheduler app | Yes | Yes | Yes |
Price change vs. discount code
Discounts apply at checkout and work well for coupon-driven promotions. Real price changes propagate to all channels — Google Shopping feeds, marketplaces, embedded storefronts — which matters when your promotion is visible outside the checkout.
A real price change makes the sale visible everywhere. A discount on top rewards loyal buyers with an extra percent. Track redemption to measure incremental lift.
Compare-at prices
Set a compare-at price alongside the real price to display a strike-through. Keep it truthful: in most jurisdictions, a compare-at price must reflect a genuine prior price. The EU Omnibus directive and UK ASA rules require the crossed-out price to be the lowest offered in the previous 30 days.
Programmatic changes with the Admin API
For scheduled or conditional changes, GraphQL productVariantUpdate is the primitive. Wrap it in a bulk operation for anything above ~5k variants.
mutation UpdatePrice($id: ID!, $price: Money!) {
productVariantUpdate(input: { id: $id, price: $price }) {
productVariant { id price }
userErrors { field message }
}
}Rollback strategy
Every price change needs a rollback plan. Export a CSV of the affected products and their original prices before you touch anything. If you're using a scheduler app, its snapshot is your rollback — verify the snapshot exists before the job runs.
Localized pricing strategies via Shopify Markets
When expanding globally, flat price changes across all catalogs often fail to account for local market nuances or currency volatility. Shopify Markets allows for merchant-defined price adjustments by percentage for specific regions. If you are increasing base prices in your primary market, you must decide whether to let the automated exchange rate handle the conversion or set manual fixed prices. For merchants on Advanced or Plus plans, manual price lists (CSV upload) are the most reliable way to maintain psychological pricing, such as ending all prices in .95 or .99 across different currencies. If you apply a 10% global increase, review your 'Price Adjustments' setting within each market to ensure you aren't compounding increases inadvertently, which can price you out of competitive international sectors.
- Use 'Price Adjustments' in Market settings for quick percentage shifts per country.
- Upload a CSV to the 'International' market for fixed, non-fluctuating price points.
- Check how rounding rules in your store Markets impact your final 'Compare-at' display.
- Audit the conversion preview before clicking 'Save' to see the domestic customer view.
- Ensure tax-inclusive pricing is toggled on or off based on regional legal requirements.
Bulk price management via Metafields
Static pricing is often insufficient for products with high commodity volatility or those requiring dynamic calculations based on external data. By leveraging Metafields, you can store 'Base Cost' or 'MSRP' as custom fragments of data. Using a bulk editor or an automation tool like Flow automations, you can trigger price updates across thousands of SKUs whenever a specific Metafield value changes. This is particularly effective for B2B stores where 'Tier 2' pricing might be a calculation of the 'Base Cost' metafield. Instead of manual entry, you update the metafield via a single CSV import, and a background script or app recalculates the live 'Price' and 'Compare-at Price' fields systematically, reducing the risk of human error during manual data entry in the Shopify Admin.
- 1Define Metafield Definitions
Navigate to Settings > Custom Data and create a Decimal or Integer metafield for 'Supplier Cost' or 'Reference Price'.
- 2Batch Import Values
Use the CSV importer or a third-party tool like Matrixify to populate these metafields for your specific SKUs.
- 3Map Calculation Logic
Utilize a logic-based app to monitor metafield changes and programmatically update the live 'Price' field based on your desired margin.
- 4Validate Synchronization
Run a test on 5 SKUs to ensure the transformation logic accounts for rounding and compare-at price clearing.
Optimizing Storefront filtering with price increments
Major price shifts frequently break the functionality of 'Shop by Price' filters on your storefront. When performing a bulk update, specifically shifting items between tiered brackets (e.g., $45 to $55), you must ensure your collection filters remain user-friendly. our Search & Discovery app uses dynamic price ranges, but static manual collections may require re-indexing or manual rule adjustment. If your filter increments are set at $25 intervals, a bulk increase that pushes 40% of your inventory into a higher bracket can lead to 'empty' looking ranges for lower-tier shoppers. Always verify that your price-based automated collections (e.g., 'Gifts under $50') still contain the intended inventory after any increase over 5%, otherwise, you risk a sudden drop in conversion for those specific landing pages.
If you use price-based rules for automated collections, update visibility rules at least 24 hours before a sale to allow our CDN to refresh the product counts for filtered views.
Comparative analysis of bulk edit methods
Choosing the wrong tool for price adjustments can lead to system timeouts or partial updates that leave your catalog inconsistent. The native Bulk Editor is excellent for small batches (under 50 products), but CSV imports or the API are required for larger catalogs to ensure transaction integrity. When using CSVs, only include the 'Handle', 'SKU', 'Variant Price', and 'Variant Compare At Price' columns to minimize the risk of overwriting critical SEO data like titles or tags. For stores with over 10,000 SKUs, third-party apps provide 'throttling' which prevents the Admin API from hitting rate limits while updating thousands of prices simultaneously, a critical feature for time-sensitive promotions.
| Method | Capacity | Speed | Risk Level |
|---|---|---|---|
| Native Bulk Editor | 50-100 SKUs | Fast (Manual) | Low |
| Standard CSV Import | Full Catalog | Medium (Background) | High (Overwrite risk) |
| Admin API | Unlimited | Variable | Moderate (Requires Dev) |
| Specialized Pricing Apps | Unlimited | Fast (Scheduled) | Low |
Managing price updates for Subscription products
Updating prices for subscription-based products requires extra caution as changes in the Shopify Admin do not always automatically sync with existing customer contracts. For merchants using apps like Recharge, Bold, or Shopify Subscriptions, changing the 'Price' field on a product page generally only impacts new subscribers. To change prices for existing recurring billing cycles, you must often perform a secondary bulk update within the subscription app’s interface. Failure to do so creates a 'grandfathered' pricing scenario where older customers pay significantly less than new ones. Before any bulk price increase, verify your subscription app's policy on 'Price Syncing' to ensure that current subscribers are either updated or preserved according to your communication strategy and legal terms of service.
Legally, some jurisdictions require 30-day notice before increasing a recurring subscription price. Notify customers via email before pushing the bulk update to avoid high chargeback rates.
Plan price changes, promotions and automatic restoration — without discount codes.
Learn moreFrequently asked questions
The most common questions merchants ask us about pricing.