Simplificar lo complejo: aspectos básicos del contenido dinámico de un email transaccional
Dyspatch es una plataforma de producción de emails que ayuda a las grandes empresas a crear y modificar emails transaccionales y con disparadores de forma más rápida.
Es innegable que los emails transaccionales son complicados. A diferencia de las páginas web, donde los navegadores para los que hay que prestar asistencia se pueden contar con los dedos de una mano, la programación de cualquier tipo de email puede ser una pesadilla si se tiene en cuenta la gran variedad de clientes de email y dispositivos. Si a esto le añadimos la complejidad de la programación del contenido dinámico, específico para cada cliente y transacción, resulta evidente que emails transaccionales puede ser muy, pero que muy difícil.
Simplificar esa complejidad puede ser más fácil de lo que crees. Con demasiada frecuencia, los equipos de desarrollo y diseño creen que cualquier proceso que permita crear emails transaccionales de forma rápida y sencilla sacrifica el contenido dinámico, esencial para la personalización de los emails. No tiene por qué ser así. En lugar de programar emails en HTML desde cero, un proceso basado en plantillas que utilice un lenguaje de plantillas con una potente capacidad de personalización hace que crear (o actualizar) emails transaccionales sea rápido y sencillo.
Un buen punto de partida es entender los elementos básicos de programación que conforman un email transaccional típico. Hay muchos lenguajes de plantillas de email diferentes entre los que elegir, como Django (Python), Twig (PHP) y Nunjucks (JavaScript), entre otros. Pero aquí usaremos Jinja, a modo de ejemplo, y un excelente email de muestra de Sephora.
Sustitución de variables
La sustitución de variables se utiliza para insertar contenido específico para cada persona en un email. Como mínimo, deberías dirigirte al cliente por su nombre, es decir:
Hola, {{ first_name }} {{ last_name }},
Incluir el nombre del cliente es simplemente de buena educación. Pero también es una buena forma de evitar que tus mensajes transaccionales acaben en la carpeta Promociones de la bandeja de entrada del cliente.
La sustitución de variables también se utiliza para transmitir información más confidencial a un usuario, como enlaces para restablecer contraseñas y tokens de autenticación multifactor (MFA).
El email de recibo de Sephora que estamos utilizando como ejemplo comienza con sustituciones de variables para el nombre del cliente y la fecha de compra:
Hola, {{ first_name }}, aquí tienes el recibo de tu visita del {{ purchase_date }}

Bucles
Los bucles, o iteraciones, se utilizan de forma similar para mostrar puntos de datos específicos del usuario, pero normalmente más de uno y en un “bucle”, lo que básicamente significa que se repiten tantas veces como sea necesario, en lugar de hacerlo de uno en uno como hace una simple sustitución de variables. Un buen ejemplo es una confirmación de pedido o recibo, donde los puntos de datos son los detalles del artículo (producto, precio, cantidad, etc.) y donde el número de artículos puede ser prácticamente ilimitado.
Este es un ejemplo sencillo utilizando solo el nombre del artículo y el precio.
{% for item in items %}rnt <span>{{ item.name }} - ${{ item.price }}</span>rn{% endfor %}rn
Y este es un ejemplo renderizado:
<span>Hair clips – $4.99</span>rn<span>Duotang – $2.99</span>rn<span>Shirt – $12.99</span>
La cadena de entrada también puede incluir detalles adicionales, como {{ item.image }}, {{ item.quantity }} o {{ item.description }}.
La iteración también se puede utilizar para enviar las “búsquedas guardadas” de los clientes, como una lista de anuncios inmobiliarios o una lista de paquetes vacacionales marcados como favoritos en búsquedas recientes.
La sección de “Detalles de la transacción” del email de Sephora es una combinación de un bucle (para la lista de artículos) y sustitución de variables (para el subtotal, los impuestos y el total).

Este es el bucle para mostrar los artículos comprados (ten en cuenta que el código HTML de salida se ha simplificado aquí a modo de ejemplo):
{% for item in items %}rn <span>{{ item.image }}</span> rn <span>{{ item.name }}</span> rn <span>{{ item.number }}</span> rn <span>Price: ${{ item.price }}</span> rn <span>Qty: {{ item.quantity }}</span> ttrn <span>C${{item.total}}</span> rn{% endfor %}
Además de la sustitución de variables para el subtotal, los impuestos y el total:
<span>Subtotal: ${{ order_subtotal }} </span> rn<span>BRITISH COLUMBIA PST (7%): ${{ tax_bcpst }}</span> rn<span>CANADA GST/TPS (5%): ${{ tax_gst }}</span> rn<span><b>Total: ${{ order_total }}</b></span>
Condicionales
Los condicionales se utilizan para mostrar contenido alternativo o adicional a un cliente en función de un conjunto de variables. Algunos ejemplos sencillos podrían ser los siguientes:
- Mostrar una oferta específica el día del cumpleaños de un usuario:
{% if is_birthday %}rn<p>Happy Birthday! Use the coupon code BIRTHDAY10 to receive 10% off your next order.</p>rn{% endif %}
- Mostrar una oferta de venta adicional específica b
- asada en la compra original de un usuario:
{% if subscription_plan == “standard” %}rnrn <p>Upgrade to Unlimited today and receive 20% off your first month.</p>rnrn{% endif %}rn
Los condicionales se pueden utilizar en pruebas A/x para mostrar diferente contenido a diferentes audiencias, con el fin de determinar qué ofertas tienen un mejor rendimiento.
En el caso de Sephora, utilizan un condicional para mostrar una oferta dinámica que promociona su programa de fidelidad o su encuesta para clientes:

Este es el condicional para mostrar la oferta de regalo de cumpleaños:
{% if loyalty_member == false %}rnrn <h1>THE 2019 BIRTHDAY GIFT</h1>rn <p>Celebrate by choosing a <b>FREE</b> gift of minis from… </p>rnrn{% else %}rnrn <h1>WANT a $250 SEPHORA GIFT CARD?</h1>rn <p>Tell us about your shopping experience and it could… </p>rnrn{% endif %}
Si el estado como miembro del programa de fidelidad es “true”, se muestra la opción “else”:

Conclusión
Esta lista no es en absoluto exhaustiva, pero cubre los elementos más comunes de un buen email transaccional. Si encuentras un lenguaje de plantillas que se ajuste a tus requisitos y dominas los conceptos básicos de la sustitución de variables, los bucles y los condicionales, estarás en el buen camino para simplificar la complejidad de crear y actualizar estas comunicaciones críticas para el negocio.
Una plataforma de producción de emails como Dyspatch puede ayudarte a crear emails excelentes, con contenido dinámico inteligente y de forma rápida. La combinación de Dyspatch y la potente infraestructura de envío de Mailgun te permitirá garantizar que cada cliente reciba el email adecuado en el momento oportuno.