Guía completa de funciones de Shopify: personalice la lógica empresarial a escala
Shopify Functions permite a los desarrolladores personalizar la lógica comercial central que se ejecuta dentro de la infraestructura de Shopify en lugar de en servidores externos. Esto significa que los cálculos de descuentos personalizados, el filtrado de métodos de pago, las modificaciones de las tarifas de envío y la validación del carrito se ejecutan en milisegundos sin latencia de red. Las funciones reemplazaron al Editor de scripts (Shopify Scripts) y representan el futuro de la personalización del backend en la plataforma. Esta guía cubre cada tipo de función, flujo de trabajo de desarrollo y patrón de implementación.
Conclusiones clave
- Las funciones de Shopify se ejecutan en un entorno limitado de WebAssembly dentro de la infraestructura de Shopify, lo que garantiza tiempos de ejecución inferiores a 5 ms.
- Hay cinco API de funciones disponibles: descuentos, personalización de pagos, personalización de entregas, validación de carritos y enrutamiento de pedidos.
- Las funciones están escritas en Rust, JavaScript o cualquier lenguaje que se compile en WebAssembly.
- Cada función recibe información a través de los resultados de la consulta GraphQL y devuelve una salida estructurada que Shopify aplica a la operación.
- Las funciones se implementan como parte de las aplicaciones de Shopify y los comerciantes pueden configurarlas a través del administrador.
¿Qué son las funciones de Shopify?
Shopify Functions son programas livianos que personalizan operaciones comerciales específicas en puntos de extensión predefinidos. A diferencia de los webhooks (que envían datos a servidores externos), las funciones se ejecutan dentro de la infraestructura de Shopify como módulos WebAssembly, lo que garantiza:
- Velocidad: ejecución inferior a 5 ms (sin latencia de red)
- Confiabilidad: No hay dependencias de servidores externos
- Escala: maneja cualquier volumen de tráfico sin planificación de capacidad
- Seguridad: ejecución en espacio aislado sin sistema de archivos ni acceso a la red
API de funciones
| API | Propósito | Reemplaza |
|---|---|---|
| Descuentos | Lógica de descuento personalizada (BOGO, escalonada, condicional) | Shopify Scripts (descuentos en artículos de línea) |
| Personalización de pagos | Mostrar/ocultar/reordenar métodos de pago al finalizar la compra | Lógica condicional del método de pago |
| Personalización de entrega | Modificar tarifas de envío, nombres y disponibilidad | Guiones de tarifas de envío |
| Validación del carrito | Validar el contenido del carrito y bloquear combinaciones no válidas | Validación de atributos del carrito |
| Enrutamiento de pedidos | Personalizar la selección de ubicación de cumplimiento | Enrutamiento de ubicación predeterminada |
Entorno de desarrollo
Requisitos previos
- Shopify CLI (última versión)
- Nodo.js 18+
- Una cuenta de Shopify Partner y una tienda en desarrollo
- Cadena de herramientas de Rust (para funciones basadas en Rust) o tiempo de ejecución de JavaScript
Creando una función
Crea una nueva función usando Shopify CLI:
Ejecute npx shopify app generate extension y seleccione el tipo de función. La CLI genera:
| Archivo | Propósito |
|---|---|
src/run.js (o run.rs) | La lógica de la función |
| CÓDIGO0 | Consulta GraphQL que define los datos de entrada |
| CÓDIGO0 | Configuración y metadatos |
| CÓDIGO0 | El esquema de la API de Shopify (generado automáticamente) |
Flujo de trabajo de desarrollo
- Defina consulta de entrada: escriba la consulta GraphQL en
input.graphqlque recupera los datos que necesita su función - Implementar lógica: Escribe la función en
src/run.jsque transforma la entrada en salida - Prueba localmente: ejecuta pruebas unitarias con
npx shopify app function test - Implementar: Envía a Shopify con
npx shopify app deploy - Configurar: los comerciantes configuran los parámetros de la función a través de la interfaz de usuario de la aplicación.
Funciones de descuento
Cómo funcionan las funciones de descuento
Una función de descuento recibe datos del carrito (artículos de línea, información del cliente, códigos de descuento) y devuelve las operaciones de descuento para aplicar. La función se ejecuta cada vez que se evalúa el carrito: al cargar la página, agregar/eliminar artículos y al finalizar la compra.
Patrones de descuento comunes
Compre X y obtenga Y: Cuando el carrito contiene el producto X, aplique un porcentaje o descuento fijo al producto Y.
Descuentos escalonados: aplique descuentos crecientes según el total del carrito (10 % sobre 100 USD, 15 % sobre 200 USD, 20 % sobre 500 USD).
Precios específicos del cliente: verifique las etiquetas o metacampos del cliente y aplique descuentos específicos del segmento (mayorista, VIP, empleado).
Descuentos por paquetes: cuando haya combinaciones de productos específicas en el carrito, aplique un descuento por paquete (compre los tres y ahorre un 25%).
Descuentos por volumen: aplique descuentos por unidad según la cantidad (de 1 a 9 unidades al precio completo, de 10 a 24 con un 10 % de descuento, de 25 o más con un 20 % de descuento).
Ejemplo de consulta de entrada
La consulta de entrada de la función de descuento normalmente solicita:
- Artículos de línea del carrito con ID de producto, ID de variante, cantidades y precios
- Información del cliente (ID, etiquetas, metacampos) si se utiliza la segmentación de clientes
- Código de descuento si se valida un descuento basado en código
- Metacampos de productos para reglas de descuento específicas de productos.
Estructura de salida
La función devuelve una serie de operaciones de descuento:
| Operación | Descripción |
|---|---|
| CÓDIGO0 | Aplicar descuento a productos/variantes específicos |
| CÓDIGO0 | Aplicar descuento al total del pedido |
| CÓDIGO0 | Eliminar gastos de envío |
Cada operación incluye el valor del descuento (porcentaje o monto fijo), un mensaje que se muestra al cliente y las condiciones bajo las cuales se aplica.
Funciones de personalización de pagos
Casos de uso
- Ocultar métodos de pago: Ocultar "Pago contra reembolso" para pedidos superiores a un umbral
- Métodos de reorden: muestra primero el método de pago más popular según la ubicación del cliente
- Cambiar nombre de métodos: muestra nombres de métodos de pago localizados
- Agregar mensajes: muestra información adicional junto a métodos de pago específicos
Patrón de implementación
La función recibe los detalles del carrito y los métodos de pago disponibles. Devuelve operaciones que modifican la lista de métodos de pago:
| Operación | Efecto |
|---|---|
| CÓDIGO0 | Eliminar un método de pago del proceso de pago |
| CÓDIGO0 | Cambiar el nombre para mostrar de un método de pago |
| CÓDIGO0 | Reordenar métodos de pago |
Funciones de personalización de entrega
Casos de uso
- Cambiar el nombre de las opciones de envío: muestra "Entrega exprés (2-3 días)" en lugar de los nombres de las tarifas del transportista
- Ocultar opciones: eliminar el envío terrestre para productos perecederos
- Opciones de reorden: muestra primero la opción más rápida para pedidos urgentes
- Agregar mensajes: muestra las fechas de entrega estimadas junto a cada opción
Implementación
La función recibe tarifas de envío de transportistas configurados y devuelve modificaciones. La entrada incluye artículos de línea del carrito (para verificar los tipos de productos), dirección de envío (para reglas basadas en la ubicación) y opciones de entrega disponibles.
Funciones de validación del carrito
Casos de uso
- Límites de cantidad: Máximo 5 unidades de productos de edición limitada
- Restricciones de combinación: Producto A y Producto B no pueden estar en el mismo carrito (incompatible)
- Requisitos mínimos: Las cuentas mayoristas deben realizar un pedido mínimo de 100 USD
- Restricciones geográficas: bloquea el envío de ciertos productos a regiones restringidas
Salida de validación
Cuando la validación falla, la función devuelve un error con:
- Objetivo: qué línea de carrito o el carrito en sí
- Mensaje: mensaje de error dirigido al cliente
- Severidad: Error (bloquea el pago) o advertencia (permite pero notifica)
Funciones de prueba
Prueba unitaria
Pruebe funciones localmente sin implementar:
- Cree dispositivos de prueba con datos de entrada de muestra
- Ejecute la función contra los accesorios.
- Afirmar que el resultado coincide con los resultados esperados.
La CLI de Shopify genera un texto estándar de prueba:
| Escenario de prueba | Qué verificar |
|---|---|
| Carro vacío | La función no devuelve operaciones |
| Carrito calificado | Descuento/modificación correcta aplicada |
| Casos extremos | Valores límite, cantidades máximas |
| Manejo de errores | Entrada no válida manejada correctamente |
| Rendimiento | La ejecución se completa en menos de 5 ms |
Modo de vista previa
Pruebe las funciones en una tienda de desarrollo antes de publicar:
- Implemente la función en su tienda de desarrollo.
- Configúrelo a través del administrador de la aplicación.
- Agregue productos al carrito y verifique el comportamiento.
- Verifique los registros de ejecución de funciones en la salida de Shopify CLI
Consideraciones de rendimiento
Límites de ejecución
| Límite | Valor |
|---|---|
| Tiempo de ejecución | 5 ms máximo |
| Memoria | 12 MB |
| Tamaño de entrada | 64 KB |
| Tamaño de salida | 64 KB |
| Instrucciones | 1 millón de instrucciones Wasm |
Consejos de optimización
- Minimiza la consulta de entrada solo a los campos que tu lógica necesita
- Evite bucles anidados complejos: use mapas hash para búsquedas
- Calcular previamente los valores en la configuración de la aplicación en lugar de en la función.
- Utilice Rust para funciones críticas para el rendimiento (2-3 veces más rápido que JavaScript)
- Ejecución de la función de perfil utilizando las herramientas de rendimiento de Shopify CLI
Configuración del comerciante
Interfaz de usuario de configuración de la aplicación
Las funciones se configuran a través de la interfaz de usuario de tu aplicación, no directamente en el administrador de Shopify. Cree una página de configuración que:
- Muestra el propósito de la función y la configuración actual.
- Permite a los comerciantes establecer parámetros (umbrales, selecciones de productos, porcentajes)
- Almacena la configuración como metacampos que la función lee en tiempo de ejecución.
- Valida las entradas antes de guardar.
Almacenamiento de configuración
Configuración de la función de tienda usando metacampos de la aplicación:
- Metacampos sobre el descuento: montos umbrales, valores porcentuales, ID de productos
- Almacenamiento de datos de aplicaciones: configuración compleja como reglas escalonadas y segmentos de clientes
- Configuración de función: Pasada como parte de la entrada de la función a través de la consulta de entrada
Servicios de desarrollo de funciones ECOSIRE
Las funciones personalizadas de Shopify requieren experiencia en el dominio del comercio y habilidades de desarrollo de WebAssembly. Los servicios de desarrollo de aplicaciones Shopify de ECOSIRE incluyen diseño, implementación, prueba e implementación de funciones. Nuestro equipo crea motores de descuentos, personalizaciones de pagos y lógica de validación adaptadas a sus reglas comerciales. Para necesidades continuas, nuestros servicios de soporte mantienen y desarrollan tus funciones personalizadas a medida que avanza la plataforma de Shopify.
Lectura relacionada
- Extensibilidad de pago de Shopify
- Guía de desarrollo de aplicaciones de Shopify
- Guía de integración de API de Shopify
- Automatización del flujo de Shopify
- Guía empresarial de Shopify Plus
¿Las funciones de Shopify reemplazan a los scripts de Shopify?
Sí. Los scripts de Shopify están obsoletos y las funciones son el reemplazo. Las diferencias clave: las funciones se ejecutan como WebAssembly (no Ruby), se implementan a través de aplicaciones (no el Editor de secuencias de comandos) y admiten más puntos de extensión. Los scripts existentes siguen funcionando, pero Shopify recomienda migrar a Functions.
¿Pueden los no desarrolladores crear Shopify Functions?
No directamente. Las funciones requieren conocimientos de programación (JavaScript o Rust). Sin embargo, los desarrolladores pueden crear aplicaciones con interfaces de usuario de configuración que permitan a los comerciantes personalizar el comportamiento de las funciones sin necesidad de codificación. Muchas aplicaciones en Shopify App Store usan funciones internamente y al mismo tiempo presentan una interfaz amigable para los comerciantes.
¿Existe un límite en la cantidad de funciones que se pueden ejecutar en una sola tienda?
Shopify no impone un límite estricto en la cantidad de funciones instaladas. Sin embargo, cada evaluación de pago ejecuta todas las funciones aplicables de forma secuencial, por lo que se aplican consideraciones de rendimiento. El límite de 5 ms por función garantiza que las funciones individuales no puedan ralentizar el pago, pero tener docenas de funciones podría, en teoría, afectar el tiempo total de evaluación del pago.
Escrito por
ECOSIRE Research and Development Team
Construyendo productos digitales de nivel empresarial en ECOSIRE. Compartiendo perspectivas sobre integraciones Odoo, automatización de eCommerce y soluciones empresariales impulsadas por IA.
Artículos relacionados
Personalización de IA para comercio electrónico: experiencias individualizadas que convierten
Implemente personalización de IA para el comercio electrónico con recomendaciones de productos, contenido dinámico, búsqueda personalizada y optimización del recorrido del cliente para obtener conversiones entre un 15 % y un 30 % más.
Shopify sin cabeza con hidrógeno: cree escaparates personalizados de alto rendimiento
Guía completa para crear escaparates Shopify sin cabeza con el marco Hydrogen que cubre Remix, Storefront API, alojamiento Oxygen y optimización del rendimiento.
Creación de tiendas Shopify centradas en dispositivos móviles: guía de optimización completa
Crea tiendas Shopify centradas en dispositivos móviles que generen conversiones. Cubre la selección de temas, UX móvil, optimización del pago, rendimiento de la aplicación y estrategias móviles específicas de Shopify.