Dashboard
Safe Shopify markdowns with exact restore.
Recent campaigns
Latest pricing activity
Shopify connection
Current live status
Storefront result: old selling price becomes Shopify
compareAtPrice; discounted amount becomes the actual variant price. Cart and checkout therefore use the discounted selling price.Shopify products
Select variants or filter by collection.
| Product / Variant | SKU | Current Price | Compare-at | Pricing |
|---|
CREATE SALE
0 variantsMarkdown setup
Build discount rulesFilter/select a product, collection or SKU group, set its discount above, then add it as a rule.
Select variants and preview final Shopify prices.
No Shopify price changes happen here. After creating the draft, a separate “Apply Sale” confirmation is required.
Sale campaigns
Automatic Start / End scheduling with manual Start Now and End Sale controls.
Price change audit
Every attempted Shopify price write is recorded.
| Time | User | Action | Product / SKU | Before | After | Result | Error |
|---|
Shopify connection
Server configuration
SHOPIFY_STORE_DOMAIN=your-store.myshopify.com SHOPIFY_CLIENT_ID=... SHOPIFY_CLIENT_SECRET=... SHOPIFY_API_VERSION=2026-07
Keep Client Secret on the server only. Required app scopes: read_products and write_products.
Demo tools
Available only when Shopify credentials are not configured.
THEME HELP
Strike-through sale price on storefront
Most Shopify themes automatically show a sale when a variant has compare_at_price > price. This app changes the actual Shopify variant price, not a coupon display.
BeforeRs. 25,500
→
During SaleRs. 25,500 Rs. 20,400
If the theme does not show compare-at pricing
{% assign v = product.selected_or_first_available_variant %}
{% if v.compare_at_price > v.price %}
<s class="compare-price">{{ v.compare_at_price | money }}</s>
<span class="sale-price">{{ v.price | money }}</span>
{% else %}
<span>{{ v.price | money }}</span>
{% endif %}
Operational rule: while a campaign is active, do not use another bulk-price tool on the same variants. End the campaign first so its exact saved snapshot can restore cleanly.