Ir al contenido principal

[Recepción de pedidos - GCW] Crear plantillas para la recepción de pedidos

T
Escrito por Toby Dawson
Actualizado hace más de 3 semanas

Las plantillas son piezas clave en GelatoConnect que gestionan tanto la entrada como la salida de datos. Se encargan de transformar los datos que recibes de tus clientes en formatos que tu flujo de trabajo puede manejar, y también preparan los datos que salen de GelatoConnect para que encajen con lo que necesita el sistema de tus clientes. En esta guía te acompañaremos paso a paso para crear, probar e implementar plantillas en ambos sentidos del intercambio de datos dentro de la gestión de tus pedidos.

Entender las plantillas en GelatoConnect

Las plantillas en GelatoConnect funcionan como planos que definen cómo debe organizarse, procesarse y presentarse la información. Se encargan de dos flujos de datos fundamentales:

Plantillas de datos entrantes

Estas plantillas convierten los datos que llegan desde los sistemas de tus clientes en formatos que GelatoConnect puede procesar:

  • Solicitud de envío de pedido: Convierte los datos del pedido del cliente al formato interno de GelatoConnect

  • Cancelar solicitud: Da formato a las solicitudes de cancelación para que GelatoConnect las entienda

Plantillas de datos salientes

Estas plantillas dan forma a los datos que GelatoConnect envía de vuelta a tus clientes o a sus sistemas:

  • Formato de respuesta: Da estructura a las respuestas de la API para pedidos realizados o cancelados

  • Notificaciones de eventos: Crea mensajes claros y uniformes para mantenerte al tanto del estado de tus pedidos

  • Postbacks: Da forma a los datos que se envían a sistemas externos cuando cambian los estados de los pedidos

Todas las plantillas utilizan el lenguaje de plantillas Jinja2, que ofrece herramientas muy potentes para transformar datos, aplicar lógica condicional y crear contenido dinámico.

Tipos de plantillas que puedes crear

GelatoConnect admite varios tipos de plantillas para diferentes direcciones de flujo de datos:

Plantillas de datos entrantes (Cliente → GelatoConnect)

  • Solicitud de envío de pedido: Convierte los datos del pedido del cliente al formato de GelatoConnect

  • Cancelar solicitud: Convierte las solicitudes de cancelación de los clientes al formato de GelatoConnect

Plantillas de datos salientes (GelatoConnect → Cliente)

  • Enviar respuesta: Da formato a las respuestas enviadas tras realizar un pedido

  • Respuesta de cancelación: Da formato a las respuestas enviadas tras solicitudes de cancelación

  • Webhook: Crea paquetes JSON para notificar a sistemas externos cuando cambia el estado de un pedido

  • Email: Da forma a las notificaciones por correo electrónico para diferentes eventos de pedido

Entender hacia dónde fluye la información es clave al crear plantillas, ya que esto define qué datos tienes a mano y cómo organizarlos.

Guía paso a paso para crear una plantilla

1. Ve a la sección de plantillas

  1. Inicia sesión en tu cuenta de GelatoConnect

  2. Ve a Flujo de trabajo > Recepción de pedidos > Plantillas

  3. Haz clic en el botón Añadir plantilla para empezar a crear una nueva plantilla

2. Elige el tipo de plantilla

Elige el tipo de plantilla que quieres crear:

  • Para las integraciones de API, normalmente necesitarás las plantillas de Order Submit Request, Submit Response y Cancel Response.

  • Para las notificaciones, elige Webhook o Correo electrónico

3. Define el formato de la plantilla

Elige el formato para tu plantilla:

  • JSON: Lo más habitual para integraciones de API y webhooks

  • XML: Se utiliza en algunos sistemas antiguos

  • Texto sin formato: Suele usarse para plantillas de correo electrónico

4. Genera un ejemplo de datos de entrada

