ClaimRow reclama más de un cupón cuando envío mi correo electrónico.

Si utilizas cupones personalizados para tus envíos en SFMC la posibilidad es que estés usando la función ClaimRow de ampscript para lograr esta funcionalidad.

Si no sabes de qué estoy hablando, vamos por partes:

Si quieres ofrecer a tus usuarios cupones personalizados para cambiar en tus puntos de venta digitales o físicos, puedes utilizar la función ClaimRow de ampscript. Necesitarás:

  • Una Data Extension con los campos: CouponCode (text 50), Email (email), ClaimedDate(date), isClaime (boolean). Puedes agregar campos adicionales si así lo deseas. Para este ejemplo asumimos que esta DE se llama “CouponCodes_2024”
  • Un email donde utilizar la función ClaimRow.

Una vez que tengas hecho eso es muy sencillo, según la documentación:

%%[
SET @EmailAddress = emailAddr /* utilicemos System String que contiene el email del usuario en el contexto del mensaje */
SET @CouponRow = ClaimRow('CouponCodes_2024', 'isClaimed', 'EmailAddress', @EmailAddress, 'ClaimedDate', NOW()) /* la DE en la función ClaimRow debe ser declarada de forma explícita. No puede ser una variable de ampscript */
IF NOT EMPTY(@CouponRow) then
    SET @CouponCode = FIELD(@CouponRow, 'CouponCode') /* guarda el cupón de tu fila en una variable para poder usarlo en el cuerpo del email */
ELSE
    RAISEERROR('No hay cupones disponibles', false) /* Esto detendrá el envío completamente */
ENDIF
]%%

%%=v(@CouponCode)=%%

Pura belleza, verdad?

Pues no es cierto…

Hay un par de cosas a considerar:

  • te recomiendo que agregues una verificación del contexto del mensaje (_messagecontext) y asegurarte que es un envío o una vista como web page y no un preview o FTAF, etc.
  • este código se copiará completamente en tu versión de texto si tienes Multipart MIME activado por lo que probablemente te enfrentes con el error que nos trae hasta este post.

Al momento de hacer el envío, tu código ampscript se calculará dos veces: una para tu versión html y otra para su versión de texto. Y si bien ClaimRow en la documentación dice que “si encuentra una fila ya reclamada para esa dirección de correo devolverá el mismo valor previamente reclamado” en la práctica… eso no sucede.

¿Cómo solucionarlo?

Hay un número de cosas que puedes hacer.

  1. Poner tu función ClaimRow dentro de otra función LookupRows para asegurarte de que no hay otra fila ya reclamada por ese email.
    • Desventajas: agregas más tiempo de cómputo y si tienes muchos emails que mandar eso puede ser problemático.
  2. Desactivar la opción Multipart MIME en tu email y enviar solo la versión HTML
    • Desventajas: Puede que tengas algunos usuarios en un cliente o servidor que solo acepte la versión de Texto y tu mensaje no va a ser entregado.
  3. (Mi favorita) Editar la versión de texto de tu Email para que incluya solo un enlace a VAWP en el que diga que para ver su cupón visiten el enlace.

Listo!

Si ya te habías enfrentado a este problema espero que esta solución te ayude y si no: bueno, ahora ya sabes algo más.

Hay alguna función que te gustaría que explorara en este blog? Cuéntame en tus comentarios.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *