> For the complete documentation index, see [llms.txt](https://docs.roadmap.so/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadmap.so/tag-library/how-to-create-secrets-products-collections.md).

# How to create secrets products/collections

Use Secret Products to control product and collection access by customer eligibility.

Use **Secret Products** to control who can access specific products or collections.

Use it when the restriction belongs on the product side, not on a storefront page URL.\
\
Interactive walkthrough here: <https://app.arcade.software/share/283JYMZ0GTI3AfNOFw9u>

### Use Secret Products when

Choose this tag type when you want to:

* show products only to wholesale or VIP customers
* hide products from specific countries
* run private collections or sample sales
* give repeat buyers access to special bundles
* keep a range visible only to signed-in customers

### Decide these settings first

Before you build the rule, decide:

* whether you are restricting products or collections
* whether the selected audience should be **Visible** or **Hidden**
* who should qualify
* where blocked visitors should land
* whether the rule needs a start or end date

**Tag name** is for admin reference only.

Name tags clearly so your team knows what each rule controls, such as `Wholesale access - Trade`.

When you open **Tag Library**, you can review existing **Draft** and **Active** tags before creating a new one.

### Set up a Secret Product tag

![Tag Library home screen showing Create a New Tag and a list of tags](https://393112916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ8asLD4FVCFagK40xEr4%2Fuploads%2F0sltIMCcQ8qJwTA20Z20%2FScreenshot%202026-04-01%20at%2010.20.23%E2%80%AFAM.png?alt=media\&token=e2e070d6-2d6b-4d78-b8b5-eefc795f4129)

{% stepper %}
{% step %}

#### Open Tag Library

In Shopify admin, go to **Apps** → **Roadmap Dev** → **Tag Library**.

The main screen shows your existing tags.

You can review which tags are already **Draft** and which are **Active**.
{% endstep %}

{% step %}

#### Create a new tag

Click **Create a New Tag**.

This opens a pop-up with the available tag types.
{% endstep %}

{% step %}

#### Choose Secret Product

In **Select tag type**, choose **Secret Product**.

Use this when you want to control access to products or collections.

Use **Protected Pages** instead when the rule should apply to a storefront page or URL.

![Select tag type modal showing Secret Product and Protected Pages](https://content.gitbook.com/content/J8asLD4FVCFagK40xEr4/blobs/5qdxCYXQHYXjCvXzGq5q/Screenshot_2026%2003%2011_at_12.38.26_PM.png)
{% endstep %}

{% step %}

#### Add the tag name

Enter a clear **Tag name**.

This is an internal reference for your team.

Use something obvious, such as `Hide from wholesale` or `VIP early access`.
{% endstep %}

{% step %}

#### Keep the rule in Draft while you set it up

Leave **Status** as **Draft** while you build and test.

Only switch it to **Active** once the setup is confirmed.
{% endstep %}

{% step %}

#### Choose what the rule applies to

In **Applies to**, choose the target.

Then add the specific products or specific collection you want to control.

Use **specific collections** if the rule should apply to a grouped range that will dynamically change as the collection is updated.

{% hint style="info" %}
If the range changes often, create the smart collection in Shopify first, then attach that collection to the tag.
{% endhint %}

![Secret Product tag screen showing Applies to set to Specific collections and selection UI](https://393112916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ8asLD4FVCFagK40xEr4%2Fuploads%2Fs2DKT3yQMWVVCg8XanGI%2FScreenshot%202026-04-01%20at%2010.21.39%E2%80%AFAM.png?alt=media\&token=496e3a9d-132b-4e7a-b5ef-a6f129e20653)
{% endstep %}

{% step %}

#### Choose whether the selected audience is Visible or Hidden

In **Customer Eligibility**, first decide whether the selected audience should be shown the products or blocked from them.

Use **Visible** when only that audience should see the products.

Use **Hidden** when that audience should be blocked from the products.

{% endstep %}

{% step %}

#### Choose the audience

<figure><img src="https://393112916-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ8asLD4FVCFagK40xEr4%2Fuploads%2FisBj857ijC22KZvAu5xO%2FScreenshot%202026-04-01%20at%2010.03.41%E2%80%AFAM.png?alt=media&amp;token=fabafe8d-4485-4839-9291-3622ab2c5e7d" alt=""><figcaption></figcaption></figure>

In **only for**, choose who the rule should apply to.

Common options include:

* **all customers**
* **logged in customers**
* **logged in customers tagged with**
* **logged in customers with order history**
* **customers from specific countries**
* **members**
* **non-members**

Choose the option that matches the audience you want to include or exclude.
{% endstep %}

{% step %}

#### Fill in the extra audience details

Some audience choices need more input.

For example:

* **logged in customers tagged with** needs one or more Shopify customer tags
* **customers from specific countries** needs the country selection
* **logged in customers with order history** needs the order or spend rule

A common setup is:

* **The above products are:** **Visible**
* **only for:** **logged in customers tagged with**
* **Customer Tags:** `Wholesale`
  {% endstep %}

{% step %}

#### Set the redirect for blocked visitors

Use **Redirect ineligible customers to:** to choose where blocked visitors should go.

Leave this blank to send blocked visitors to the homepage.

Or enter a path like `/collections/new-arrivals`.
{% endstep %}

{% step %}

#### Set the start date and time

In **Active Dates**, choose the **Start date** and **Start time**.

If the rule should begin today, use today’s date and the time you want it to start.
{% endstep %}

{% step %}

#### Add an end date if needed

Turn on **Set end date** if the rule should stop automatically.

Then choose the **End date** and **End time**.
{% endstep %}

{% step %}

#### Choose the inactive behaviour

Use **When inactive, the selected products are:** to control what happens outside the active window.

The schedule only runs when the tag **Status** is **Active**.
{% endstep %}

{% step %}

#### Save the tag

Save the tag.
{% endstep %}

{% step %}

#### Test the rule

Before activation, test the scenario with an placeholder testing tag:

* one customer who should be eligible
* one customer who should be ineligible
* a direct product link
* the redirect destination

If the rule depends on tags, order history, loyalty status, or customer accounts, test with signed-in customers.
{% endstep %}

{% step %}

#### Activate the rule when testing passes

Switch the tag to **Active** only after testing passes.
{% endstep %}
{% endstepper %}

### Pick the right eligibility option

The **only for** dropdown can include options such as:

* **all customers**
* **logged in customers**
* **logged in customers tagged with**
* **logged in customers with order history**
* **customers from specific countries**
* **members**
* **non-members**

![Customer eligibility dropdown expanded with options including all customers, logged in customers, logged in customers tagged with, logged in customers with order history, and customers from specific countries](https://content.gitbook.com/content/J8asLD4FVCFagK40xEr4/blobs/Kmwx4mcnMnlZnTJ13O7f/Screenshot_2026%2003%2011_at_12.38.39_PM.png)

If you choose an option that requires more detail, the form displays additional fields.

Example: **logged in customers tagged with** adds a **Customer Tags** field.

{% hint style="info" %}
Most targeted eligibility rules only work with signed-in customers.

This is especially important for customer tags, order history, and member status.
{% endhint %}

### Choose redirects intentionally

Secret Product rules also affect direct links.

If an ineligible visitor lands on a restricted product from email, ads, or social, they will be redirected.

Use a destination that matches intent:

* a relevant collection: `/collections/new-arrivals`
* an explanation page: `/pages/wholesale`
* a region-friendly alternative collection

### Worked example: hide a collection from wholesale customers

Use this setup when a range should stay available to direct-to-consumer shoppers, but not to wholesale accounts.

Set:

* **Applies to:** Hide for wholesale collection
* **The above products are:** Hidden
* **only for:** logged in customers tagged with `wholesale`
* **Redirect ineligible customers to:** homepage

Result:

* logged-in wholesale customers cannot view the selected products
* All other shoppers can still access them
* Please note: If the customer is logged out, they will see this product collection.

### Common setups

#### Wholesale or trade-only products

Use:

* **Visible**
* **logged in customers tagged with**
* a tag such as `Trade`

Redirect blocked visitors to `homepage` or a wholesale information page.

#### Hide products from wholesale customers

Use:

* **Hidden**
* **logged in customers tagged with**
* a tag such as `wholesale`

This is useful when a product is meant for direct-to-consumer shoppers only.

#### VIP early access to a new drop

Use a VIP tag or **logged in customers with order history**.

Add an end date if the products should become public later.

#### Logged-in customers only

Use:

* **Visible**
* **logged in customers**

This works well when the products should stay hidden from guest visitors.

#### Country-based product access

Use **customers from specific countries**.

Then decide whether those customers should be **Visible** or **Hidden**.

Redirect blocked shoppers to a relevant collection instead of a dead end.

#### Repeat-buyer bundles or add-ons

Use **logged in customers with order history**.

This works well for past-purchaser bundles and loyalty-style offers.

#### Loyalty member-only products

Use:

* **Visible**
* **members**

This works well for member perks, loyalty redemption bundles, or tier-based access.

#### Products for non-members only

Use:

* **Visible**
* **non-members**

This is useful for join-now offers or products that should disappear once a customer becomes a member.

### Test before launch

Check all of these before you activate the tag:

* an eligible customer can access the product or collection
* an ineligible customer is redirected correctly
* direct product links behave as expected
* the schedule is correct, if used
* **When inactive** matches the result you want after the rule ends
* logged-out behaviour matches your eligibility choice

### Fix common issues

<details>

<summary>Eligible customers still cannot see the product</summary>

Check:

* the tag **Status** is **Active**
* **Visible** or **Hidden** is set correctly
* the customer matches the selected eligibility rule
* Is the customer tag match in the customer profile and in the tag (Customer tags are case sensitive)
* the product or collection was included in the 'applies to' selection.

</details>

<details>

<summary>Customers are redirected to the wrong place</summary>

Review **redirect ineligible customers to:**

Use a store path that matches the customer’s intent.

</details>

<details>

<summary>The product should be public now, but it is still restricted</summary>

Check '**When inactive, the selected products are'** configuration

If access should open after the schedule ends, this must be set to **Visible**.

</details>

### Related guides

* [Customer eligibility controls in Tag Library](/tag-library/understanding-customer-eligibility-controls.md)
* [Schedule start and end dates in Tag Library](broken://spaces/J8asLD4FVCFagK40xEr4/pages/10be5c03a17b9a78682a6326bc9a747caa32419b)
* [Creating Protected Pages in Tag Library](/tag-library/how-to-create-a-protected-page.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.roadmap.so/tag-library/how-to-create-secrets-products-collections.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