Para crear una plantilla eficaz, primero tienes que saber qué datos tendrás disponibles:

  1. Haz clic en el botón Generar plantilla

  2. Selecciona Añadir entrada de muestra para añadir datos de prueba

  3. Elige el tipo de evento adecuado en el menú desplegable:

    • Pedido recibido

    • Pedido no realizado

    • Pedido cancelado

    • Pedido devuelto

    • Pedido producido

    • Pedido entregado

    • Orden enviada

    • Pedido en camino

El sistema rellenará un ejemplo de carga con datos habituales para ese evento, que puedes usar como referencia al crear tu plantilla.

5. Crea tu asignador de plantillas

El Template Mapper es el lugar donde decides cómo se transforma la información entre diferentes formatos:

  1. En la sección Template Mapper, escribe tu plantilla usando la sintaxis de Jinja2

  2. Consulta los datos de referencia del contenido recibido usando llaves dobles: ####{{ variable }}

  3. Añade filtros de formato usando el símbolo de barra vertical: ####{{ variable|js }} (el filtro js adapta las cadenas para JSON)

  4. Utiliza estructuras de control como {% if %}, {% for %} y {% set %} para lógica condicional y bucles

Aspectos a tener en cuenta sobre la orientación de la plantilla

El contenido de tu plantilla cambiará según si gestionas datos entrantes o salientes:

Para las plantillas de datos entrantes (Cliente → GelatoConnect):

  • Concéntrate en extraer datos de formatos personalizados para cada cliente

  • Asocia los nombres de campos personalizados con los nombres estándar de campos de GelatoConnect

  • Valida y transforma los datos para que cumplan con los requisitos de GelatoConnect

  • Gestiona cualquier formato especial o necesidad de conversión de datos

Para las plantillas de datos salientes (GelatoConnect → Cliente):

  • Organiza los datos según lo que espera el sistema del cliente

  • Incluye todos los campos necesarios para la integración del cliente

  • Da formato a las fechas, los valores de moneda y otros datos según las preferencias del cliente

  • Añade cualquier identificador o referencia específico del cliente

Ejemplo: plantilla de Webhook para pedido recibido

Aquí tienes una plantilla de ejemplo para un webhook de "Pedido recibido":

{ "event": "Pedido recibido", "orderId": "####{{ orderId }}", "orderReferenceId": "####{{ orderReferenceId }}", "timestamp": "####{{ created }}", "status": "####{{ fulfillmentStatus }}", "items": [ {% for item in items %} { "itemReferenceId": "####{{ item.itemReferenceId }}", "status": "####{{ item.fulfillmentStatus }}" }{% if not loop.last %},{% endif %} {% endfor %} ], "message": "Hemos recibido tu pedido."}

Esta plantilla crea una estructura JSON con los detalles del pedido y recorre todos los artículos del pedido.

6. Renderiza y comprueba la plantilla

Después de crear tu plantilla:

  1. Haz clic en el botón Render para compilar la plantilla

  2. Revisa el resultado en el panel de vista previa

  3. Comprueba que todos los datos estén bien formateados y que no haya errores de sintaxis

  4. Comprueba si faltan campos o si alguno está mal rellenado

7. Prueba tu plantilla

Probar es fundamental para asegurarte de que tu plantilla funciona correctamente:

  1. Ponle un nombre a tu prueba en la sección Plantilla de prueba

  2. Haz clic en Ejecutar prueba para poner a prueba la plantilla con los datos de ejemplo

  3. Comprueba que el Estado aparezca como Aprobado

  4. Revisa el resultado para asegurarte de que cumple con lo que esperabas

8. Guarda tu plantilla

Cuando estés contento con la plantilla:

  1. Ponle un nombre que lo describa bien a tu plantilla

  2. Haz clic en Añadir plantilla o Guardar cambios para guardarlo

  3. La plantilla ya estará disponible para usar en los disparadores y en la configuración de flujos de trabajo.

Cómo usar plantillas con activadores

Los templates se suelen usar con triggers para automatizar notificaciones cuando ocurren eventos concretos:

