> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.icommkt.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Como implementar Carrito abandonado en Vtex

A Continuación se describen los pasos para la implementación del carrito abandonado en VTEX

### Creación del Campo Calculado

1. Ingresa al Dynamic Storage en: *https://{**Account**}.ds.vtexcrm.com.br/* y luego a la solapa ***Data Entities**.*

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-1_13izbd1.png)

2. Sobre la Entidad CL (Cliente), presiona en **editar**

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-2_dfcxfa.png)

3. Una vez en la pantalla de detalle de campos de la entidad CL, accede a la solapa **Automatic Fields** y presiona sobre **New Calculated Field**.

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-3_kjpovu.png)

4. Completa con los siguientes datos el nuevo campo calculado
    a. **Name:** rclastsessiondate_ddmmyyyy
    b. **Display Name:** Session Data in DD/MM/YYYY format
    c. **Type:** Varchar 10

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-4_jd2opa.png)

5. Presiona sobre la rueda de configuración a la derecha del campo que darás de alta

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-5_1h2h30u.png)

6. Completa el texto de la formula con el siguiente código

```c
if(  {!rclastsessiondate}  != null && {!rclastsessiondate}.HasValue)
{
    return {!rclastsessiondate}.Value.ToString("dd/MM/yyyy");
}
return null;
```

7. Selecciona **Insert or Update** en el campo Recalculate at:

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-7_15vyig6.png)

8. Presiona sobre el botón **Validate** (Validar), y obtendrás una ventana como la siguiente para confirmar que el dato que se calculará es correcto. Allí debes cargar una fecha con el formato requerido YYYY-MM-DD

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-8_1wa5uyo.png)

9. Presiona OK y obtendrás el mensaje de éxito.

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-9_d813d6.png)

*(Ignorar el mensaje de Syntax Error)*

10. **Grabar**

11. En el listado de Entidades de Datos, debemos publicar los cambios realizados. Para ello simplemente presionamos el botón grabar a la izquierda del nombre de la entidad de datos de Clientes (CL).

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/untitled-11_1o2d3mt.png)

### Creación del Trigger

1. Ingresa al **Dynamic Storage** en: https://{Account}.ds.vtexcrm.com.br/ y luego a la solapa **Triggers**.

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/trigger-1_17jg8yo.png)

2. Presiona en **Add New / Agregar Nuevo**

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/trigger-2_imfkzn.png)

3. Completa los campos básicos de datos del trigger

    a. **Nombre:** Carrito Abandonado

    b. **Data Entity:** (Seleccionar) Cliente

    c. **Status:** Habilitado / Enabled

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/trigger-3_1wcr8ly.png)

4. En la solapa **Rule**, completa con los siguientes datos

    a. **Trigger Rule:** O valor de um attributo foi alterado
    b. **Field:** Última sessāo
    c. Configuramos los siguientes Filtros Adicionales presionando 4 veces sobre ***Add Filter***

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/trigger-4_fkzner.png)

5. En la solapa **If Positive**, completa la acción a realizar.
    a. **Action:** Send an HTTP request
    b. **Request data:** 
        i. **URL**: [https://api.icommarketing.com/Contacts/SaveContact.Json/](https://api.icommarketing.com/Contacts/SaveContact.Json/)
        ii. **Method:** POST
        iii. **Headers:** 
            
1. **Name:** Authorization
            
2. **Value:** [API_KEY]

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/trigger-5_vmjxu9.png)
    
      iv. Content as JSON: (Obtener previamente el ProfileKey y reemplazar en código)

```json
{
   "ProfileKey":"[ProfileKey]",
   "Contact":{
      "Email":"{!email}",
      "CustomFields":[
         {
            "Key":"nombre",
            "Value":"{!firstName}"
         },
         {
            "Key":"apellido",
            "Value":"{!lastName}"
         },
         {
            "Key":"url_carrito",
            "Value":"{!rclastcart}"
         },
         {
            "Key":"fecha_abandono",
            "Value":"{!rclastsessiondate_ddmmyyyy}"
         }
      ]
   }
}
```
||| Importante: Reemplaza el [API_KEY] y [ProfileKey] por los valores obtenidos de la instancia del cliente. A la hora de sumar las credenciales, es necesario reemplazar el valor completo eliminando corchetes.

# Problemas Frecuentes

1. **El problema más frecuente suele ser que al implementar los pasos anteriores, pasan un par de horas, y sin embargo no ingresan registros dentro del perfil de carrito abandonado. Revisa los siguientes puntos para verificar la configuración realizada.**

    a. Verificar que se haya ingresado el **APIKEY** correspondiente a la instancia del cliente. (Punto **5.b.iii** dentro del **paso 2 “Creación del Trigger”**)
    b. Verificar el JSON de la petición ingresada en el punto **5.b.iv** dentro del **paso 2 “Creación del Trigger”**
        i. ¿Es correcto el **ProfileKey** ingresado? 
        ii. ¿Los campos que se detallan dentro de cada **“Key”** del atributo **“CustomFields”** , existen dentro del perfil vinculado? En la imagen a continuación, se muestra el ejemplo de una configuración típica.

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/pobelmas-1_m20xzt.png)

En este caso, el perfil debe contar con los campos: 

* email (genérico, debe existir siempre)
* nombre
* apellido
* url_carrito
* fecha_abandono

2. **La fecha de abandono del carrito no está ingresado en el perfil con el formato DD/MM/YYYY.**
    
    Verificar el JSON de la petición ingresada en el punto **5.b.iv** dentro del **paso 2 “Creación del Trigger”** y cotejar el **“Value”** correspondiente al **“Key”:”fecha_abandono”**. Allí debe figurar como Value el nombre del campo dinámico creado en el paso 1 de este tutorial. Según se sugiere por defecto, debería quedar de la siguiente forma.

![](https://storage.crisp.chat/users/helpdesk/website/e4b41ef8ae96c800/problemas-2_1qicql7.png)