Smile.io + Shopify Combined Listings: The Color Completionist Loyalty Playbook (2026)

Shopify Smile loyalty combined listings is the unwritten loyalty playbook for stores that split colors, sizes, or scents into separate products. The merchant pain is universal: a customer buys the cream, navy, and forest hoodie over 6 months. Each one was its own Shopify product (different URL, different SEO, different inventory). Smile.io rewarded each purchase as a standalone order. The customer earned the same points they would have earned for buying any random three products. They just collected the entire colorway set. They deserve completionist points. They didn’t get any. This guide fixes that with 3 integration paths.
Quick framing. Smile.io is the dominant loyalty app on Shopify (Built for Shopify badge, 4.9 stars across 4,188 reviews, in market since December 2014). It natively integrates with Klaviyo, Loox, Recharge, Gorgias, and Shopify Flow, which means it sits cleanly in the same marketing stack we covered in our Klaviyo + combined listings guide and Loox + combined listings guide. Rubik Combined Listings is what we ship for grouping separate Shopify products as visual variants. Together they enable the Color Completionist mechanic: reward customers for collecting the set across grouped colorway products. Three setup paths cover every Smile plan and merchant skill level.
In this guide
- Why variant-aware loyalty matters
- Why Smile.io is the dominant loyalty app
- The variant-level loyalty problem
- Path 1: Color Completionist via Shopify Flow (Essential plan)
- Path 2: VIP Tier x Capsule Drop via Klaviyo sync (Growth plan)
- Path 3: Swatch Engagement Activity via custom JS (Plus / Enterprise)
- The full marketing trifecta: Smile + Klaviyo + Loox + Rubik
- Use cases by vertical
- Honest limitations and gotchas
- Common mistakes to avoid
- FAQ
Why variant-aware loyalty matters
Generic loyalty programs reward dollars spent. That’s table stakes. The brands actually winning at retention reward behaviors that signal deep brand affinity. Buying 3 colorways of the same hoodie is a deeper signal than buying 3 random items. The customer is not just spending money; they’re collecting your product. They’re identifying with your design language. They’re the kind of customer who tells friends “I have this in 4 colors”. That’s a different psychological commitment, and your loyalty program should recognize it.
Five things variant-aware loyalty makes possible that flat point programs don’t:
- Color Completionist tiers. Award bonus points or release free items when a customer collects a target number of colorways from the same product family.
- Capsule launch early access. When you drop a new colorway, your highest-converting send is the customers who already own the most colors in that family. Loyalty data identifies them; Klaviyo sends to them.
- VIP-only colorways. Reserve exclusive colors (limited drops, special editions) for customers above a Smile VIP tier. Pure retention play; no discount required.
- Cross-color referral incentives. Customer with 3+ colorways gets bonus referral rewards because they’re already a brand evangelist. Small budget, high signal.
- Group-level swatch exploration points. Reward customers for engaging with the swatch picker (clicking colors, browsing the family) on Plus / Enterprise tiers via custom Smile activities.
Honest take: most loyalty implementations on Shopify barely pass step 1 (rewarding dollars spent). Step 2 (rewarding repeat purchases of the same product family) requires a grouping concept that vanilla Shopify doesn’t have. That’s where the Combined Listings layer becomes load-bearing.
Why Smile.io is the dominant loyalty app
The Shopify loyalty market has many entrants (LoyaltyLion, Yotpo Loyalty / Swell, Stamped Loyalty, Rivo, Marsello). Smile.io is the BFS-certified leader for SMB and mid-market: 4.9 stars across 4,188 reviews on the App Store, in market since December 2014, native integrations with the apps most Shopify brands already run (Klaviyo, Loox, Recharge, Gorgias, Judge.me, Mailchimp, Shopify Flow, Shopify POS, Shopify Plus checkout extensions).

