Shopify Price Updater
A Node.js script designed to automate the bulk updating and rolling back of Shopify product prices based on specific product tags. This tool is ideal for managing sales, promotions, or price adjustments across a large catalog of products efficiently.
Features
- Bulk Price Updates: Adjust product prices by a configurable percentage (increase or decrease).
- Price Rollback: Revert product prices to their original "compare-at" price, useful for ending sales or promotions.
- Tag-Based Operations: Target specific groups of products using Shopify product tags.
- Scheduled Execution: Optionally schedule price operations to run at a future date and time.
- Comprehensive Logging: Provides detailed logs of operations, including product counts, successful updates/rollbacks, and any encountered errors.
- Graceful Shutdown: Handles interruptions gracefully, ensuring data integrity.
Installation
To get started with the Shopify Price Updater, follow these steps:
Prerequisites
- Node.js (version 16.0.0 or higher)
- Access to a Shopify store with Admin API credentials.
Steps
-
Clone the Repository:
git clone https://github.com/your-repo/shopify-price-updater.git cd shopify-price-updater(Note: Replace
https://github.com/your-repo/shopify-price-updater.gitwith the actual repository URL if different.) -
Install Dependencies:
npm install -
Configure Environment Variables: Create a
.envfile in the root directory of the project (same level aspackage.json). Copy the contents from.env.exampleand fill in your Shopify store details and desired configuration.# .env example # Shopify Store Configuration SHOPIFY_SHOP_DOMAIN=your-shop-name.myshopify.com SHOPIFY_ACCESS_TOKEN=your-admin-api-access-token # Price Update Configuration TARGET_TAG=sale OPERATION_MODE=update PRICE_ADJUSTMENT_PERCENTAGE=10 # Scheduling Configuration (Optional) # SCHEDULED_EXECUTION_TIME=2024-12-25T10:30:00SHOPIFY_SHOP_DOMAIN: Your Shopify store's domain (e.g.,your-store.myshopify.com).SHOPIFY_ACCESS_TOKEN: A Shopify Admin API Access Token withwrite_productsandread_productspermissions.TARGET_TAG: The Shopify product tag that identifies the products you want to update (e.g.,sale,clearance).OPERATION_MODE: Set toupdatefor price adjustments orrollbackto revert prices.PRICE_ADJUSTMENT_PERCENTAGE: (Used only inupdatemode) The percentage by which to adjust prices. Use a positive number for an increase (e.g.,10for +10%) and a negative number for a decrease (e.g.,-15for -15%).SCHEDULED_EXECUTION_TIME: (Optional) An ISO 8601 formatted datetime string (e.g.,YYYY-MM-DDTHH:MM:SS). If set, the script will wait until this time before executing the operation. Leave commented out or remove to execute immediately.
Usage
You can run the application using the following npm scripts:
Run in Default Mode (Update)
This will run the script in update mode with the TARGET_TAG and PRICE_ADJUSTMENT_PERCENTAGE defined in your .env file.
npm start
Run in Update Mode
Explicitly sets the OPERATION_MODE to update. This is useful if you want to override the .env setting for a single run.
Doesn't work currently, weird spacing issues in package.json
npm run update
Run in Rollback Mode
Explicitly sets the OPERATION_MODE to rollback. This will revert prices of products with the TARGET_TAG from their current price to their compare-at price.
Doesn't work currently, weird spacing issues in package.json
npm run rollback
Debug Tags
This script helps in debugging product tags. It's useful for verifying which products are associated with a specific tag without performing any price changes.
npm run debug-tags
Running Tests
To run the automated tests for the application:
npm test
Scheduled Operations
If SCHEDULED_EXECUTION_TIME is set in your .env file, the script will start and wait until the specified time before initiating the price update or rollback operation. You can use npm start, npm run update, or npm run rollback with the SCHEDULED_EXECUTION_TIME variable set.