"if customer.tags contains" does not search for a tag

Topic summary

A user is implementing tag-based access control for a private collection in Shopify, restricting it to customers with a ‘vip’ tag. The initial {% if customer.tags contains 'vip' %} condition failed to recognize tagged customers.

Solution provided:

  • Replace single quotes with double quotes: "vip" instead of 'vip'
  • Downcase tags for consistent matching: {% assign customersTagsDowncase = customer.tags | downcase %}
  • Loop through tags if needed for more robust checking

This resolved the original issue successfully.

Related problem raised:
While collection-level protection works when users navigate through the site menu, customers can bypass restrictions by accessing individual product URLs directly (e.g., via Google search). The template page option doesn’t appear in the product template dropdown, and there’s no clear method to hide restricted products from untagged users when accessed via direct links rather than through the protected collection page.

Summarized with AI on November 8. AI used: claude-sonnet-4-5-20250929.

Hi,

I am trying to set up a “private collection” page that only customers with the ‘vip’ tag can view.

I created a new collection with the theme ‘private-collection’, then I added the code below on a new section called ‘collection.private-collection.liquid’:

{% if customer.tags contains ‘vip’ %}

{% section ‘collection’ %}
{% else %}

{{ pages.no-access.content }}

{% endif %}

I then tagged some customers as ‘vip’ but it does not seem to recognise the vip customers - no one is able to open the page.

I believe that “contains” in the first row does not work correctly, as all customers see the “else” option.

I am using the Debut theme.

Would you be able to help fixing this?

If helpful, this is the store url: https://hasbanigioielli.myshopify.com/

This is the “private collection”: https://hasbanigioielli.myshopify.com/collections/private-collection

Thanks a lot,
Federico

Some additional steps to try

First replace backquotes with simple quotes "

{% if customer.tags contains ‘vip’ %}
{% if customer.tags contains "vip" %}

then try downcasing all the tags so matching is more consistent

{% assign customersTagsDowncased = customer.tags | downcase %}
{% if customersTagsDowncased contains "vip" %}
 
{% endif %}

If that does not work, loop over all tags for the check, wrap the following around thelogic

{% for tag in customer.tags %}
 {% if tag == "tagname" %}

 {% endif %}
{% endfor %}
5 Likes

Fantastic now it works correctly, thank you so much!

Hey Paul,

Im having the issue of the collection not showing the products.

Is this correct?

{% if customer.tags contains "VIP" %}

{% section 'collection' %}
{% else %}

{{ pages.no-access.content }}
{% endif %}

{% assign customersTagsDowncased = customer.tags | downcase %}
{% if customersTagsDowncased contains "vip" %}

{% endif %}

Hi Paul - I wonder if you can help me. I have done the same as above to “protect” veterinary subscription food products in a collection. If I go to the collection via the website it works but if anyone googles the vet product and clicks on the direct link to that products they can see it and buy it without having to have the tag.

So the collection code I use is:

{% if customer.tags contains ‘vet_buyer’ %}
{% section ‘collection-template’ %}
{% else %}
{{ pages.no-access.content }}
{% endif %}

This works if the user navigates to the collection via the menu or home page:

https://www.justforpets.co.za/collections/royal-canin-veterinary-health-nutrition

but if they google a product in that collection and go straight to the link they can still see it and buy it without having the tag ‘vet_buyer’

eg: https://www.justforpets.co.za/products/royal-canin-gastrointestinal-high-fibre

I have been searching but I cannot find a way to hide all those products that are in that collection from un-tagged buyers so that they see the same “Apologies” page.

The page template does not appear in the product template dropdown and I am not sure how to go about it.

Help would be appreciated. :slightly_smiling_face:

Many thanks,

Adi

Hi Paul,