Member enrollment
How customers become loyalty members in Joy — the Membership enrollment card, its three modes, and the Exclude B2B filter.
Auto-enroll works on All plans. Customer opt-in, Manually assigned, and the Exclude B2B customers filter are available on Advanced and Ultimate plans.
Overview
Every customer in Joy has one of three types, and the type decides what they can do:
| Type | Earn points | Redeem rewards | See loyalty content |
|---|---|---|---|
| Member | ✅ | ✅ | ✅ Full widget, tiers, balance |
| Guest | Only if a program allows guest earning | ❌ | General program info only |
| Left program | ❌ | ❌ | ❌ Widget hidden |
Member enrollment is the process that turns a customer into a Member. You control it from a single card — Settings → General → Membership enrollment. For the full breakdown of the three types, see Manage customers' types.
The Membership enrollment card
The card answers one question — "How do customers become loyalty members?" — with two independent controls:
- Mode (pick one): Auto-enroll, Customer opt-in, or Manually assigned. This is how a customer becomes a member.
- Filter (a checkbox): Exclude B2B customers. This is who is allowed to join, and it stacks on top of Auto-enroll or Customer opt-in.
Think of them as two separate axes: the mode decides the joining mechanism, the filter narrows the audience. The only pairing that doesn't apply is B2B exclusion + Manually assigned (the checkbox is hidden in Manual, since you're already picking members by hand).
The three modes
Mode 1 — Auto-enroll (default)
Joy enrolls customers automatically. Whenever a customer is created or updated (webhook, sync, or import from Shopify), Joy decides their type based on how your store handles accounts:
- New customer accounts (Shopify's current default): the email is the account — there's no password. A customer becomes a Member as soon as Shopify marks their email verified. That includes newsletter subscribers: if someone leaves their email and Shopify verifies it, Joy enrolls them. They stay a Guest only while the email is still unverified.
- Classic accounts: a customer becomes a Member when they activate a store account (state enabled). Newsletter subscribers and any account still invited or disabled stay Guests until they activate.
- POS (either system): a customer who buys at your POS is auto-joined as a Member, even without an account.
Auto-enroll is available on every plan.
Existing members are protected. Day-to-day webhooks and customer updates are designed never to downgrade a Member (or Left) customer back to Guest — only the explicit actions described below do that.
Mode 2 — Customer opt-in
Customers are no longer enrolled automatically — they stay Guests until they click Join Program on your storefront. This gives you an intent-based member list: only shoppers who actively chose to join.
Where the Join Program button appears (it replaces the usual sign-in / sign-up prompt): the floating loyalty widget, the Loyalty page, the customer account page, product pages, and the checkout / thank-you blocks. A logged-in shopper is enrolled on click; a guest is sent to log in first, then enrolled automatically when they return.
- Opt-in guests don't earn on orders or loyalty actions until they join — the one exception is the newsletter sign-up reward, which can still apply.
- Joining runs the full enrollment flow, including the sign-up reward.
- Selecting this mode reveals the Convert existing members to guests action (see below) and a link to Auto-tag customers, where the member-on-join tag is managed.
Requires the Advanced or Ultimate plan. Full detail: Opt-in enrollment.
Mode 3 — Manually assigned
Automatic enrollment is switched off entirely — every customer stays a Guest until you add them. Use this when membership needs approval, e.g. customers must accept a terms-of-service form first.
You can add members through:
- Join program button on the customer's detail page in Joy admin
- Shopify Flow action — Join loyalty program
- API integration
- Adding the tag
Joy: Join Loyaltyto the customer in Shopify - Customer import with type set to Member
Requires the Advanced or Ultimate plan. This mode also shows the Convert existing members to guests action. Full setup and a Flow example: Manually select who can join loyalty program.
The Exclude B2B customers filter
Tick Exclude B2B customers (the checkbox under the modes) to keep B2B customers — anyone assigned as a contact of a company in Shopify — out of the loyalty program, so loyalty discounts never stack on top of negotiated B2B pricing. It works on top of Auto-enroll or Customer opt-in; it's hidden while you're in Manually assigned.
Requirements (all three needed, or the checkbox stays disabled):
- Joy Loyalty on the Advanced or Ultimate plan
- New customer accounts enabled in Shopify (Settings → Customer accounts)
- A Shopify plan that supports B2B — every plan except Shopify Starter. Since April 2026, Shopify offers key B2B features on non-Plus plans (opens in a new tab) (Basic, Grow, Advanced), so you no longer need Shopify Plus.
When you tick the box the first time, Joy asks you to grant company information access so it can detect B2B customers — approve it, or the filter can't turn on.
How Joy knows a customer is B2B:
- Shopify sends a webhook the moment a customer is assigned a company contact role — Joy marks them B2B instantly (and un-marks them when the role is removed).
- To re-check your whole customer base against Shopify's company records, go to Membership → B2B programs → Partner tier and click Sync B2B data from Shopify at the top of the page — run it right after enabling the filter or after bulk company changes.
- Orders placed through a company (B2B orders) are also detected at earning time.
What changes for a B2B customer once the filter is on:
| When a B2B customer… | What happens |
|---|---|
| Places an order (online, draft order, or through their company) | No points, no store credit. Joy still records the order in their activity history, marked as a B2B order — so you can always see why nothing was earned. |
| Browses your store | The floating loyalty widget doesn't load at all, and the Loyalty page, loyalty hub, and account loyalty blocks stay hidden. Both earning and redeeming are also blocked at the server — so even if a stray checkout / thank-you block renders on a personal (non-company) order, the customer still can't earn or spend points. |
| Clicks Join Program (opt-in mode) | The join is rejected — B2B customers can't enroll. |
| Already had points or a tier | Nothing is deleted. Their point balance and tier stay on record — just frozen. In admin they may still show as Member with a B2B badge. |
| Stops being B2B (company role removed in Shopify) | Joy un-marks them automatically via webhook (or after a data sync), and they earn and redeem again with their old points intact. |
Ticking Exclude B2B customers doesn't convert or delete anyone. It's a live block that applies while — and only while — a customer is assigned to a company in Shopify.
Step-by-step: Excluded B2B customers from loyalty program.
Convert existing members to guests
Switching mode never changes anyone who is already a member — it only changes what happens to new customers from that point on. To reset the current member list, use Convert existing members to guests, shown at the bottom of the card whenever the mode is Customer opt-in or Manually assigned.
Converted customers keep their points and tier, but stop earning and redeeming until they re-enroll (via Join Program in opt-in mode, or a manual assignment method). This can't be undone.
What happens the moment a customer becomes a Member
However they enroll, Joy sets the customer's type to Member and records the join date. When they join through a standard path — storefront auto-enroll, the storefront Join Program button (opt-in), a POS purchase, the Shopify Flow action, or the Joy: Join Loyalty tag — Joy also:
- Detects and assigns their VIP tier (if tiers are enabled).
- Applies the Joy member tag — plus your own custom member tag if Auto-tag customers (Settings → Additional features) is on.
- Notifies connected integrations (email, SMS, reviews…) about the join.
Sign-up reward: granted once per customer, ever (a re-join never awards it twice), and only when a customer actively joins through one of those standard paths. A background sync, a customer import, or the admin Join program button on the customer detail page does not grant sign-up points — so a migration or bulk import won't mass-award points.
Customer import is the lightweight path: it sets the customer type directly and doesn't re-run the tier/tag steps above.
FAQs
Q: A customer has an email on file but shows as Guest. Why?
A: Check, in this order: (1) Is the mode Customer opt-in? They haven't clicked Join Program yet. (2) Is the mode Manually assigned? They need to be added explicitly. (3) On classic accounts, is their account still invited/disabled (not activated)? (4) On new customer accounts, has Shopify not verified their email yet?
Q: Can I use Customer opt-in and Exclude B2B at the same time?
A: Yes. Mode and the B2B filter are independent — opt-in decides how people join, the filter decides who is allowed. The only combination that doesn't apply is Exclude B2B with Manually assigned (the checkbox is hidden there).
Q: A B2B customer still shows as Member even though Exclude B2B is on. Is that a bug?
A: No. B2B exclusion doesn't change the customer's type — it blocks them at runtime. Check the B2B badge on the customer instead: if it's there, they earn nothing and see no loyalty content, whatever their type says.
Q: Do guests earn points on orders?
A: Only if the earning program allows it — each Place Order program has a guest-earning option, and by default guests are skipped. Opt-in guests and Left customers don't earn order points regardless of program settings.
Q: If I switch to Manually assigned, do current members stay?
A: Yes. Switching modes doesn't remove anyone by itself. Members are only removed if you run Convert existing members to guests.
Q: Does becoming a member again re-trigger sign-up points?
A: No. The sign-up reward is granted once per customer for their lifetime in your store.
Q: We use new customer accounts — why did a shopper become a Member without "registering"?
A: With new customer accounts there is no separate registration: any customer whose email Shopify has verified counts as having an account, so Joy enrolls them under Auto-enroll. This is why a newsletter subscriber who left a verified email can show up as a Member — that's expected, not a bug.