Customers can be 'members', 'volunteers', 'staff' etc

Customers shopping through a Hub or Store can have different abilities or qualities that affect their shopping experience e.g.

  • a Hub may be only open for members - non-members cannot shop before joining up
  • there may be a discount for members
  • there may be a discount for staff or volunteers
  • wholesale customers could see variants or prices that are different from retail customers

Connected to the discussion from ‘Tagging’ Products and Customers:


  • would be good to let enterprises set-up and manage their own tags, while also encouraging them to use tags that are the same as others . . because then we’ll be able to do cooler system wide stuff with it. so suggestive ‘tag’ as they’re typing offering those already in the system
  • but enabling them to easily manage their own

Next Steps

Time to have a look at whether existing tagging gem might enable us to do this in an achievable (not blow out) kind of way.

crazy but cool idea

  • if we did have a tagging system, it would be really cool to have a zapier / rule-management type interface that let users set their own rules

If Customer is tagged wholesale, shopfront restricts to products/variants tagged wholesale
If Customer is tagged member, checkout applies adjustment - 3%

Bit confused - @RohanM suggested using Spree roles for this. Does that make sense? Rather than a tagging module?

that may well be the best way to do it. We are going to be looking at implementing customer tags though (see Build customer accounts interface (for enterprise user)) so I think it’s worth asking whether tagging would give us more flexibility. I don’t have a strong view either way, just wanting to make sure we’re thinking it through

@oeoeaio @RohanM @Kirsten @pmackay
I started having a wee look at this this morning. I added the tagging gem acts_as_taggable_on

It was straightforward, totally compatible with our framework. It’s super simple, you can create a tag on any model, whatever you want it to be. So I added a tag Member on customer and played around with it in the console. Tags are just strings, that are shared where possible. The tags themselves are stored in one table, the relationships in another. Objects can be taggers, and the tagger stored with the tag. You can specify tag sets within the model (eg Customer can be tagged “Member” or can have tag_list “Habits” containing tags like “Moustache twizler” or “nose picker”). So looks like a lot of flexibility that will likely be useful as we move forward.

So the tricky part of this will become designing the interface well. My thinkings are this is meant to fit in with Customer management for enterprises:

Sooo, since getting these tags and associated discounts for members is critical for UK launch, what are the next steps? I could work on developing and testing the functionality required for this, and the UI implemented after? The interface would need to be a combination of Member and a way to store the logic of the checkout discount… hrm…

How long until you guys expect to have the capacity to work on the Customer Accounts Interface for Enterprises?

Damn, sorry @lin_d_hop.

I have already built a very basic angularised customers interface. I have installed the acts_as_taggable_on gem and have installed this interface for interacting with tags:

We have just had a backlog getting it up into master. I’ll push it up as soon as I can so that you can have a play around with it. Sorry for the breakdown in communication.

@lin_d_hop - see here for outline of what @oeoeaio has built, should be through this week Build customer accounts interface (for enterprise user)