Year: 2023

  • Error Handling en Cloudpages con AMPscript y SSJS

    Error Handling en Cloudpages con AMPscript y SSJS

    Todos lo hemos visto: todo bien en tu formulario, todo bien en tu AMPscript y cuando lo ejecutas: pum. Error 500. Y lo peor es que SFMC es menos comunicativo que tu ex cuando decía “no tengo nada”. Solo te dice Error 500… y ya está. Adivina qué está mal.

    Así que, llegué a la siguiente solución. Obligar a AMPscript a que me diga que es lo que está mal… usando de intermediario a su amiga menos tóxica: Server Side JavaScript. O SSJS pa los cuates.

    Total que si tienes un bloque de AMPscript que te está dando problemas y quieres troubleshootear, puedes hacer lo siguiente: ponerlo entre dos bloques de SSJS. Algo así

    <script runat="server">
    Platform.Load("Core","1.1.1");
    try{
    </script>
    %%[
    Inserta tu AMPscript Aquí
    ]%%
    <script runat="server">
    }catch (e) {
    Write("<b>Error:</b> " + Stringify(e.message) + "<br><br><b>Descripción:</b> " + Stringify(e.description));
    }
    </script>

    Y voilá! al correr el código nos va a devolver el error y la descripción del error para que podamos debuguear.

    Oye kryz, pero qué pasa si ya está en producción y los usuarios se están quejando de que tiene errores pero no puedo replicarlos?

    Pues he llegado a una solución también para eso. Puedes loggear los errores en una Data Extension.

    Agrega lo siguiente al segundo bloque de SSJS

    <script runat="server">
    }catch (e) {
    Write("<b>Error:</b> " + Stringify(e.message) + "<br><br><b>Descripción:</b> " + Stringify(e.description));
    Platform.Function.InsertData("errorLogDE", 
    ["Error_Message","Error_Description"],
    [e.message,e.description]);
    }
    </script>

    Ya a partir de aquí te puedes poner más creativo y agregarle campos a tu Data Extension de errorLog, por ejemplo:

    %%[
    SET @PAGEURL = RequestParameter('PageUrl')
    <script runat="server">
    Platform.Load("Core","1.1.1");
    try{
    </script>
    %%[
    Inserta tu AMPscript Aquí
    ]%%
    <script>
    var pageUrl = Variable.GetValue("@PAGEURL");
    var userAgent = Platform.Request.UserAgent;
    Platform.Function.InsertData("errorLogDE", 
    ["Error_Page", "User_Agent, "Error_Message","Error_Description", "Error_Date"],
    [pageUrl, userAgent, e.message, e.description, Now()]);
    }
    </script>

    Y agregando este código a tus CloudPages y teniendo una sola Data Extension puedes mantener el log de tus errores, saber de qué página se generaron, cual era el userAgent y así poder troubleshootear o tratar de replicar los errores.

    No olvides configurar el Retention Policy de tu errorLogDE para que no te quedes con los errores hasta la eternidad consumiendo tu espacio de almacenamiento de Data Extensions.

    Happy coding.

  • SFMC Journey Builder icons for Figma

    SFMC Journey Builder icons for Figma

    Archivo Figma Community page

    El archivo original lo creó hace un tiempo Ro Santander, por acá pueden leer su post en LinkedIn.

  • Evento: Armado de un email con MJML en SFMC

    Evento: Armado de un email con MJML en SFMC

    ¿Has escuchado sobre MJML? ¿Si, no, te suena al nombre de una banda Kpop? 

    ¿Te interesa conocer una nueva forma de crear emails en Marketing Cloud?

    MJML es un framework diseñado para crear emails responsivos de una forma sencilla y en esta sesión aprenderemos como hacerlo, así como a poder integrarlos con Marketing Cloud, y la gran variedad de opciones que puedes agregar a tu arsenal de diseño de correos electrónicos.

    Regístrate en el enlace y únete a nosotros 😃

    https://trailblazercommunitygroups.com/e/mg2m5r/

  • PrimeDay Tip: Agrega productos al carrito de Amazon directamente desde tus emails en SFMC

    Ah… el PrimeDay. Esa época loca en la que nos ponen a correr con emails para alcanzar las promociones… y no sabemos qué tanto podemos hacer. Verdad?

    Recientemente me he visto involucrado en estas comunicaciones y descubrí que es posible agregar productos al carrito a través de un enlace usando la API de Product Advertisement 5.0 de Amazon.

    Te cuento como.

    Primero: crea tu pieza de correo electrónico. Supongamos que tienes 4 productos que quieres promover.

    A cada producto agrégale un botón que diga “Agregar al carrito”

    Construye tu enlace de la siguiente forma: (si estás en México)

    Consigue el ASIN de tu producto. Por ejemplo, este almohaditto

    El ASIN está en los campos de descripción del producto. Simplemente presiona command+f y escribe ASIN

    Empieza con la siguiente ruta: https://www.amazon.com.mx/gp/aws/cart/add.html

    Luego escribe ?ASIN.1=B0BGMSCV1G&Quantity.1=1

    Tu enlace va a quedar así: https://www.amazon.com.mx/gp/aws/cart/add.html?ASIN.1=B0BGMSCV1G&Quantity.1=1 Y cuando le des click te va a aparecer la siguiente ventana:

      Y listo! Eso es todo.

      Ahora bien, como ya te diste cuenta hay varias cosas a considerar.

      1. Si no estás en México o tienes una audiencia internacional, revisa la Lista de direcciones que tienes que incluir en Add to cart forms Product Advertising API 5.0
      2. Si quieres agregar más productos, por ejemplo, porque tus descuentos aplican si compras un paquete, puedes concatenar varios parámetros ASIN y Quantity en el enlace, agrega un punto con número ordinal después de cada Key ASIN y Quantity, por ejemplo:
        ?ASIN.1=1231231&Quantity.1=2&ASIN.2=2312313&Quantity.1=3, etcétera.
      3. Ya si lo quieres hacer más interesante, tal vez puedas obtener estos datos dinámicamente y popular una lista dinámica de productos de acuerdo a las preferencias del usuario, las posibilidades son muy amplias.

      Te dejo un ejemplo del código para ponerlo en una cuadrícula:

      <!DOCTYPE html>
      <html>
      <style>
      body {
       font-family: Arial, sans-serif;
      }
       .button {
       border: 1px solid #000000;
       text-decoration: none;
       padding: 5px 10px;
       border-radius: 20px;
       background: #ff0000;
       color: #ffffff;
       font-weight: bold;
       }
       table {
       text-align: center;
       }
       td {
       padding: 5px 10px;
       }
       p {
       font-color: #000000;
       font-size: 2em;
       margin: 0;
       }
      </style>
      <body>
      <table>
      <tbody>
      <tr>
      <td>
      <p>Almohaditto</p>
      </td>
      </tr>
      <tr>
      <td>
      <img src="https://www.salesforcecancun.com/wp-content/uploads/2023/06/image.png" />
      </td>
      </tr>
      <tr>
      <td>
      <a class="button" href="https://www.amazon.com.mx/gp/aws/cart/add.html?ASIN.1=B0BGMSCV1G&Quantity.1=1">Agregar al carrito</a>
      </td>
      </tr>
      </tbody>
      </table>
      </body>
      </html>

      Que al final se verá algo así:

      Mucho éxito en el PrimeDay!