What makes Smile interesting from our perspective (we ship apps in this ecosystem and pay attention to who’s adjacent):
- Free plan is genuinely useful. 200 monthly orders, full points + rewards + referrals, 15+ earn/redeem ways, multi-language. Most loyalty apps gate the basics behind paid tiers.
- Native Shopify Flow trigger from Essential plan. $15/mo enables the workflow primitive that makes Color Completionist mechanics possible without writing custom code.
- One-way sync to Klaviyo. 5 profile properties (Points Balance, Referral URL, State, VIP Tier Name, VIP Tier ID) and 8 events (Points Earned on Order, VIP Tier Achieved, Birthday Reward Issued, Referral Completed, etc.) flow directly into Klaviyo profiles. Lets you build email segments combining Smile loyalty data with Rubik group behavior.
- JavaScript SDK on every page.
Smile.customerPointsWallet.get(),Smile.activities.create(),SmileUI.openPanel(). Lightweight, well-documented, lets you trigger UI moments from any DOM event. Custom activity types (the part needed for swatch-engagement points) are Plus / Enterprise only; the rest works on every plan. - VIP tiers from Growth plan. $199/mo enables tiered programs (Bronze / Silver / Gold) which sync to Klaviyo as profile properties. This is the layer that makes capsule-launch early-access targeting work cleanly.
Pricing summary: Free up to 200 monthly orders, Essential $15/mo (500 orders, Shopify Flow trigger, free product rewards), Standard $79/mo (1,000 orders, bonus events, segments, CLV reports, embedded points on PDP), Growth $199/mo (2,500 orders + $20 per additional 100, VIP tiers, redeem-at-checkout for Plus, points expiry, 25+ reports). Plus / Enterprise tiers add custom Smile activity types and deeper API access.
The variant-level loyalty problem
Here’s why this guide exists. Apparel, jewelry, beauty, and home brands frequently split colorways into separate Shopify products for legitimate reasons: separate URLs (better SEO, deeper indexing), separate inventory records (different warehouses, different vendors, different lead times), separate photoshoots (each colorway gets its own lifestyle imagery), separate metadata (alt text, color-specific descriptions). Splitting works. Until you try to layer loyalty on top.
Smile.io’s earning rules are product-level or order-level. There’s no native rule that says “award 200 bonus points if the customer’s lifetime orders include 3+ products from the same Rubik group”. That rule needs to be built. Smile gives you three places to build it depending on your plan and budget:
| Path | Smile plan needed | Build complexity | What you can do |
|---|---|---|---|
| Path 1: Shopify Flow + Rubik metafield | Essential ($15/mo) | Low (visual workflow builder) | Reward bonus points when an order or lifetime purchase pattern matches a Rubik group |
| Path 2: VIP Tier sync to Klaviyo | Growth ($199/mo) for VIP tiers | Medium (segment + flow setup) | Capsule launch early access, tier-gated colorways, color completionist email targeting |
| Path 3: Custom Smile activity from JS | Plus / Enterprise (custom activity types) | High (10-20 lines of JS) | Award discovery points when customers click swatches, explore color families, engage with PDP variants |
You don’t need all three. Pick the path that matches your Smile plan and the merchant problem you’re actually solving. Most apparel brands start with Path 1 (Color Completionist points), add Path 2 (VIP-tier capsule drops) as they scale, and reserve Path 3 (Plus/Enterprise) for the deepest customer behavior targeting.

