Skip to content
Projects
4 min read

Mike Sport Loyalty Revamp and CleverTap Migration

End-to-end redesign of Mike Sport's loyalty program (tiers, points, RFM segmentation) and its migration onto CleverTap, covering data architecture, event tracking specs, and a full set of engagement journeys.

Role
Data and CRM lead
Year
2026
Status
preview
loyaltyCRMmartechdata-migrationsegmentationCleverTap

Overview

Mike Sport Rewards is a three-tier loyalty program built around a "$1 spent = 1 point" earn rule and a rolling 12-month tier window. This project covers the full backbone behind that program: the data model and event taxonomy for CleverTap, the strategy for migrating tens of thousands of past customers into starting tiers, and a build guide for the launch engagement journeys (onboarding, tier lifecycle, redemption, points expiry, cart and browse abandonment, RFM-driven win-back, and birthday bonuses).

Problem

Mike Sport needed to move loyalty data and customer engagement onto CleverTap while the underlying systems were fragmented: the ERP (Navision/LS Retail) holds the true purchase and points ledger but cannot talk to CleverTap directly, there is no ERP-to-Shopify sync, and the mobile app is a WebView of the Shopify storefront rather than a separate native data source. On top of that, a large base of legacy customers needed to be placed into a starting tier on day one without either emptying out the top tier or unfairly discounting loyal, lower-basket shoppers (frequent buyers with small baskets versus big one-time spenders).

Approach

The work was split into three connected tracks:

  • Identity and data architecture: defined phone number as the single Identity key across Shopify, the app, the loyalty CMS, and CleverTap, with a documented "frontend as bridge" pattern (the storefront reads points/tier from a loyalty CMS read API on page load and writes them onto the CleverTap profile), since CleverTap never calculates points or tier itself.
  • Migration methodology: built and compared several tier-assignment methods on real order data (a pure spend leaderboard, literal "$1=1pt" readings, a recency-weighted spend model, and an RFM-based scoring method) and compared the resulting tier distributions side by side before recommending the RFM-based method as the fairest starting point.
  • Event and journey design: authored a canonical event map and data dictionary distinguishing Shopify-sourced behavioral events from CMS-sourced loyalty events and profile fields, then translated that into a step-by-step build guide for the launch journeys, with global settings (channel fallback order, frequency caps, consent checks, Do Not Disturb, employee exclusion).

Architecture

  • Identity strategy: phone number as the canonical Identity, merging anonymous browsing history into known profiles on login, with guest checkout flagged as an orphan-profile risk
  • Data flow: ERP (source of truth for points/tier) to Loyalty CMS read API to Shopify storefront/WebView app (bridge) to CleverTap, since there is no direct ERP-to-CleverTap or ERP-to-Shopify link
  • Profile schema: ms_-namespaced custom properties (tier, points balance, points earned in rolling 12 months, points to next tier, expiring amount/date, loyalty role, legacy member id) layered on top of Shopify's auto-synced fields (orders count, total spent, consent flags)
  • Event taxonomy: Shopify behavioral/commerce events (Product Viewed, Added To Cart, Checkout Started, Charged) versus CMS loyalty events (Points Earned, Points Redeemed, Tier Changed, Reward Applied, Points Expired) versus CleverTap system events, documented in a master event map with naming conventions
  • Segmentation: CleverTap's native RFM engine on the Charged event plus custom profile-based segments (tier, points-balance thresholds, near tier-up, downgrade risk, points expiring soon, employee suppression, WhatsApp reachability)
  • Journey orchestration: launch journeys grouped into onboarding, earning/level-up, tier lifecycle, redemption, points expiry, cart/browse/checkout abandonment, RFM-driven win-back, and occasion-based (birthday), with a documented three-batch build order tied to data readiness (Shopify only, then RFM, then CMS feed)

Tech stack

  • CleverTap (Web SDK, server-to-server upload API, Journeys, RFM/segmentation, Push/WhatsApp/SMS/Email channels)
  • Shopify (storefront, CleverTap Shopify app, webhooks for orders/customers)
  • Loyalty CMS (read API for points/tier/expiry, keyed by phone)
  • ERP: Navision / LS Retail (in-store source of truth, offline from CleverTap in this phase)
  • Excel/CSV-based migration analysis workbooks for tier-method comparison and RFM scoring

Engineering highlights

  • Ran several distinct tier-assignment methods (spend leaderboard, literal point-threshold readings, recency-weighted spend, and an RFM composite score) against the same real order dataset and quantified the customer distribution each method produced before recommending one, rather than picking a formula by intuition
  • Identified and documented a specific identity pitfall: the Shopify CleverTap app defaults Identity to the Shopify customer id, which would fragment web, app, and CMS data unless explicitly overridden to phone number
  • Specified a "frontend as bridge" integration pattern to work around the lack of an ERP-to-CleverTap connection, including the exact client-side calls (login identify, CMS fetch, profile push, local tier-change detection to synthesize a Tier Changed event)
  • Produced a full event and data dictionary distinguishing what is already live (Shopify auto events), what needs the CMS to build, and what is explicitly deferred to a later phase (in-store/ERP data), so downstream developers know exactly what to build versus what already works
  • Wrote plain-language store training material translating the point-earn/tier/redemption rules for non-technical retail staff, alongside the more technical developer-facing specs

Outcome

The migration analysis produced a recommended tier-assignment method (RFM composite scoring) with a concrete day-one tier distribution, and the journey build guide sequenced the launch journeys into three delivery batches so the Shopify-only journeys could go live before the CMS loyalty feed was ready. As of this writing, the specs and migration recommendation are finalized; full production rollout depends on the CMS team exposing the additional fields (tier, 12-month earned points, expiry date/amount, role) that the design calls for.

Want to dig deeper?

Ask my AI agent anything about how this was built, what tradeoffs I made, or how it could fit your team.

Ask my AI →