Cómo crear miles de códigos de descuento en Shopify con un script Python (sin apps de terceros)
Llega Black Friday, el equipo de marketing pide mil códigos de descuento únicos para una campaña con un influencer, y la herramienta del marketplace de Shopify que ibais a usar cuesta 49 € al mes solo para esto. ¿Vale la pena el plug-and-play o conviene un script propio? Depende de cada cuánto lo hacéis. Aquí te explicamos cómo lo abordamos en Pango cuando la respuesta es «puntual» — código Python que se conecta a la Admin API de Shopify y carga miles de códigos en segundos, sin dependencias de terceros.
Cuándo SÍ y cuándo NO conviene el script propio
Antes de tocar código, criterio. No todo proyecto necesita lo mismo.
Sí conviene si…
- Cargas códigos de forma puntual: una campaña al trimestre, un Black Friday, un lanzamiento, un pack de afiliados.
- Necesitas personalizar la lógica (prefijos por canal, longitudes, fechas, mínimos diferentes por segmento, exportar a CSV para automatización…).
- No quieres otra app instalada en Shopify que cargue scripts en el storefront y le sume peso a tu Core Web Vitals.
- Tienes a alguien técnico (in-house o agencia) que puede ejecutar el script y revisar el resultado.
No conviene si…
- Lanzas campañas de descuentos cada semana y tu equipo de marketing necesita autonomía sin pedirle a un dev.
- Necesitas panel visual para que distintos perfiles vean estadísticas de uso, redenciones, conversión.
- Te falta criterio técnico interno y dependes 100 % de la agencia para cada campaña — el coste mensual de la app probablemente sale más barato a la larga.
Si caes en el primer grupo, sigue leyendo. Si caes en el segundo, busca una app del marketplace bien valorada (hay varias serias) y úsala. Vamos al detalle técnico.
El vídeo explicativo (8 minutos)
Hemos grabado el flujo completo paso a paso. Si prefieres ver y replicar en directo, este es el camino más rápido:
Stack y arquitectura
Tres piezas, cero magia:
- Una app custom Shopify con permisos acotados (solo
write_discountsyread_discounts). Cuanto menos permiso, menos superficie de ataque. - Un script Python que se conecta a la Admin GraphQL API de Shopify. GraphQL en vez de REST: una sola llamada, payload mínimo, mejor rendimiento.
- Un CSV de salida con todos los códigos generados, listos para meter en una plataforma de email marketing, en un Excel del equipo o en una automatización n8n.
Paso a paso
1. Crear la app custom en Shopify
Desde el admin de tu tienda: Settings → Apps and sales channels → Develop apps. Si la opción no aparece, está desactivada por defecto y la activas desde ahí mismo (o que la active alguien de tu agencia Shopify Partner — en Pango lo activamos en 2 minutos para clientes en proyecto).
Le pones nombre (pango-bulk-codes sirve). El propietario sois vosotros.
2. Limitar permisos: solo lo necesario
En la configuración de la app, sección Admin API access scopes, marca exclusivamente:
write_discountsread_discounts
No marques nada más. El principio de mínimo privilegio en seguridad: si el token se compromete, lo único que podría hacer un atacante es manipular descuentos. No pedidos, no clientes, no inventario.
3. Instalar la app y obtener el token de acceso
Pulsas Install app. Te genera un Admin API access token. Cópialo inmediatamente — Shopify solo te lo muestra una vez. Si lo pierdes, regeneras y listo, pero tendrás que actualizar el script.
Trata ese token como una contraseña. No lo subas a Git, no lo pegues en Slack, no lo dejes en un archivo plano sin cifrar. Si vas a usarlo de forma habitual, va en un gestor de secretos (1Password, AWS Secrets Manager, Doppler).
4. Configurar el script
Las variables clave del script (Python):
- URL de la tienda:
tutienda.myshopify.com. - Token de acceso: el que acabas de copiar.
- Versión de la API:
2025-10o la última estable. - Nombre de la campaña: aparece en el panel de Shopify (ejemplo:
BlackFriday 2026 — Afiliados). - Tipo de descuento: porcentaje (
percentage) o cantidad fija (fixed_amount). - Valor:
15para 15 % o15.00para 15 € fijos. - Mínimo de carrito:
Nonesi no quieres mínimo, o un valor numérico. - Prefijo:
BF26-(luego el script añade 8 caracteres aleatorios). - Cantidad de códigos: 1000, 5000, lo que necesites.
- Fechas de inicio y fin en formato ISO 8601 con zona horaria.
- Uso por código:
1(un solo uso, lo más habitual para campañas únicas). - Uso por cliente:
1(cada cliente solo puede canjear uno).
5. La pieza que hace la magia: la mutación GraphQL
El script construye una mutación GraphQL discountCodeBasicCreate (o discountCodeBxgyCreate para «compra X llévate Y», o discountCodeFreeShippingCreate para envío gratis) por cada código.
El truco para que sea rápido en miles de códigos: agrupar las mutaciones en lotes (bulkOperationRunMutation) o paralelizar peticiones controlando el rate limit de Shopify. La Admin API tiene un coste por petición; conviene leer la cabecera X-Shopify-Shop-Api-Call-Limit y respetarla.
Para 1000 códigos típicos, el script termina en menos de 90 segundos. Para 10 000 códigos, en menos de 10 minutos con paralelización bien configurada.
6. Salida CSV
El script guarda el CSV con todos los códigos generados. Cabeceras típicas: code, value, type, starts_at, ends_at, usage_limit, customer_limit. Ese CSV es el que el equipo de marketing carga en Klaviyo, ActiveCampaign, n8n, o donde sea para personalizar emails a clientes.
Comprobación final
Tras correr el script, entra al admin de Shopify, sección Discounts. Deberías ver tu campaña con los 1000 códigos cargados. Cada uno con su prefijo, su valor, sus fechas y sus límites de uso.
Si algo falla, los errores típicos son tres:
- Token sin permiso: revisaste los scopes en la app y se te coló «solo de lectura». Vuelve a configurar.
- Rate limit excedido: el script va demasiado rápido. Mete
time.sleep(0.5)entre lotes o usa la cabeceraX-Shopify-Shop-Api-Call-Limitpara auto-regularte. - Códigos duplicados: si el alfabeto de 8 caracteres se queda corto para tu volumen, sube a 10 o 12. Con 8 caracteres en base36 tienes ~2.800 millones de combinaciones; suficiente para casi cualquier campaña real.
Seguridad: lo que NO se cuenta en el vídeo
Tres prácticas que damos por hecho cuando hacemos esto para clientes en producción:
- Revocar el token al terminar la campaña. La app custom se queda con un token activo hasta que la desinstalas. Si era para una campaña única, desinstala la app o regenera el token y guárdalo en sobre cerrado.
- Rotación periódica: si vais a usar el flujo cada trimestre, rota el token cada 90 días automáticamente con un script de mantenimiento.
- Logging: que el script registre quién, cuándo y qué cantidad de códigos generó. Auditoría limpia para cuando alguien pregunte de dónde salieron los códigos del CSV.
Cuándo nos llaman a nosotros para esto
Lo hemos hecho ya muchas veces para clientes en proyecto. Lo más habitual:
- Campañas con red de afiliados o influencers donde cada uno necesita su código único trackeable.
- Eventos físicos donde se reparten tarjetas con código en mano.
- Campañas en medios offline (radio, prensa) con un código por insertción para medir atribución.
- Lealtad de clientes: códigos de un uso por cliente para reactivar segmentos dormidos en email marketing.
Si tu caso entra en alguno de esos, podemos ejecutarlo como pieza puntual o, mejor, integrarlo en una app a medida que el equipo de marketing pueda lanzar desde un panel propio sin pasar por un dev cada vez.
Una nota sobre apps y dependencias
No estamos en guerra contra el marketplace de Shopify. Hay apps excelentes para descuentos masivos (Bulk Discount Code Bot, Dyno Bulk Codes, Amai…) y para muchos negocios son la respuesta correcta: panel visual, soporte, estadísticas, automatizaciones. El criterio no es ideológico.
El criterio es de uso real. Si tu campaña de descuentos es algo de varias veces al año, te ahorras la suscripción mensual y reduces dependencias. Si es algo semanal y crítico para tu marketing, paga la app y centra el dev en lo que aporta más valor que esto.
Lectura relacionada
- Agencia Shopify técnica en España — el resto de lo que hacemos cuando ya estás en Shopify.
- Apps a medida para Shopify — cuando lo del script puntual se convierte en operación recurrente y necesitas panel propio.
- Shopify y comercio agéntico — la siguiente capa: cómo preparar tu catálogo y operaciones para asistentes y agentes de IA.
- IA + Shopify: 15 casos de uso con MCP y AI Toolkit.
¿Quieres que lo hagamos para tu tienda?
Si tienes una campaña en cola y necesitas miles de códigos únicos esta misma semana, en Pango lo ejecutamos en 24-48 horas si la app custom ya existe (o en 3-4 días incluyendo el setup desde cero). Si quieres convertirlo en flujo recurrente con panel propio, hablamos de app a medida.