Path 1: Color Completionist via Shopify Flow (Essential plan)
The cleanest no-code path. Use Shopify Flow to detect when a customer has bought multiple colorways from the same Rubik Combined Listings group, then call Smile’s “Award Points” action to issue bonus points. Setup takes about 30 minutes for the first group, faster after that.
How it works conceptually: Each Rubik product group lives in Shopify as a metaobject ($app:rubik_product_group), and each product carries a metafield product.metafields.$app.rubik_product_groups pointing to its group(s). When a customer places an order, Shopify Flow can read the line items, check each product’s group metafield, count how many distinct groups the customer’s lifetime orders span, and trigger Smile’s bonus point action when the threshold is hit.
The setup, step by step:
- Set up your Rubik Combined Listings group. In the Rubik admin, group your 8 colorway products with swatches. Each grouped product now carries the
product.metafields.$app.rubik_product_groupsmetafield reference automatically. - Install Shopify Flow. Free Shopify app from the App Store. Install on your store.
- Create a new Flow workflow. Trigger: Order created. Add Smile.io as a connected app (Smile Essential plan and up exposes the Flow trigger and actions).
- Add a condition. Filter line items where the product’s
rubik_product_groupsmetafield contains a specific group GID (your Hoodie group, for example). Count the number of unique products in that group across the customer’s lifetime orders. Threshold: 3 or more. - Add the Smile action. Action: Award points to customer. Specify the points amount (e.g., 500 bonus points for completing the colorway set). Optionally add a custom note so the customer sees “Color Completionist Bonus” in their account.
- Test the workflow. Place a test order with the third grouped colorway from a customer who already has the first two. Verify Smile awards the bonus points and the customer profile shows the activity.
For brands that prefer to award per-order completionist points (e.g., 100 bonus points for any single order containing 2+ colorways from the same group), the Flow logic simplifies: condition checks the current order’s line items only, no lifetime lookup needed. Useful for “buy 2, get bonus” promotions during BFCM or capsule launches.

Path 2: VIP Tier x Capsule Drop via Klaviyo sync (Growth plan)
Once you have Smile Growth ($199/mo) running VIP tiers, the loyalty layer fuses with the email segmentation layer we set up in the Klaviyo guide. Smile syncs 5 profile properties to every Klaviyo customer profile: Smile Points Balance, Smile Referral URL, Smile State, Smile VIP Tier Name, Smile VIP Tier ID. Plus 8 events: Points Earned on Order, Points Redeemed, Points Expiring, VIP Tier Achieved, Referral Started, Referral Completed, Reward Expiring, Birthday Reward Issued.
This is what enables capsule launch early-access targeting that uses BOTH loyalty data and combined-listings behavior. Three concrete segments to build:
VIP Color Completionists
Klaviyo segment definition: Smile VIP Tier Name equals “Gold” AND has placed orders for products in the Hoodie Group product ID list at least 3 times. These are your most valuable customers AND they’ve collected at least 3 colorways. When you launch a new colorway, send these customers a “First access for our top color collectors” email 48 hours before public launch.
Tier Climbers Watching New Colors
Klaviyo segment definition: Smile Points Balance is between 80% and 99% of next tier threshold AND has Clicked Swatch event for any product in [target color family] at least 2 times in the last 30 days. These customers are about to hit a tier upgrade and they’re showing color interest. Send “spend X more to reach the next tier” with a CTA to the colorway they’ve been browsing. Double conversion signal.
Reactivation by Tier + Color Affinity
Klaviyo segment definition: Smile VIP Tier Name equals “Silver” OR “Gold” AND has not Placed Order in the last 90 days AND historical orders include products from the Hoodie Group at least 2 times. High-tier dormant customers who used to collect colorways. Send a “we miss you” with the latest 2 colorways in the family they used to buy from, plus a reminder of how many points they’d lose if their account goes inactive.

Path 3: Swatch Engagement Activity via custom JS (Plus / Enterprise)
For Smile Plus or Enterprise plans, custom Smile activity types open up the deepest behavioral targeting. The Rubik Combined Listings widget fires rcl_swatch_clicked on every swatch click with 19 properties on event.detail. Listen for that event and call Smile.activities.create() to record the swatch exploration as a custom activity. Configure that activity type in Smile admin to award discovery points (small amounts, capped daily, so it doesn’t become an exploit).
Snippet: Award discovery points for swatch engagement. Drop in your theme’s product page template (or Instant Page Builder’s custom code block). Requires Smile Plus / Enterprise for custom activity types AND a logged-in customer (Smile won’t track anonymous browsers).
<script>
window.addEventListener('rcl_swatch_clicked', function(event) {
var d = event.detail;
// d carries 19 properties from Rubik:
// optionValue, productId, productTitle, productUrl, productPrice,
// productAvailable, isCurrent, swatchType, context, viewport,
// position, groupOptionName, category, plus price/availability fields
// and a timestamp.
// Only award when the customer is logged in and Smile is initialized
if (typeof Smile !== 'undefined' && Smile.customer.isLoggedIn()) {
Smile.activities.create({
token: 'rubik_swatch_explored',
// distinct_id is set automatically from the logged-in customer
created_on_origin_at: new Date().toISOString()
});
}
});
</script>
Three notes. First: configure the rubik_swatch_explored activity type in your Smile admin (Plus / Enterprise plan) and set the points reward small (5-10 points) with a daily cap (e.g., max 50 points/day per customer). Otherwise the customer can spam clicks for points, which defeats the purpose. Second: Smile’s activity payload is intentionally minimal (token, distinct_id, timestamp) so you can’t pass the colorway name as metadata. The activity records “they explored a swatch”, not “they explored cream specifically”. For per-color tracking, layer this with the Klaviyo Clicked Swatch event from our Klaviyo guide. Third: this works ONLY on Smile Plus / Enterprise tiers; Free, Essential, Standard, and Growth plans don’t support custom activity types.

