Tutorials

How to Bulk Edit Handle (URL)

The handle is the slug at the end of a product URL — your-store.com/products/<handle>. This guide shows how to set it outright, tack text onto either end, find-and-replace, or trim it.

Heads up: Shopify auto-creates handles from the title. Most stores leave them alone. Change a handle and the old URL stops resolving — leave Create web redirects if the handle changes on (the default) so old links still work.


Step 1: Pick the Handle (URL) field

In the Configure Product Edits panel, click Select Field. Handle (URL) is the first item under Product Fields.

The Select Field modal with Handle (URL) marked under Product Fields

Click it. The configuration panel switches to a How to edit Handle dropdown and a value input.

Configuration panel after selecting Handle (URL): How to edit Handle is set to Set handle to value, with an empty input and the redirect checkbox checked


Step 2: Choose how to change the handle

Seven actions are available.

Direct value

  • Set handle to value — every matched product gets this exact handle. Best when you also use a dynamic value (see Step 3) so each product still gets a unique slug.

Adjust the existing handle

  • Add text to end — append a fixed string (e.g. -2026 becomes oldhandle-2026).
  • Add text to beginning — prepend (e.g. sale- becomes sale-oldhandle).
  • Remove text from end — strip a suffix you regret adding.
  • Remove text from beginning — strip a prefix.
  • Find text and replace — swap one substring for another, optionally case-insensitive.
  • Limit length of text — cap the handle at N characters (Shopify allows up to 255).

Step 3: Enter the value

Set handle to value

Type the new handle in the Set the handle to this value input.

Set handle to value showing "{product.handle}-summer-sale" in the input; the preview on the right shows each product's old handle struck through with the new "(handle)-summer-sale" replacement below

Use dynamic values to keep slugs unique. Click Add dynamic value above the input to insert a token like {product.handle} or {product.title}. The example above sets every handle to <original-handle>-summer-sale, so each product still gets a unique URL.

Setting a literal value with no dynamic token across many products will collide — Shopify auto-appends -1, -2, etc. to dedupe, which is rarely what you want.

Find text and replace

Two inputs — what to look for, and what to replace it with — plus a Case insensitive checkbox.

Find text and replace mode with "old-collection" in the search field and "summer-2026" in the replace field; Case insensitive is unchecked

Use this to rename a season or a category across many handles in one shot.

Add / remove text from end or beginning

A single input. Whatever you type gets appended, prepended, or stripped from the matching end of every handle.

Limit length of text

A single number input — handles longer than this get truncated to fit.


Step 4: Decide on redirects

Below the value inputs there's a Create web redirects if the handle changes checkbox, on by default.

Leave it on unless you have a specific reason to remove the redirect. With it off, every old product URL — including links from Google, social posts, and email campaigns — returns a 404 the moment the handle changes.


After the run

  • Handle changes are reversible from the History page using Undo. Undoing also removes the redirects this run created.
  • Watch for empty handles: if your action would produce a blank string (e.g. removing all text), Shopify rejects the update and that product is skipped.
  • Two products in the same run resolving to the same handle? Shopify dedupes by appending -1, -2 and so on. The Edit Preview on the right shows the proposed new handle per product — scan it before you run.
Previous
Edit product descriptions