Reward your best customers with automatic tier-based discounts.
Codem Rewards Engine turns one-time shoppers into loyal customers with automated tier assignment, birthday rewards, exclusive campaigns, and tier-locked products — all running natively inside Shopify.
Preconditions
Before installing Codem Rewards Engine, please confirm your store meets the following requirements. The app is designed to work natively with Shopify and depends on a few standard features being enabled.
- Customer accounts must be enabled — tier assignment is calculated per customer and requires shoppers to be logged in for discounts to be applied automatically.
- Shopify Flow must be installable — the app uses Shopify Flow to track orders and recalculate tiers. If Flow is not already installed, the app will prompt you to install it on first use. Available on all current Shopify plans.
- Theme app embeds must be supported — the app uses theme app extensions to display tier discounts and campaign banners. Compatible with all Online Store 2.0 themes (Dawn and similar).
Customer order data is the foundation of automatic tier assignment. We recommend enabling customer accounts and ensuring your checkout captures customer email at minimum, before installing the app.
1. Initial Setup
Getting Codem Rewards Engine running on your store takes about 10 minutes. The setup is split across three steps: installing the app, enabling the Shopify Flow workflows, and activating the theme app embed.
Step 1 — Install the app
- Click Install on Shopify from this page (or from the Shopify App Store).
- Approve the requested permissions. Your 30-day free trial begins automatically — no payment required.
- The app opens its admin dashboard inside Shopify Admin. You're now ready to configure your first tiers.
Step 2 — Set up Shopify Flow
Tier assignment and order tracking run through Shopify Flow. The app handles most of this for you, but Flow must be installed and the workflow templates enabled.
- Inside the app admin, go to Customer Tiers.
- Click Open Shopify Flow. If Flow is not installed, you'll be prompted to install it.
- Enable the following Seven workflows:
- Order Tracking & Tier Assignment — runs when a new order is placed
- Order Paid — Updates the order record with correct order status
- Order Cancelled — clears amounts when an order is cancelled
- Refund Created — adjusts tier-eligible spend after refunds
- Order Edited — updates totals when orders are modified
- Bulk Customer Sync (Midnight) — recalculates all customer tiers daily
- Queue Processor — processes tier updates from the daily sync
Each workflow keeps your tier data accurate. Tier assignment isn't just about new orders — it must also reflect refunds, cancellations, and edits. The daily sync acts as a safety net to catch anything that slipped through.
Step 3 — Enable the theme app embed
The app embed handles displaying tier access restrictions and campaign banners on your storefront.
- From the app admin, click Enable Theme App Embed. This opens the Shopify theme editor.
- Toggle on both Codem Rewards Engine app embeds under App Embeds (Campaign Banner and Access Restrictions).
- Save the theme.
2. Storefront Customization
A few small additions to your theme give customers visibility into their tier, their discounts, and let them add their birthday to unlock birthday rewards.
Theme app extensions
The app installs the following theme extensions automatically when you enable the embed:
- Tier campaign banner — displays the active campaign banner at the top of the storefront when the customer's tier matches.
- Access restrictions — Hides the product, hide the add to cart button and block the add to cart button as per restriction rules .
Customer account birthday field
For the Birthday Month Discount to work, customers need a way to enter their date of birth. Codem Rewards Engine provides a Birthday block, built as a Customer Account UI extension, that can be added to your customer account page.
- We have to add the birthday block to the accounts page of customer based on the customer accounts using by the store. To get the information about adding the block please refer to the video added in the birthday discount page based on the customer accounts.
- The format of the date entered by the customer is YYYY-MM-DD
- Once a customer saves their birthday, it cannot be edited again — this prevents abuse of the birthday discount.
Codem Rewards Engine works with all Online Store 2.0 themes. Compare-price display uses configurable CSS class selectors so it can be adapted to themes that use non-standard class names. {{SUPPORTED_THEMES_LIST}}
3. Features
Codem Rewards Engine is built around six core capabilities. Each is fully configurable from the app admin and works on its own — enable only what you need.
Automated Tier Assignment
Automatically place customers into tiers based on their spend.
How it works
You define tiers (e.g. Bronze, Silver, Gold, Platinum) with spend thresholds. The app tracks each customer's order history and assigns the correct tier based on their total spend within a configurable time window.
What you can configure
- Up to 10 tiers per store
- Tier name, minimum spend, maximum spend, and status (active / inactive) for each tier
- Order duration for the spend calculation (e.g. last 30 days, 90 days, 6 months, 1 year, or all-time)
- The merchant can remove an inactive tier if they no longer need it.
How tier assignment is triggered
- When a new order is placed (Shopify Flow)
- When an existing order is paid, cancelled, refunded, or edited — this updates the order history log only, and does not directly trigger a tier reassignment
- Once per day, every customer's tier is recalculated during the midnight sync, using their order history log — this is what applies any changes from paid, cancelled, refunded, or edited orders
Customer's existing spend: $800
Merchant tier config: Silver ≥ $500, Gold ≥ $1,000
New order placed: $300 → total = $1,100
Result: Customer is automatically promoted from Silver to Gold.
Daily reconciliation
Every night, the app runs a two-step sync to guarantee all customer tiers are correct:
- Midnight Bulk Sync — pulls every customer from Shopify and queues them for processing.
- Queue Processor — runs in batches every 10 minutes, recalculates each customer's spend, and updates their tier metafield.
Every night, all customers are reprocessed from the beginning using their order history. This automatically fixes any outdated customer tier, changes to orders such as edits, refunds, or cancellations, manually incorrect tier assignments, and updates to tier thresholds made by the merchant.
Tier-Based Automatic Discount
Apply discounts automatically based on customer tier — shown across the entire store.
How it works
Each tier can have its own discount. The discount is applied automatically at checkout through a Shopify Discount Function. No coupon codes, no manual steps.
What you can configure
- Discount type — percentage or fixed amount
- Discount value — e.g. 10%, $20
- Status — active or inactive per tier
- Exclusions — exclude specific products or collections from receiving the discount
Combining with other discounts
Tier discounts use Shopify's native Discount Function, which means:
- They stack correctly with manually-issued discount codes (subject to your discount combination settings).
- When a Birthday Discount is also eligible, the system applies whichever discount is higher (see Birthday Month Discount below).
Customer tier: Gold
Gold tier discount: 15%
Product price: $100
Cart and checkout total reflect the 15% discount automatically.
Birthday Month Discount
Reward customers during their birthday month — a personal touch that builds loyalty.
How it works
Customers add their date of birth to their account once. Based on their birthday month/date/weeks, a special birthday discount is automatically applied to every order they place. The discount is evaluated based on the store's time zone.
What you can configure
- Discount title, type, and value (percentage or fixed)
- Validity window — date, week, or month
- Excluded tiers — for example, if you only want this for entry-level customers, exclude Platinum
- Excluded products and collections
- Active / inactive toggle
- Date of Birth format — displayed as YYYY-MM-DD (does not currently match your store's regional date format settings)
Priority rules
If a customer is eligible for both their tier discount and a birthday discount on the same order, the higher discount wins. The system never stacks both — this protects your margin while still feeling generous.
Customer: Gold tier, DOB July 15
Gold tier discount: 5% • Birthday discount: 10%
Customer logs in on July 8: 10% birthday discount applies to every order in July.
Customer logs in on August 1: Back to 5% Gold tier discount.
Once a customer saves their date of birth, it locks. This prevents customers from changing their birthday repeatedly to claim the discount more than once a year.
Tier-Based Purchase Restriction
Lock products or collections to specific tiers — perfect for VIP-only access.
How it works
You decide which tiers can purchase which products. Customers below the required tier see one of three behaviours — and you control the messaging.
Three restriction behaviours
| Behaviour | What the customer sees | Best for |
|---|---|---|
| Hide Product | Product is completely removed from listings and PDP. Direct URL shows a custom message. | Exclusive launches, VIP-only collections |
| Hide Add to Cart | Product is visible but the Add to Cart button is replaced with a custom message. | Teasing upgrades — "Reach Gold tier to unlock" |
| Disable Add to Cart | On all pages except the Product Detail Page (PDP), a tooltip is displayed. On the PDP, a message is displayed instead. | Most visible — encourages upgrades through clear messaging |
What you can configure
- Product-level rules — Pick specific products and the tiers which restricts the customers of that tier to buy them.
- Category-level rules — apply restrictions to entire collections
- Guest tier — Choose which tier guest (logged-out) customers or new users who doesn’t make any orders are treated as
- Custom messages — separate copy for each of the three behaviours
Collection: Limited Edition
Allowed tiers: Gold, Platinum
Behaviour: Hide Product
Bronze and Silver customers never see Limited Edition items. Gold and Platinum see them as normal.
Tier-Based Campaign Banner & Exclusive Page
Run time-limited campaigns visible only to specific tiers.
How it works
Create promotional campaigns that appear as a banner at the top of your store — but only for the tier you choose, during the time window you set. Clicking the banner takes the customer to a dedicated campaign page showing the products selected by the merchant for the campaign.
What you can configure
- Eligible tier — only one tier per campaign
- Banner title and body text
- Banner style — background colour, text colour, font size, font family
- Start & end date/time — automatically respects your store's time zone
- Destination collection — the page customers land on when they click
- Status — active or inactive
- Remove an inactive tier if you no longer need it
Automatic scheduling
You don't need to manually publish or unpublish anything. The app uses scheduled tasks to:
- Show the banner exactly at the start time
- Publish the associated collection at the start time
- Hide the banner exactly at the end time
- Unpublish the collection at the end time
- Mark the campaign as Expired
You can create as many campaigns as you like, but up to 5 active campaigns per tier and 10 inactive campagin per tier are supported, provided their schedules do not overlap. This keeps your storefront focused.Merchants can delete inactive campaigns if they are no longer needed.
Campaign: Gold Exclusive Spring Sale
Tier: Gold • Active: March 1, 10:00 AM → March 10, 11:59 PM
Scenario: Gold customer logs in March 5 → sees banner, clicks → lands on a Gold-only sale page. Silver customer logs in March 5 → sees no banner. Gold customer logs in March 12 → no banner, campaign expired.
Global Tier Calculation Settings
Centralised rules that control how customer spend is measured everywhere.
Three switches affect every tier calculation across the app — for both real-time order processing and the daily bulk sync.
| Setting | What it does |
|---|---|
| Include Taxes | When on, tax is counted toward customer spend. When off, only the subtotal counts. |
| Include Shipping | When on, shipping charges count toward spend. When off, only product spend counts. |
| Allow Tier Downgrade | When on, customers can move down to a lower tier if their recent spend drops. |
Settings: Include Taxes ON, Include Shipping OFF, Allow Downgrade OFF
Customer spend drops from $12,000 to $8,000.
Result: Customer remains in the higher tier because downgrade is disabled.
4. How Tier Calculation Works
Understanding the math behind tier assignment helps you configure thresholds that match how your business actually grows customer value.
The spend formula
For each customer, the system calculates:
Spend = Σ (Order Subtotal [+ Tax if enabled] [+ Shipping if enabled])
across all orders within the configured Order Duration window
Order duration window
The window determines how far back the system looks when summing spend. Common choices:
- 30 days — most aggressive, rewards recent behaviour
- 90 days — quarterly view, balances recency and retention
- 6 or 12 months — recognises long-term loyalty
- All-time — pure lifetime value, never resets
Tier movement
Order events (paid, cancelled, refunded, edited) update the customer's order history log, and every customer's tier is recalculated once nightly during the midnight sync using that log. A new order placed through Shopify Flow can trigger an immediate reassignment; other order changes are reflected the next time the nightly sync runs.
What happens when a customer changes tier
- Their
tier_idmetafield is updated immediately. - The next page they load reflects their new tier's discount across the store.
- If a Campaign Banner is active for their new tier, it appears for them.
- Any Purchase Restrictions that previously hide products will adjust visibility on the next page load
5. Free Trial
Every install comes with a 30-day free trial. No credit card required, no setup fee, no commitments.
What's included in the trial
The free trial gives you access to every feature across all plans. This is deliberate — we want you to fully evaluate Codem Rewards Engine before deciding which plan fits your business.
| Feature | Trial Access |
|---|---|
| Automated Tier Assignment | ✓ |
| Tier-Based Discount | ✓ |
| Birthday Month Discount | ✓ |
| Purchase Restriction Controls | ✓ |
| Campaign Banners | ✓ |
| Analytics Dashboard | ✓ |
Trial timeline
| When | What happens |
|---|---|
| Day 1 (install) | Welcome banner appears in the app showing days remaining |
| Day 26 | Urgent warning banner appears in-app, reminder email sent |
| Day 30 (end) | Full-screen paywall appears, features blocked, email sent |
After the trial
If the trial expires without a paid plan selected, your current plan is set to null and your tier configuration, discount rules, and campaign settings (stored as Metafields and Metaobjects) are deleted. We recommend selecting a paid plan before your trial period ends to avoid losing your configuration.
Reinstalls don't reset the trial
If you uninstall and later reinstall the app, your original trial dates are preserved. Days remaining continue from where you left off. This prevents reinstall loops and keeps the trial fair.
Need more time?
If 30 days isn't enough to fully evaluate the app, contact us and we'll review your case. We routinely grant extensions for stores still in proof-of-concept.
Choose the plan that fits your store
Every plan includes automated tier assignment and tier-based discounts. Upgrade as you grow.
- ✓ Dashboard
- ✓ Tier Assignment & Workflow
- ✓ Tier Based Group Discount
- ✓ Global Settings
- ✓ Birthday Discount
- × Tier Restriction
- × Email Notification
- × Allow downgrade
- × Campaign Banners
- ✓ Dashboard
- ✓ Tier Assignment & Workflow
- ✓ Tier Based Group Discount
- ✓ Global Settings
- ✓ Birthday Discount
- ✓ Tier Restriction
- × Allow downgrade
- × Campaign Banner
- ✓ Dashboard
- ✓ Tier Assignment & Workflow
- ✓ Tier Based Group Discount
- ✓ Global Settings
- ✓ Birthday Discount
- ✓ Tier Restriction
- ✓ Email Notification
- ✓ Allow downgrade
- ✓ Campaign Banner
7. FAQ & Support
Do customers need accounts for this to work?
Yes. Tier assignment is calculated per customer and requires login. Guests can still shop normally and can be treated as a configurable default tier (typically the lowest one) for visibility rules.
Do my customers see discount codes at checkout?
No. Tier discounts are applied automatically using Shopify's Discount Function — there are no codes to enter. The discount appears as a line item in the cart and checkout.
Can I run a tier discount and a regular discount code at the same time?
Yes, subject to your discount combinations settings in Shopify. Tier discounts are order-level discounts and can stack with order or shipping discounts when configured to do so.
What happens if a customer returns an order?
The system automatically adjusts their tier-eligible spend when a refund is processed. If the refund causes their spend to drop below their current tier's threshold and downgrades are enabled in Global Settings, their tier will move down accordingly.
How many tiers can I create?
Merchants can use all 10 tiers without restrictions.
Does the app work with my theme?
Codem Rewards Engine works with all Online Store 2.0 themes. The compare-price display uses configurable CSS selectors so it can be adapted to any theme. {{SUPPORTED_THEMES_LIST}}
Is the app GDPR compliant?
Yes. The app handles the standard Shopify privacy webhooks: customers/data_request, customers/redact, and shop/redact. When a customer requests data deletion or your store uninstalls the app, all related customer data is removed from our systems within the required window.
What data is stored outside Shopify?
Order history (used for tier calculation), error logs, and store-level configuration are stored in a managed Firebase database. All other configuration (tier rules, discount rules, campaign settings) is stored as Shopify Metaobjects inside your store.
How do I cancel?
Uninstall the app from your Shopify admin. Billing stops immediately. All your data is removed from our systems within 48 hours of uninstall.

