Saltar al contenido
AldeaCode Logo
Generador de Slugs / Shopify Generadores 100% local

Generador de slugs para Shopify: handles, handleize y URLs de producto

Shopify llama handles a los slugs. Cada producto, colección, blog, página y artículo tiene uno, y vive en la URL. La plataforma deriva el handle del título de forma automática, pero la conversión tiene reglas que muerden si no las planificas.

Los handles son slugs en dialecto Shopify

En Shopify, el segmento de URL detrás de /products/ o /collections/ es el handle. Un producto titulado Camiseta Algodón Orgánico queda como /products/camiseta-algodon-organico automáticamente. El handle se guarda como campo de primer nivel en el recurso, separado del título, y lo puedes editar desde el admin en los ajustes SEO de cada producto.

La regla de conversión es la misma idea que ves en otros CMS: minúsculas, reemplazar espacios y la mayoría de signos por guiones, descartar lo que no sea letra, dígito o guion. Shopify limita los handles a 255 caracteres y no permite guiones al principio ni al final. Si intentas grabar /-zapatos- queda silenciosamente normalizado a zapatos al guardar.

Lo que sorprende a quien empieza es que el handle no cambia cuando cambia el título. Una vez Shopify genera el handle en el primer guardado, los cambios posteriores de título dejan el handle como estaba. Es intencional: la URL es estable para SEO. Eso también significa que una errata en el momento de crear te acompaña para siempre salvo que la corrijas a mano.

Las colisiones añaden sufijos numéricos

Si creas dos productos llamados Producto Rebajado, el primero queda en /products/producto-rebajado y el segundo en /products/producto-rebajado-1. El tercero recibe -2, el cuarto -3, y así sucesivamente. El patrón aplica a toda la tienda dentro del mismo tipo de recurso, y el contador no se reinicia al borrar un producto en conflicto. Si borras producto-rebajado y creas uno nuevo, ese nuevo queda en producto-rebajado-1 porque Shopify mantiene referencias internas.

Puedes evitarlo fijando el handle explícitamente al crear. La UI de admin expone el campo URL handle; la Admin REST API y la GraphQL Admin API ambas aceptan handle en ProductInput. Si haces import masivo por CSV, llena la columna Handle directamente. Confiar en el auto-generador en una importación de productos con nombres parecidos es la receta para acabar con tres SKU en URLs -1, -2, -3 que nadie recuerda.

Cambiar el handle tras publicar genera un 301

Shopify crea automáticamente un redirect de URL cuando cambias el handle de un producto publicado. La URL vieja sigue funcionando, devuelve un 301 al nuevo handle, y el redirect aparece en Tienda online, Navegación, Redirecciones URL del admin. Lo puedes editar o borrar.

Esto hace que cambiar handles sea más seguro que en la mayoría de CMS, pero no es licencia para renombrar a la ligera. Cada redirect es un salto, y apilar redirects sobre redirects ensucia las auditorías. Si detectas una errata el día uno, arréglala y a otra cosa. Si el producto lleva dos años en vivo, el handle es la URL que conoce el mundo; sopesa la fricción SEO de cada cambio frente a la mejora cosmética.

El redirect solo se crea para recursos que estaban publicados. Los productos en estado borrador no reciben ese trato al renombrarlos, porque no había nada público que romper.

handleize de Liquid para trabajo en temas

Los temas necesitan slugificar cadenas constantemente: URLs de etiquetas, colecciones personalizadas, búsquedas. El filtro handleize es el equivalente en Liquid del slugifier de la plataforma:

{% assign slug = product.title | handleize %}
<a href="/products/{{ slug }}">{{ product.title }}</a>

handleize calca la conversión que aplica la plataforma al guardar, así que una cadena pasada por ese filtro produce el mismo handle que Shopify hubiera generado. Úsalo al construir URLs dinámicas desde texto arbitrario en plantillas, sobre todo para páginas de tag y colecciones personalizadas a partir de metafields. No uses url_encode para esto: ese filtro escapa caracteres para query strings, no para path, y la salida es incorrecta en posición de handle.

Ejemplo completo

liquid
{%- comment -%}
  Renderiza una nube de tags donde cada tag enlaza a un handle limpio.
  handleize calca la slugificación que Shopify aplica al guardar.
{%- endcomment -%}

<ul class="tag-cloud">
  {% for tag in collection.all_tags %}
    {% assign tag_slug = tag | handleize %}
    <li>
      <a href="{{ collection.url }}/{{ tag_slug }}">
        {{ tag }}
      </a>
    </li>
  {% endfor %}
</ul>

{%- comment -%} Ejemplo programático de preview de handle {%- endcomment -%}
{% assign preview = "Edición Limitada: Verano 2026!" | handleize %}
<p>Handle preview: <code>{{ preview }}</code></p>
{%- comment -%} Salida: edicion-limitada-verano-2026 {%- endcomment -%}

¿Solo necesitas el resultado?

Cuando estás planificando un lanzamiento y quieres tener los handles listos antes de entrar a Shopify, el generador de slugs en aldeacode.com produce la misma salida que handleize. Pega los títulos borrador, copia los handles de vuelta y fija cada uno explícitamente en el campo URL handle al crear. Sin sufijos -1 sorpresa, sin limpiar 301 después.

Abrir Generador de Slugs para URLs →

Preguntas frecuentes

¿Shopify actualiza el handle cuando renombro un producto?

No. El handle se fija en el primer guardado y se queda salvo que lo edites explícitamente en los ajustes SEO. Esto protege la URL de pérdidas SEO accidentales al ajustar el título.

¿Pueden dos productos compartir el mismo handle?

No dentro del mismo tipo de recurso. Shopify añade -1, -2 y así para mantener handles únicos. El contador persiste tras borrar, así que liberar un handle para reusarlo puede requerir limpieza manual.

¿Se rompen los enlaces antiguos al cambiar un handle?

No para productos publicados. Shopify crea un 301 automático del handle viejo al nuevo, visible en Redirecciones URL. Los productos en borrador no reciben ese trato porque nunca fueron públicos.