1. Crea un disparador

  1. Ve a Flujo de trabajo > Recepción de pedidos > Disparadores

  2. Haz clic en Añadir desencadenador

  3. Selecciona el cliente al que se aplica este desencadenante

  4. Ponle un nombre a tu activador (por ejemplo, "Notificación de pedido recibido")

  5. Selecciona el evento que activará el disparador (por ejemplo, "Pedido recibido")

2. Configura el método de entrega

Elige cómo quieres recibir las notificaciones:

  • URL: Envía un webhook a un sistema externo

    • Indica la URL de destino

    • Elige el método POST o GET

    • Elige el formato JSON o XML

    • Configura las opciones de reintento si lo deseas

  • Email: Envía una notificación por correo electrónico

    • Introduce las direcciones de correo electrónico de los destinatarios

    • Añade una línea de asunto

    • Indica el nombre y la dirección del remitente

3. Elige tu plantilla

  1. En el menú desplegable de Plantilla, selecciona la plantilla que creaste antes.

  2. Si no existe ninguna plantilla, puedes crear una directamente en la configuración del disparador usando la misma interfaz que te hemos mostrado arriba.

Crea plantillas directamente desde los desencadenantes

Para que te resulte más fácil, también puedes crear plantillas mientras configuras los desencadenantes:

  1. Al crear un trigger, en vez de elegir una plantilla existente, haz clic en Crear plantilla.

  2. Define el formato de la plantilla (JSON, XML o texto sin formato)

  3. Usa el editor de plantillas para crear tu plantilla como te hemos explicado arriba.

  4. Guarda la plantilla y se seleccionará automáticamente para este disparador.

Este método es muy útil para crear una plantilla rápidamente cuando ya estás configurando un disparador.

Vincular plantillas con los endpoints de la API

Al enviar pedidos a través de la API, a menudo tendrás que adaptar los datos entre tu formato y el formato de GelatoConnect. Las plantillas se encargan de esta transformación, pero debes vincular tu plantilla al endpoint de la API para que se aplique correctamente.

Cómo vincular una plantilla a un endpoint de envío de pedidos:

  1. Ve a tu lista de conectores y haz clic en el enlace Editar que está junto al endpoint de envío de pedidos.

  2. En la página de configuración del endpoint, busca la sección Plantilla de endpoint

  3. Elige tu plantilla para enviar pedidos en el menú desplegable

  4. Haz clic en el botón Establecer endpoint en la esquina superior derecha de la página

  5. Haz clic en Guardar cambios en la parte superior derecha para aplicar tu configuración

Después de completar estos pasos, todos los pedidos enviados a este endpoint usarán tu plantilla para transformar los datos antes de procesarlos. Así te aseguras de que el formato de tu sistema se convierta correctamente al formato que espera GelatoConnect.

Sin esta configuración, tu plantilla no se aplicará aunque exista y esté bien diseñada, lo que puede provocar errores al validar pedidos si el formato de tus datos no coincide exactamente con los requisitos de GelatoConnect.

Técnicas avanzadas de plantillas

Cómo usar las búsquedas

Las búsquedas son especialmente útiles para mapear datos en ambas direcciones entre sistemas. Funcionan de manera diferente según la dirección de la plantilla:

Para plantillas entrantes (cliente → GelatoConnect):

Asocia los valores personalizados de tus clientes con los valores estándar de GelatoConnect:

{% set shipMethod = lookups({"shipping_code": order.shipping.method}, strict=False, default="normal") %} "shipmentMethodUid": ####{{ shipMethod|js }},

Para las plantillas salientes (GelatoConnect → Cliente):

Convierte los valores internos de GelatoConnect en formatos que tus clientes esperan:

{% set customerShippingCode = lookups({"gelatoShipMethod": shipment.shipmentMethodUid}, strict=False, default=shipment.shipmentMethodUid) %} "shipping_method": ####{{ customerShippingCode|js }},

Lógica condicional