The full marketing trifecta: Smile + Klaviyo + Loox + Rubik
If you’ve followed the previous posts in this series, you’re now running the full DTC marketing stack on top of grouped products. Each layer feeds the next; each layer is independently useful; together they enable behavior nobody else in your category is doing.
| Layer | App | What it does for grouped products |
|---|---|---|
| Catalog grouping | Rubik Combined Listings | Groups separate products as visual variants with swatches on collection cards and PDPs. Real-time sync via Shopify metaobjects. |
| Reviews aggregation | Loox (with Product Groups) | Aggregates photo reviews and star ratings across grouped colorway products so each PDP shows the family’s full social proof. |
| Email segmentation | Klaviyo | Tracks Viewed Product + Clicked Swatch events with Rubik group metadata. Builds segments by color preference, group affinity, browse intent. |
| Loyalty + retention | Smile.io | Awards Color Completionist bonus points via Shopify Flow. Syncs VIP tier to Klaviyo for capsule-launch early access. Custom swatch engagement activities on Plus. |
The flywheel: Rubik groups the catalog; Loox makes social proof aggregate across the group; Klaviyo segments customers based on color and group behavior; Smile rewards the high-intent behaviors (completing the set, climbing tiers). Email and loyalty data flow back into segmentation. Six months in, you have a customer database that knows which Gold tier customers are 1 colorway away from completing the Hoodie group, and you can send them a personalized 200-point bonus offer to close the loop.
Use cases by vertical
Apparel: Hoodie color collector tier
The clearest case. A streetwear brand sells the same hoodie in 8 colorways, each as a separate product. Path 1 (Shopify Flow + Smile Award Points action) awards 500 bonus points whenever a customer’s lifetime orders include 3+ colorways from the Hoodie Rubik group. The customer hits “Color Completionist” status, sees a custom badge in their Smile account, and receives a Klaviyo email celebrating the milestone with a 4th colorway recommendation. Drives both retention and the 4th-colorway conversion in one motion.
Beauty: Shade family loyalty tiers
Beauty brands often split foundation, lipstick, or eyeshadow shades into separate products. Smile Path 1 awards points when a customer collects 3+ shades from the same Rubik group (the foundation family, the lipstick family). Path 2 layers VIP tiers: Gold tier customers get early access to new shades 24h before public release, especially valuable for limited shade drops where supply runs out fast.
Jewelry: Metal finish completion bonus
A jewelry brand sells the same ring or necklace in yellow gold, rose gold, white gold, and silver as separate products. Smile awards a “Metal Mastery” bonus when a customer collects 3 of the 4 metals. Combined with Smile referral points, the most engaged collectors become evangelists who refer friends to the same multi-metal product line. High-margin category, high-LTV customers, low marketing CAC.
Home goods: Multi-finish lamp completionists
A lighting brand sells the same pendant lamp in 6 finishes (brushed brass, polished chrome, matte black, copper, white, walnut). Smile rewards customers furnishing rooms in matched finishes. The Flow rule: 250 bonus points for 2 finishes, 500 for 3, 1000 for 4+. Naturally drives multi-room purchasing patterns that designer-customers already exhibit, recognizing them publicly through a tier system makes the behavior more deliberate.

