1. Product overview
DiscountIQ is an embedded Shopify app for promotion operations. Its primary merchant workflows are: scheduled sales, Shopify discount management, bulk selling-price updates based on Compare-at prices, promotion safety checks, coupon performance analytics, issue monitoring, and audit history.
| Capability | Description |
|---|---|
| Scheduled sales | Coordinate selling-price updates with an optional set of Shopify discount codes/automatic discounts over a defined start/end window. |
| Shopify discounts | Create and manage code-based and automatic discount workflows; supported fields depend on the Shopify discount type. |
| Bulk discount updates | Apply a percentage discount from Compare-at prices to selected eligible variants, with preview and preflight gating. |
| Safeguards | Catalog checks, discount-conflict review, margin protection, price-drift detection, alerts, and safe retry/rollback behavior. |
| Analytics | Coupon revenue, redemption rate, AOV, code performance, channels, trends, and anti-abuse heuristics. |
| Audit | Searchable activity history with actor, summary, and before/after detail when available. |
2. Access, billing, and first-run behavior
DiscountIQ is an embedded Shopify Admin app. Authentication is handled through Shopify. The public app checks Shopify/Partner subscription state before granting access to paid functionality.
- If Shopify reports an active subscription, the app proceeds normally.
- If no active subscription exists, the merchant is handed off to Shopify's hosted app-pricing experience.
- Development stores may have paid plans activated at no charge under Shopify's development-store billing behavior; the app still treats the resulting subscription contract as active.
- After billing access is satisfied, first-time merchants are routed to first-run setup.
- Manage plan uses an explicit merchant-click action to open Shopify's hosted pricing page.
3. Navigation and workspace reference
| Navigation item | Route purpose |
|---|---|
| Home | Operational overview, readiness, live/scheduled promotion counts, issues, and recent activity. |
| Promotions | Promotion hub grouping items into Needs attention, Live now, Coming up, Drafts, and Recently ended. |
| Bulk discount updates | Catalog-based bulk selling-price workflow. |
| Performance | Coupon performance analytics and anti-abuse signals. |
| Issues | Alerts, conflicts, margin protection, and unexpected price changes. |
| Activity | Searchable change history. |
| Manage plan | Entry point to Shopify-hosted subscription management. |
4. Store currency and catalog synchronization
Currency
During setup, DiscountIQ reads the Shopify shop currency when available. When a store currency is detected, the setup form must match it. Monetary values are displayed and processed in that store currency.
- Supported currency values use standard three-letter currency codes.
- DiscountIQ does not perform FX conversion.
- Coupon analytics prefer the currency attached to actual historical order money when orders exist, avoiding relabeling historical money as a different current store currency.
- When no order currency is available, the current Shopify store currency is used as the display fallback.
Catalog synchronization
Completing first-run setup starts a catalog sync. The indexed catalog supports promotion targeting and price calculations.
- Indexed information includes product/variant identifiers, SKUs, selling prices, Compare-at prices, and related product metadata.
- Only eligible variants are used for managed bulk discount updates.
- Catalog synchronization status is surfaced in the Bulk discount updates workspace and Home readiness status.
5. Promotion model
The Promotions hub combines scheduled sales and Shopify discounts into a merchant-oriented lifecycle view.
| Bucket | Meaning |
|---|---|
| Needs attention | A promotion has a failure/partial state or another condition requiring merchant review. |
| Live now | The promotion is currently active. |
| Coming up | The promotion is scheduled to start later. |
| Drafts | Saved work that has not been launched. |
| Recently ended | Completed or cancelled promotion records. |
The hub offers three primary creation paths:
- Run a scheduled sale.
- Create a discount code.
- Create an automatic offer.
6. Scheduled sale reference
A scheduled sale coordinates managed selling-price changes with optional Shopify discounts.
| Field / choice | Behavior |
|---|---|
| Sale name | Merchant-facing internal label for the campaign. |
| Starts / Ends | Required schedule timestamps. |
| Discount percentage | Percentage off Compare-at price; valid campaign input is greater than 0 and up to 100. |
| All eligible products | Targets eligible indexed variants. The builder describes a maximum of 2,500 variants for this scope. |
| Collections | Targets selected Shopify collections. Collection membership is snapshotted when the draft is saved; the picker can expose the first 250 collections. |
| Specific SKUs | Accepts SKUs; Shopify variant IDs are supported for advanced use. |
| Linked discount codes | Optional Shopify code discounts coordinated with the sale. |
| Linked automatic discounts | Optional Shopify automatic discounts coordinated with the sale. |
| Rollback behavior | Restore original discount levels (recommended) or keep the sale discount. |
| Internal notes | Optional merchant/team notes. |
Campaign lifecycle actions
- Save sale draft: creates the draft without launching.
- Check sale: runs preflight for Draft/Ready campaigns.
- Start sale: starts a Ready campaign when offered.
- Schedule sale: schedules a Ready campaign that has a start time.
- Cancel: available for Draft/Ready/Scheduled states.
- Retry safely: available for failure/partial states when recovery is supported.
7. Discount code and automatic-offer reference
DiscountIQ provides dedicated code and automatic discount workspaces. The app reads and manages supported Shopify discount types and preserves unsupported/unknown aspects when safe editing cannot be guaranteed.
- Basic percentage/amount discount mechanics where supported by the Shopify discount type.
- Free-shipping and Buy X Get Y structures in supported edit paths.
- Product, variant, collection, or all-item targeting where supported.
- Minimum subtotal or minimum quantity requirements where supported.
- Customer eligibility: all customers, customer segments, or specific customers where supported.
- Combination settings for product, order, and shipping discounts.
- Specific-customer lookup by merchant-entered email addresses and/or phone numbers.
8. Bulk discount update reference
Bulk discount updates change Shopify selling prices for selected eligible variants. The Compare-at value remains unchanged and serves as the reference for the requested percentage discount.
| Stage | Details |
|---|---|
| Select | Select catalog variants or add variants through the SKU import workflow. |
| Open review | Click Update discounts for the current selection. |
| Set percentage | Preset choices: 5%, 10%, 15%, 20%; custom input supports 0–100 in the review component. |
| Preview | Shows Compare-at, current selling price, new selling price, and per-row movement. |
| Review counts | Will update, unchanged, skipped, variants changing, and total absolute selling-price movement. |
| Preflight | Run Promotion Preflight; applying remains blocked until preflight allows it. |
| Apply | Publishes the managed price updates to Shopify. |
| History | Managed batches appear in Price Change History. |
The Bulk discount updates page also exposes:
- Catalog Sync Status
- Export menu and segment counts
- Price Drift Review
- Price Change History
- Catalog filters and pagination
9. Preflight and safety model
DiscountIQ uses a preflight-first model for managed pricing changes and scheduled sales. The goal is to surface conditions that could make the resulting promotion differ from what the merchant intends.
- Catalog freshness
- Compare-at price validity
- Margin safeguards
- Discount conflicts
- Unexpected managed price changes / drift
10. Issues, conflicts, margin protection, and price drift
Issues translates monitoring signals into merchant actions.
| Tool | Purpose |
|---|---|
| Alerts | Open alerts, including high/critical conditions. |
| Discount combinations | Identify promotions that overlap or cannot combine as expected. |
| Margin protection | Configure/review minimum margin safeguards applied to managed price changes. |
| Unexpected price changes | Review managed selling prices that changed outside DiscountIQ. |
Home and Issues prioritize items needing merchant decisions. High-priority issues should be reviewed before launching additional promotions.
11. Coupon performance analytics
The Performance workspace analyzes Shopify coupon activity over a selected order date range.
Range and grouping
- Preset ranges: 7 days, 30 days, 60 days.
- Custom start/end date range.
- Daily or weekly trend grouping.
Primary metrics
- Coupon revenue
- Coupon order count
- Redemption rate (share of orders using a coupon)
- Coupon AOV
- Active code count
- Active codes with zero redemptions in the selected range
Additional views
- Best coupon in range
- Daily/weekly coupon revenue trend
- Channel distribution
- Code-level performance table
- Anti-abuse signals
Anti-abuse signals
Current heuristics can flag repeat-customer concentration, bursts of redemptions within an hour, and elevated refund/cancellation rates. These signals are informational and require merchant review.
12. Activity and audit history
Activity provides a searchable audit timeline with newest events first. It is designed to answer what changed, who initiated it, and what before/after values were involved.
- Categories: All, Price updates, Discounts, Issues, System.
- Search terms can target a promotion, product, actor, or event.
- Events group by day and show time, category, summary, and actor.
- Before/after changes can be expanded when recorded.
- Pagination supports 25 or 50 rows per page.
13. Customer data and privacy behavior
DiscountIQ processes Shopify merchant/store data and a limited set of customer/order data required by current features.
- Coupon performance can process recent order details such as creation time, financial/cancellation status, discount codes, order value, currency, sales channel, and Shopify customer identifier.
- Specific-customer discount targeting can process customer email addresses and phone numbers to locate Shopify customer IDs and to display an existing targeted selection.
- Customer names and postal addresses are not required by the current customer-targeting implementation.
- Raw customer/order analytics data is designed to be temporary; current coupon analytics uses an in-memory cache with a short expiry rather than persisting raw customer/order profiles in the application database.
- Shopify mandatory privacy webhooks are supported for customer data request/redaction and shop redaction.
14. Operational limits and expected behavior
| Item | Current behavior / limit |
|---|---|
| Store currency | One Shopify store currency is used for current display/configuration; no FX conversion. |
| Bulk custom discount input | Review UI accepts 0–100%; campaign builder requires a positive value up to 100%. |
| Scheduled sale — all eligible | Builder text states up to 2,500 eligible variants. |
| Collection picker | Builder can show the first 250 collections if Shopify returns more. |
| Coupon analytics order range | UI warns when more than 5,000 orders are present and metrics use the first 5,000 returned for the load. |
| Analytics cache | Recent order analytics can be served from a short-lived cache while a refresh occurs. |
| Discount editing | Field availability depends on the underlying Shopify discount type and what DiscountIQ can safely normalize/edit. |
| Subscription | Paid functionality requires an active Shopify-recognized app subscription. |
15. Troubleshooting reference
| Problem | Recommended action |
|---|---|
| App redirects to pricing | The store does not currently have an active Shopify-recognized subscription. Complete plan selection in Shopify Admin. |
| Setup will not accept currency | Use the currency configured in Shopify. If Shopify detected a currency, DiscountIQ will reject a different choice. |
| Catalog status is failed/stale | Allow catalog sync to complete or retry the relevant operation before launching a major promotion. |
| Selected variant does not change | Check eligibility, Compare-at price validity, current value, and any preflight skip/block reason. |
| Preflight blocks publish | Open the blocking issue and resolve margin, conflict, catalog, or drift conditions. |
| Promotion is Partial/Failed | Open Promotions > Needs attention and use Retry safely when available. |
| Analytics show no date-range order metrics | Check order permissions and ensure the range contains orders; lifetime Shopify coupon totals may still be shown. |
| Manage plan appears but pricing does not open | Click the explicit Manage plan in Shopify link/button to perform the top-level Shopify navigation. |
| Unexpected price drift | Open Issues or Bulk discount updates > Price Drift Review and compare the managed value to Shopify's current value. |
16. Support and legal resources
For support, include the Shopify store domain, feature/workflow, expected behavior, actual behavior, and an exact error message or screenshot when available. Do not email passwords, API secrets, client secrets, or other credentials.