Shopify product tags are free-text labels you attach to a product in the admin, up to 250 per product. They do four jobs: they let staff filter and bulk-edit the product list, they feed collection conditions, they make products match storefront search terms, and they power the Tags filter and many apps. Shoppers do not see them unless a theme or app prints them.
Do tags help SEO? Not directly. A tag adds no ranking signal of its own, and the pages tags create are weak: on Shopify's Dawn demo store, checked on 26 October 2026, a tag URL such as /collections/all/tote was indexable with a canonical pointing at itself, yet it had no heading or description of its own. Tags help search indirectly by building the collections that should rank. This guide covers what tags do, the limits Shopify sets, how tag URLs behave, when to use a metafield or product type instead, a naming convention and a way to generate tags from product attributes.
Six places a Shopify product tag does work
Tags look like a loose keyword field, but each place that reads them uses them differently. Knowing which of these you rely on tells you which tags are safe to delete later.
- Admin filtering and bulk edits. You can filter the Products and Inventory pages by tag, then select the results and add or remove tags in one action (Shopify Help Center).
- Collection conditions. A Tag condition with includes or does not include adds products to an automated collection. Tag is also one of only four condition types that can exclude products, next to category, type and vendor (Shopify Help Center).
- Storefront search. When a shopper searches for a term that matches a product tag, the tagged products appear in the results, even though the tag itself is not displayed.
- Storefront filters. The Search & Discovery app offers a standard Tags filter on collection and search pages.
- Menus. Product tags can filter menu links.
- Apps and themes. Badge apps, bundle apps, shipping rules and many themes read tags such as badge-new or ship-bulky to switch features on per product.
The storefront search point surprises people. An internal tag like supplier-nordvik or review-pending is invisible, but a shopper who types nordvik into your search box gets every product carrying it. Treat every product tag as searchable text.
Shopify product tag limits and rules
| Tags per product | 250 | Products, customers, orders, blog posts, transfers, draft orders |
|---|---|---|
| Characters per product tag | 255 | Products, customers, transfers, blog posts, discounts |
| Characters per order tag | 40 | Orders and draft orders |
| Case sensitivity | None (Approved = approved) | All tags |
| Allowed characters | Letters, numbers, hyphens | Accents and symbols can drop products from search results |
| Unique values in the Tags filter | 5,000 | Search & Discovery storefront filter |
| Languages for the Tags filter | Default language only | Tag filter values cannot be translated |
| Filters per store | 25 | Standard and custom filters combined |
Sources for the table: Shopify's tag rules and Search & Discovery filters. The language rule matters for Belgian and Swiss stores and anyone selling in two languages: shoppers browsing in French on a store whose default language is Dutch do not see the Tags filter at all. Shopify's own advice for shopper-facing filters in several languages is to use a metafield filter, whose values can be translated.
Do Shopify tags help SEO? What tag URLs actually return
Most articles on this question repeat that tag pages cause duplicate content. That is roughly right, but the behavior depends on which URL a theme links to. We checked the three URL patterns on Shopify's Dawn demo store on 26 October 2026, using products tagged tote and handbag. Read the results as what Dawn and Shopify's default robots.txt did that day, not as a guarantee: another theme, an app or an edited robots.txt.liquid can change each of them, so check your own store the same way (view the page source and look for the canonical tag).
The /collections/handle/tag URL
Older themes link tags as paths, and Dawn still serves them. /collections/all/tote returned 200, a canonical pointing to itself and no robots meta tag, so Google may index it. The page title was the collection title plus tagged "tote", because Dawn's theme.liquid appends the current tags to the title. The H1 was the plain collection title and there was no description. That is a thin variant of a collection page: same heading, a filtered product grid, no copy of its own.
Storefront filter URLs with filter.p.tag
Online Store 2.0 themes filter through Search & Discovery and add a parameter instead: /collections/all?filter.p.tag=tote. On the demo store that URL's canonical pointed back to /collections/all, the unfiltered collection. Google treats a canonical as a hint, but here the theme states clearly that the filtered view is not a page of its own.
Combined tags and stacked filters
Joining two tags with a plus sign, as in /collections/all/handbag+tote, also returned a self-canonical page. The demo store's robots.txt, which carries Shopify's default rules, blocks these with a Disallow rule for collection paths that contain a plus sign, and it also blocks collection URLs with two filter parameters or a sort_by parameter. A single tag path stays crawlable. Stores can edit these rules through a robots.txt.liquid template, so yours may differ.
Google's guidance on faceted navigation explains why this matters: filtered URLs multiply quickly and crawlers will access a very large number of them, so either block them or make each one a deliberate, consistent page. For a Shopify store the practical rule is simple. If a tag combination has real search demand, such as merino hiking socks, give it a proper collection with its own handle, title, description and internal links. Leave everything else to filters, and do not print tag link lists in your theme footer or sidebar.
Three questions decide whether a tag view deserves promotion to a collection. Do people search for that phrase, in your country and language? Can you write a title and two or three sentences that are specific to it? Will it hold enough products to stay useful when items sell out? If any answer is no, keep it a filter. If all three are yes, the collection can still use the tag as its condition, so the tag does the sorting while the collection does the ranking. Our guide to faceted navigation SEO covers the crawl side in more depth.
Tags, product type, metafields or a collection: which field to use
Tags are the easiest field to write, which is why they end up holding data that belongs elsewhere. Each Shopify product field has a different shape, and the shape decides what it is good for.
Where each kind of product data belongs in Shopify
| Tags | Up to 250 | No, free text | Yes, can also exclude | Yes, default language only | Merchandising flags, promo membership, app triggers |
|---|---|---|---|---|---|
| Product type | One | No, free text | Yes, can also exclude | Yes | Your own merchandising category, such as Socks |
| Product category | One | Yes, Shopify Standard Product Taxonomy | Yes, can also exclude | Yes | Channel and tax classification |
| Metafields | One per definition | Yes: number, list, true or false, metaobject | Yes | Yes, translatable values | Specs shoppers filter or read: material, size, wattage |
| Collections | Many | Not a field | Built from the fields above | Not applicable | Landing pages that should rank and appear in menus |
Shopify allows one product type per product and recommends the standard product category where one fits, with product type as your own label on top. A product type such as Socks plus tags for everything that cuts across types (promo-winter-sale, badge-new) is a common, clean split. For the typed side, see our Shopify metafields guide, and for turning the result into category pages, the post on Shopify collections.
One rule from Shopify's condition docs is worth copying: excluding several vendors or types with is not equal to behaves unpredictably, so Shopify suggests a tag with is equal to for reliable exclusions. A tag such as exclude-sale is a cleaner way to keep a product out of a sale collection than a chain of negative conditions.
A tag naming convention with prefixes
Shopify allows only letters, numbers and hyphens, ignores case and cannot translate tags, so the convention has to work inside those limits. A prefix that states the tag's job keeps the list readable and lets you find every tag of one kind by typing the prefix in the admin.
- promo- for campaign membership: promo-winter-sale, promo-gift-guide. Remove when the campaign ends.
- badge- for theme or app labels: badge-new, badge-bestseller.
- ship- for fulfillment rules apps read: ship-bulky, ship-letterbox.
- use- for cross-category groupings with collection value: use-hiking, use-office.
- exclude- for exclusions: exclude-sale, exclude-feed.
- app- for tags one app owns, so nobody deletes them during cleanup.
A worked example: a 3-pack of merino crew socks, size 43 to 46. Product type: Socks. Category: Apparel & Accessories > Clothing > Socks > Crew Socks from Shopify's Standard Product Taxonomy. Metafields: material = Merino wool, pack size = 3. Tags: use-hiking, promo-winter-sale, badge-new, ship-letterbox. Material stays a metafield because shoppers filter on it in two languages; hiking becomes a tag because it feeds one collection and nothing else needs it typed.
Write the convention down with the allowed prefixes and an owner per prefix. Without that, five people add Hiking, hiking-socks, hike and outdoor-hiking within a year, and because Shopify ignores only case, all four stay separate tags.
Generating tags in bulk from product attributes
Hand-typed tags drift. The durable approach is to treat tags as an output: keep the facts as attributes, then derive the tags from them. That way a product moved from the hiking range to running loses use-hiking automatically instead of keeping it forever.
- Choose the attributes that drive tags. Usually use case, campaign, badge and shipping class. Leave specs such as size and material in metafields.
- Fix the values first. Merge spelling variants (Merino, merino wool, MERINO) into one allowed value before any tag is written. A controlled value list is reference data, and it needs an owner like any other.
- Define the mapping. use_case = Hiking becomes use-hiking. Lowercase, spaces to hyphens, accents removed, since accented letters can drop products from search results.
- Write the tags. For a few hundred products, Shopify's bulk editor and the Add tags action work. For a catalog, use the Tags column in a product CSV or a connector that sends tags from your product data. Our guide to bulk editing Shopify products compares the options.
- Rerun on every change. A tag rule only stays true if it runs again when the attribute changes, so attach it to the sync, not to a one-off clean-up.
One caution applies to any tool that writes tags. Shopify stores tags as one list per product, and most integrations that send tags send the whole list, which replaces what was there. Tags that apps added on their own (app-, review-) disappear unless they are part of the list you send. Decide which system owns the tag list before you automate it.
Auditing a tag list that grew for years
Stores that have run for a few years often carry hundreds of tags that nobody can explain. Export the products to CSV, split the Tags column into one tag per row in a spreadsheet and count products per tag. The patterns show up quickly: case and spelling twins, tags used on a single product, tags that repeat the vendor or product type, and promo tags for campaigns that ended long ago.
Before deleting anything, check who reads the tag. A tag with one product can still be the only condition of a live collection, a Shopify Flow trigger or an app setting.
Shopify tag clean-up checklist
Sending Shopify tags and product type from WISEPIM
WISEPIM's Shopify connection treats tags the way this guide recommends: as an output of product data. In the connection's field mapping, Tags and Product type have no default source. You choose what fills them: an attribute, a fixed value or a template string that combines several fields. A multi-select attribute or a comma-separated value becomes one Shopify tag per value, with blanks and duplicates dropped.
Two behaviors are worth knowing before you switch it on. When the Tags field is mapped, the list WISEPIM sends replaces the product's tags in Shopify, so tags added there by staff or apps disappear unless your mapping produces them too. When it is not mapped, WISEPIM sends no tags and leaves Shopify's list alone. Product type works the same way and rejects structural values such as simple or configurable, since Shopify uses product type as a merchandising label. On import, a one-time import can be limited to products with one tag, and imported tags stay as Shopify data on the product rather than becoming attributes, so set up the attributes and their allowed values first. Collection conditions stay in Shopify; WISEPIM supplies the tags and product types they read.
If your tag list is a mix of facts and flags today, the first step is the same with or without a PIM: move the facts into attributes with controlled values, then let the tags follow from them.