Honest limitations and gotchas
Most integration posts pretend everything works. Here’s what doesn’t, so you don’t waste a week debugging:
- Smile has no native per-variant earning rule. The earning configuration UI is product-level or order-level. Per-variant logic must be built via Shopify Flow (Essential plan and up) or via the REST API
POST /points-transactionsendpoint from a custom backend. Flow is the practical answer for most stores. - Custom Smile activity types are Plus / Enterprise only. Path 3 (swatch engagement points) requires Smile Plus or Enterprise. Free, Essential, Standard, and Growth plans cannot register custom activity tokens. Don’t promise customers the swatch-engagement mechanic until you’ve confirmed your Smile tier supports it.
- Smile to Klaviyo sync is one-way. Smile pushes 5 profile properties + 8 events into Klaviyo. Klaviyo cannot push events or properties back into Smile. So you can’t have a Klaviyo flow trigger a Smile points action directly; you’d need a middleware (Zapier, Make, or a custom backend) calling Smile’s REST API.
- Smile doesn’t write Shopify customer tags by default. Smile state lives in Smile’s database and in Klaviyo (via the integration). To use Smile data in Shopify Flow conditions, you’ll typically reach back into Smile’s API or use the Klaviyo properties via a Klaviyo-Shopify customer tag sync.
- Activity payload is minimal. Smile’s
Smile.activities.create()accepts only token, distinct_id (auto-set), and timestamp. You cannot pass colorway name, product ID, or any custom metadata. For granular per-color tracking, use Klaviyo’s custom event tracking in parallel (the Clicked Swatch event with full Rubik metadata). - VIP tiers require Growth plan. $199/mo. If you’re on Standard ($79/mo), you don’t get VIP tier mechanics. Path 2 (VIP Tier x Capsule Drop) becomes viable only at the Growth tier and above.
- Anonymous browsers don’t accumulate Smile activity. Smile only records activities for logged-in or identified customers. The swatch engagement points snippet checks
Smile.customer.isLoggedIn()before firing for this exact reason. If your store has low signup rates, the engagement layer underperforms; fix the email capture before scaling Path 3.
Common mistakes to avoid
- Building Color Completionist points without testing the Flow logic. Shopify Flow conditions on metafield references are notoriously easy to misconfigure. Place test orders with 1, 2, and 3 colorways to verify the workflow fires only at the threshold you set.
- Awarding too many points for completionist behavior. Inflated point values devalue your reward currency. A reasonable rule of thumb: bonus points for completing a set should be 2-3x the points earned from a single product purchase, not 10x. Otherwise customers stop seeing standard purchases as worthwhile.
- Forgetting to celebrate the milestone in email. If Smile awards 500 bonus points but you never tell the customer “congrats on Color Completionist status”, the moment is wasted. Klaviyo flow triggered by the Smile
Points Earned on Orderevent with a custom note filter catches the celebration moment. - Setting custom activity points too high (Path 3). 5-10 points per swatch engagement with a daily cap. Higher and you’ll see point farming. Lower and the activity feels meaningless. Test with 5 points + 50/day cap, adjust based on actual customer behavior after 30 days.
- Using VIP tier names that don’t tell a story. “Bronze / Silver / Gold” is generic. “Founder / Loyalist / Collector” or category-specific tier names (e.g., “Friend / Insider / VIP” for fashion brands) drive more emotional commitment. Smile lets you customize tier names; use it.
- Not pairing Smile with Klaviyo. Smile’s UI for sending tier-update emails is functional but limited. The 5 properties + 8 events flowing into Klaviyo enable proper segmentation and email design. If you’re running both apps, build the integration; don’t run them in silos.
Pairing with Rubik Variant Images
Stores running combined listings with loyalty often also use Rubik Variant Images for in-product variant image filtering. The full PDP stack on a hoodie split into 8 colors, each with 3 sizes (S, M, L): Rubik Combined Listings groups the 8 colors visually with swatches. Rubik Variant Images filters the gallery so each color shows only its own photos. Loox aggregates photo reviews across the colorway family. Klaviyo segments customers by color preference and group affinity. Smile rewards Color Completionist behavior. Five layers, one clean PDP, zero overlap. The customer feels like the brand actually sees their behavior, because every layer is reading the same combined-listings spine.
Ready to wire it up
Free testing path: install Rubik Combined Listings (free for 5 groups) and Smile.io (free up to 200 monthly orders). Set up your first Rubik group, configure a basic Smile points program. Path 1 (Shopify Flow + Color Completionist points) needs Smile Essential ($15/mo) on top of the free tier. Path 2 (VIP Tier sync) needs Smile Growth ($199/mo). Recommended starting point for most apparel brands: Rubik Starter ($10/mo for 100 groups) + Smile Essential ($15/mo) = $25/mo total for a working Color Completionist setup.
See the live Rubik Combined Listings demo store, watch the setup tutorial, or read the getting started guide. Plan your variant counts per group with our free Shopify variant calculator; verify your swatch colors hold up against your theme background using the color contrast checker.
Frequently asked questions
Can Smile.io award different points based on which colorway a customer buys?
Not natively. Smile’s earning rules are product-level or order-level, with no per-variant configuration UI. To award different points per colorway, build a Shopify Flow workflow (Smile Essential plan and up) that reads the order’s line items, checks each product’s Rubik group metafield, and calls Smile’s “Award Points” action with the points amount per condition. This works for both per-order and lifetime-based logic.
Does Smile.io detect Color Completionist behavior on its own?
No. Smile has no native concept of grouped products. The Color Completionist mechanic requires Rubik Combined Listings to define the group (stored as a Shopify metaobject) and Shopify Flow to evaluate orders against the group. Smile receives the bonus point award via Flow’s “Award Points” action; it doesn’t compute the trigger itself.
Can a Klaviyo segment trigger a Smile.io points award?
Not directly. The Smile to Klaviyo sync is one-way (Smile pushes 5 profile properties + 8 events into Klaviyo, Klaviyo cannot push back). To trigger a Smile points action from a Klaviyo segment, use a middleware (Zapier, Make, or a custom backend) that listens for Klaviyo segment changes and calls Smile’s REST API POST /points-transactions endpoint to award points.
Will Smile widget conflict with Rubik’s swatch widget on the same product page?
No. Smile’s launcher is a fixed-position floating element; Rubik’s swatches are inline product page elements. Different DOM regions, different rendering contexts. Smile’s known coexistence concern is z-index conflicts with hero elements, not inline product page blocks. Both apps work cleanly on every Online Store 2.0 theme we’ve tested.
Do I need Shopify Plus to run Smile + Rubik Combined Listings?
No. Both apps work on every Shopify plan including Basic. Shopify Plus is only required for Shopify’s native Combined Listings feature (which Rubik Combined Listings replaces on non-Plus plans) and for Smile’s “redeem at checkout” feature. The Color Completionist mechanic in this guide works on Shopify Basic + Smile Essential ($15/mo) + Rubik Starter ($10/mo).
What’s the cheapest setup that enables Color Completionist points?
$25/month total: Rubik Combined Listings Starter ($10/mo, 100 product groups) + Smile.io Essential ($15/mo, 500 monthly orders, Shopify Flow trigger). Add Shopify Flow (free Shopify app) and you have everything needed to define groups, build the Flow workflow, and award bonus points for completionist behavior.
Can I pair Smile with both Klaviyo and Loox in the same stack?
Yes, all three apps integrate natively with each other. Smile syncs profile properties + events to Klaviyo. Loox integrates with Smile to award points for review submissions. Klaviyo segments can use Smile’s VIP tier data + Loox’s review activity in compound conditions. Together with Rubik Combined Listings as the catalog spine, you get the full DTC marketing trifecta: catalog grouping, social proof aggregation, behavioral segmentation, and loyalty rewards.
Related reading
- Klaviyo + Shopify combined listings: variant segmentation
- Loox + Shopify combined listings: review aggregation
- Shopify preorders for combined listings (with STOQ)
- Shopify combined listings on Instant Page Builder
- Rubik Combined Listings on Krown themes
- Combined listings explained (rubikify.com)
- Variant images FAQ (rubikvariantimages.com)