Usa condiciones para incluir o dar formato a los datos de manera diferente según la situación:

{% if item.fulfillmentStatus == "shipped" %} "trackingNumber": "####{{ item.trackingCode }}", "trackingUrl": "####{{ item.trackingUrl }}",{% endif %}

Asignación de variables

Crea variables para que las expresiones complejas sean pan comido:

{% set fullName = customer.firstName + " " + customer.lastName %} "recipientName": "####{{ fullName }}",

Bucles con objetos complejos

Navega por estructuras de datos anidadas:

"items": [ {% for item in items %} { "sku": "####{{ item.sku }}", "quantity": ####{{ item.quantity }}, "opciones": [ {% for option in item.options %} { "name": "####{{ option.name }}", "value": "####{{ option.value }}" }{% if not loop.last %},{% endif %} {% endfor %} ] }{% if not loop.last %},{% endif %} {% endfor %}]

Buenas prácticas para plantillas

Convenciones de nombres según la dirección

  • Usa nombres claros y descriptivos que indiquen tanto el propósito como la dirección del flujo de datos

  • Para las plantillas entrantes: incluye prefijos como "IN_" o sufijos como "_Request"

  • Para las plantillas salientes: utiliza prefijos como "OUT_" o sufijos como "_Response" o "_Notification"

  • Incluye el nombre del cliente para plantillas personalizadas para cada cliente

  • Usa nombres coherentes para que encontrar las plantillas sea pan comido

Gestión de errores

  • Establece valores predeterminados para evitar errores por referencias nulas

  • Utiliza el filtro default para los valores que faltan: ####{{ variable|default('N/A') }}

  • Utiliza bloques try/except para las partes del código que puedan dar problemas

Mantenimiento

  • Añade comentarios para explicar la lógica compleja: {# Esto gestiona el caso especial de los pedidos internacionales #}

  • Mantén las plantillas modulares y centradas en objetivos concretos

  • Actualiza las plantillas cuando cambien las estructuras de datos o los requisitos

Probando

  • Haz pruebas con diferentes situaciones de datos, incluso las más extremas

  • Verifica las plantillas con datos reales de producción siempre que puedas

  • Crea pruebas completas para las plantillas más importantes

Solucionar problemas con las plantillas

Problemas habituales y cómo solucionarlos

Problema

Posible motivo

Solución

Error de sintaxis

Paréntesis o comillas que no encajan

Revisa bien la sintaxis de la plantilla; asegúrate de que todas las etiquetas de apertura tengan su etiqueta de cierre correspondiente.

Faltan datos

Hablando de campos que no existen

Comprueba que los nombres de los campos coincidan con los del contenido recibido y añade valores predeterminados para los campos opcionales.

Problemas de formato

Uso incorrecto del filtro

Confirma que estás usando correctamente los filtros como js, json o xml.

Plantilla no aplicada

Plantilla no vinculada al desencadenante

Verifica la configuración del disparador y la selección de la plantilla

Errores al acceder a datos anidados

Ruta incorrecta a las propiedades anidadas

Revisa la estructura de los datos y ajusta las rutas de las propiedades según sea necesario

Errores al asignar campos

Nombres de campos incorrectos para los datos entrantes o salientes

Para las plantillas entrantes, revisa los nombres de los campos de cliente; para las plantillas salientes, asegúrate de que el formato de respuesta sea el esperado.

Problemas al transformar los datos

Formatos de datos incompatibles

Asegúrate de convertir correctamente los tipos de datos entre sistemas (fechas, números, etc.).

Consejos para resolver problemas

  • Usa el botón Render a menudo mientras desarrollas para detectar errores cuanto antes.

  • Añade una salida temporal de depuración para ver los valores de las variables

  • Revisa si hay errores de escritura en los nombres de los campos, ya que suelen ser una fuente habitual de problemas.

  • Recuerda que Jinja2 distingue entre mayúsculas y minúsculas al referirse a las variables.

¿Ha quedado contestada tu pregunta?