Saltar al contenido

Ingeniería ecommerce

Shopify Functions

Desarrollo de Shopify Functions

Algunas reglas de checkout no pueden ser una app ni un script — tienen que correr dentro del propio checkout de Shopify. Para eso están las Functions. Las construimos, probamos los casos límite y las configuramos por metafields para que el merchant cambie los números sin un despliegue.

Un carrito leído línea por línea, y la operación que devuelve cada unaCOM · 05
Resumen

Lógica que corre donde se toma la decisión

Una Function es una pieza pequeña de lógica que le entregas a Shopify, y que Shopify ejecuta en el momento en que calcula el precio de un carrito, valida un checkout o elige una opción de envío. Corre en su infraestructura, dentro del checkout, sin una llamada de red hacia ti — que es justamente por lo que puede hacer cosas que una app no.

Lo interesante casi nunca es el camino feliz. Es qué le hace la regla a una tarjeta de regalo, a un carrito de once cuando el precio se escribió pensando en uno, a un producto que debía quedar excluido, y a un descuento que se topa con otro descuento. Esos son los casos para los que escribimos pruebas, porque son los que llegan al cliente.

Corre dentro del checkout
Sin callback a tu servidor, sin presupuesto de latencia, sin que una caída tuya pueda romper una compra. Lo ejecuta Shopify.
Configurable sin desplegar
Tarifas, umbrales y exclusiones viven en metafields, así cambiar un cargo es una edición en el admin y no un release.
Segura por cantidad, por construcción
Por unidad contra por línea es el bug más común de Functions en producción. Escribimos las pruebas que lo atrapan antes que un cliente.
Qué incluye

Lo que cubre el trabajo

  1. Discount Functions: descuentos de pedido, producto y envío
  2. Cart Transform: cargos añadidos, bundles y cambios de línea
  3. Validación de checkout: bloquear una compra que no debe proceder
  4. Reglas de personalización de envío y de pago
  5. Configuración por metafields que el merchant puede editar
  6. Pruebas unitarias sobre los casos límite de exclusión y cantidad

Tecnologías

  • Shopify Functions
  • Cart Transform API
  • Shopify Plus
  • Rust
  • GraphQL
  • Metafields
Casos de uso

Dónde ayuda más

  • Un cargo que aplica a unos artículos y a otros no

    Una tarifa de importación, un cargo de manejo o un recargo que debe saltarse tarjetas de regalo, productos concretos o colecciones etiquetadas, y ser correcto en cualquier cantidad.

  • Un descuento que tu motor de promociones no expresa

    Lógica escalonada, condicional o combinada que los tipos de descuento nativos no cubren.

  • Un checkout que debe negarse

    Un carrito que no debería poder completarse: artículos restringidos, combinaciones incompatibles, una región de entrega que no puedes servir.

Proceso

Cómo lo entregamos

  1. Escribir la regla

    En prosa primero: a qué aplica, qué excluye, qué pasa con cantidad dos, y qué pasa cuando se topa con otro descuento. La ambigüedad aquí se vuelve un bug después.

  2. Construir la Function

    Implementada contra la API de Function de su target, con la configuración leída de metafields en vez de compilada dentro de la lógica.

  3. Probar los bordes

    Tarjetas de regalo, tags excluidos, carritos mixtos, cantidades altas, y la interacción con los descuentos existentes — cada uno como prueba y no como revisión manual.

  4. Desplegar y observar

    Publicada a través de tu app, verificada contra carritos reales en una tienda de desarrollo, y vigilada en los primeros pedidos reales que toca.

Preguntas frecuentes

Desarrollo de Shopify Functions

¿Necesitamos Shopify Plus?
Para la mayoría de los targets, sí — Cart Transform y validación de checkout en particular son funciones de Plus. Algunas Functions de descuento están disponibles más ampliamente. Revisamos tu plan contra el target específico antes de cotizar, no después.
¿El merchant puede cambiar la regla después?
Los valores sí — para eso está la configuración por metafields, así una tarifa o un umbral es una edición en el admin. Cambiar la forma de la regla en sí, como agregar un nuevo tipo de exclusión, es cambio de código y despliegue.
¿Cómo interactúan las Functions con nuestros descuentos actuales?
Es de las primeras cosas que fijamos, porque ahí viven las sorpresas. El comportamiento de combinación es explícito en el modelo de Shopify, así que lo decidimos a propósito y probamos las combinaciones en vez de descubrirlas en producción.
¿Rust o JavaScript?
El runtime de Functions de Shopify apunta a WebAssembly y Rust es el camino mejor soportado, que es al que solemos ir. La elección afecta al tooling de build, no a lo que la Function puede hacer.
Construyamos

¿Listo para empezar con desarrollo de shopify functions?

Cuéntanos sobre tu tienda y tus objetivos. Volveremos con un plan claro y honesto y una cotización transparente.