> ## Documentation Index
> Fetch the complete documentation index at: https://help.treble.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Bloque de Acción en CRM

> Cómo escribir datos en Salesforce desde una conversación: crear y actualizar registros, elegir cuál se actualiza y guardar lo que responde la persona.

El bloque de **Acción en CRM** escribe en Salesforce desde el flujo de conversación. Con él puedes guardar lo que la persona responde, marcar el origen de un lead, cambiar el estado de una solicitud o crear un registro nuevo.

El bloque se llama distinto según tu tipo de integración:

| Tipo de integración | Nombre del bloque |
| - | - |
| Objeto único | **Acción en CRM** |
| Multi-objeto | **CRM Multiple Object Action** |

<Note>
  En multi-objeto los nombres se parecen mucho y es fácil confundirlos. El que **escribe** es *CRM Multiple Object **Action***. El que solo **lee** se llama *CRM Multiple Object*, sin "Action".
</Note>

<div class="hr" />

## Lo primero que conviene entender

Cada bloque de Acción en CRM escribe **una sola propiedad**. Si necesitas guardar tres datos, usarás tres bloques.

Además, el bloque hace dos cosas distintas según el caso:

* Si **encuentra** el registro de la persona, lo **actualiza**.
* Si **no lo encuentra**, lo **crea**.

<Warning>
  Esta diferencia importa más de lo que parece. Algunos campos de Salesforce solo aceptan valores en el momento de la creación: por ejemplo, un campo que una regla de validación exige al crear, o el tipo de registro de una Person Account.

  Como el bloque escribe **después** de crear el registro, en esos casos el valor llega tarde. Si te topas con eso, revisa [configuraciones avanzadas](/es/docs/integrations/salesforce/features/advanced-settings).
</Warning>

<div class="hr" />

## Agregar el bloque

Desde el constructor de conversaciones, abre el panel de bloques y busca **Acción en CRM** dentro de *Bloques avanzados*.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-so-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=713e44e904074b7124448ec14bdc859a" alt="Agregar el bloque de Acción en CRM al flujo" className="mx-auto" width="3024" height="1710" data-path="images/salesforce-crm-action-so-1.png" />

Arrástralo al lienzo y haz clic en **Configuración** para abrirlo.

<div class="hr" />

## Configuración

<Tabs>
  <Tab title="Objeto único">
    ### 1. Objeto y jerarquía

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-so-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=d8f8eb7c08e6bbc1264c33a89de60e1e" alt="Seleccionar el objeto de Salesforce" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-crm-action-so-2.png" />

    **Objeto.** Elige sobre cuál objeto vas a escribir. Puede ser tu entidad padre (por ejemplo `Contact`) o alguno de sus objetos relacionados.

    **Jerarquía.** Define qué pasa cuando la persona tiene **más de un registro** de ese objeto. Es una decisión importante y fácil de pasar por alto.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-so-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=d8ba7290dd6ecce2b95659757d1fb7c2" alt="Opciones de jerarquía" width="500" className="mx-auto" data-path="images/salesforce-crm-action-so-3.png" />

    | Opción | Qué hace |
    | - | - |
    | **Primero creado** | Usa el registro más antiguo |
    | **Último creado** | Usa el registro más reciente. Es la opción más común |
    | **Personalizado** | Tú defines un filtro: por ejemplo, el registro cuyo campo *Estado* sea *Activo* |

    ### 2. Propiedad y valor

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-so-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=c56f512df8380388a2f48cef0067f01a" alt="Elegir la propiedad y el valor a guardar" className="mx-auto" width="3024" height="1714" data-path="images/salesforce-crm-action-so-4.png" />

    **Propiedad.** El campo de Salesforce que vas a escribir.

    **Valor.** Lo que quieres guardar. Puede ser un texto fijo, o una variable de la conversación usando llaves dobles, por ejemplo `{{nombre}}`.

    <Info>
      El tipo de campo cambia cómo se ve esta parte. Si es una lista desplegable, verás las opciones disponibles en vez de una caja de texto. Si las opciones que esperas no aparecen, probablemente falte [sincronizar objetos](/es/docs/integrations/salesforce/object-sync).
    </Info>

    ### 3. Crear un nuevo objeto

    Al final del modal hay un interruptor: **"Crear un nuevo objeto con esta configuración"**.

    <Warning>
      Si lo activas, Treble **siempre crea un registro nuevo**, sin revisar primero si la persona ya existe.

      Úsalo solo cuando de verdad quieras un registro por conversación (por ejemplo, una solicitud nueva cada vez). Si lo activas en el objeto principal por error, vas a terminar con un contacto duplicado por cada conversación.
    </Warning>
  </Tab>

  <Tab title="Multi-objeto">
    En multi-objeto el bloque pide un paso más al inicio, porque primero hay que decir **sobre cuál de tus objetos** estás trabajando. El modal tiene tres pasos numerados.

    ### 1. Objeto de referencia y campo de teléfono

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-mo-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=564894f1a94626749ba6b4f1b4e2a012" alt="Pasos 1 y 2 del bloque CRM Multiple Object Action" className="mx-auto" width="3020" height="1710" data-path="images/salesforce-crm-action-mo-1.png" />

    **Objeto de referencia.** Cuál de los objetos que configuraste al instalar vas a usar en este bloque (por ejemplo `Lead`, `Account` o un objeto personalizado).

    **Campo de búsqueda de teléfono.** Por cuál campo de ese objeto se busca a la persona.

    <Warning>
      Este campo cumple **dos funciones a la vez**: es por donde Treble busca el registro, y también donde escribe el número cuando lo crea.

      Cambiarlo después afecta las dos cosas. Si todos tus registros históricos tienen el número en el campo anterior, Treble dejará de encontrarlos y empezará a crear duplicados. Revisa [configuraciones avanzadas](/es/docs/integrations/salesforce/features/advanced-settings) antes de cambiarlo.
    </Warning>

    ### 2. Objeto y jerarquía

    En la misma pantalla, el paso 2 pide el objeto sobre el que vas a escribir y la jerarquía. Puede ser el mismo objeto de referencia o uno relacionado.

    Además de *Primero creado* y *Último creado*, multi-objeto ofrece **Personalizado**, que te deja apuntar a un registro específico con una propiedad y un valor:

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-mo-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=a0d872f99c21622947314b86743ae2a4" alt="Jerarquía personalizada con propiedad y valor" className="mx-auto" width="3024" height="1706" data-path="images/salesforce-crm-action-mo-2.png" />

    <Tip>
      El valor acepta variables de la conversación. En el ejemplo, `Account ID = {{client_id}}` escribe exactamente sobre la cuenta cuyo Id quedó guardado en la variable `{{client_id}}` — útil cuando ya leíste el Id en un bloque anterior y quieres asegurarte de escribir sobre ese registro y no sobre otro.
    </Tip>

    ### 3. Propiedad y valor

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-mo-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=f820f28572624e2aa793b5f146286477" alt="Propiedad a escribir y valor a guardar" className="mx-auto" width="3024" height="1706" data-path="images/salesforce-crm-action-mo-3.png" />

    **Propiedad.** El campo de Salesforce que vas a escribir (en el ejemplo, `Account Name`).

    **Guardar como texto.** El valor. Puede ser texto fijo o una variable con llaves dobles, por ejemplo `{{nombre_cuenta}}`.

    <Warning>
      Debajo está el interruptor **"Crear un nuevo objeto con esta configuración"**. Si lo activas, Treble **siempre crea un registro nuevo** del objeto del paso 2, sin revisar primero si ya existe.

      Úsalo solo cuando de verdad quieras un registro por conversación. Si lo activas sobre tu objeto principal por error, vas a terminar con un registro duplicado por cada conversación.
    </Warning>
  </Tab>
</Tabs>

<div class="hr" />

## Cómo se ve en el flujo

Una vez configurado, el bloque muestra un resumen de lo que hace, para que puedas leer el flujo sin abrir cada uno.

En **objeto único** se ve así:

```
Objeto: Contact
Jerarquía: Último creado
En la propiedad: Lead Source
  ↳ Colocar: Web
```

En **multi-objeto** el resumen incluye además el objeto de referencia y el campo de búsqueda:

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-crm-action-mo-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=c6e0b278f032d99496fee0d8bfbf725c" alt="Bloques de lectura y escritura en el lienzo del flujo" className="mx-auto" width="3018" height="1712" data-path="images/salesforce-crm-action-mo-4.png" />

A la izquierda está el bloque de **lectura** (*CRM Multiple Object*, que termina en una variable) y a la derecha el de **escritura** (*CRM Multiple Object Action*, que termina en *En la propiedad → Colocar*). El ícono y el último bloque del resumen son la forma más rápida de distinguirlos de un vistazo.

<div class="hr" />

## Cuándo se escribe, y por qué importa el orden

Cada bloque escribe en Salesforce **en el momento exacto en que la conversación pasa por él**. No espera al final del flujo, y no se deshace si la persona abandona la conversación después.

<Warning>
  **Las conversaciones incompletas también dejan datos.** Si pones un bloque de acción justo después de la primera pregunta y la persona abandona ahí, ese dato ya quedó escrito en Salesforce.

  Es la causa de la queja más común sobre "información basura en el CRM".
</Warning>

### Cómo evitar datos a medias

<AccordionGroup>
  <Accordion title="Escribe al final, no sobre la marcha">
    Guarda las respuestas en variables de la conversación durante el flujo, y pon **todos** los bloques de acción juntos al final, después de la última pregunta.

    Así solo llega al CRM la información de quienes completaron el flujo.

    <a class="article-link" href="/es/docs/integrations/salesforce/blocks/crm-variable-assignment"><p>Cómo guardar en variables</p><Icon icon="arrow-up-right-from-square" iconType="solid" /></a>
  </Accordion>

  <Accordion title="Marca quién completó el flujo">
    Si prefieres escribir sobre la marcha —por ejemplo para no perder los datos de quien abandona— agrega un último bloque de acción que marque un campo tipo "flujo completado". Después puedes filtrar por ese campo en Salesforce.
  </Accordion>

  <Accordion title="¿Necesito conectar otro bloque después del de acción?">
    No para que la escritura ocurra: el bloque escribe al pasar por él, haya o no un bloque siguiente.

    Pero sí para que el flujo tenga sentido: un bloque de acción no le dice nada a la persona. Si es el último paso, lo normal es poner un mensaje de cierre después.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Problemas frecuentes

<AccordionGroup>
  <Accordion title="El campo que quiero no aparece en la lista">
    Casi siempre es falta de sincronización. Corre la [sincronización de objetos](/es/docs/integrations/salesforce/object-sync) y vuelve a abrir el bloque.
  </Accordion>

  <Accordion title="Salesforce rechaza un valor de una lista desplegable que sí existe">
    Suele ser el **tipo de registro**. Los tipos de registro definen qué valores de lista son válidos en cada registro, así que un valor correcto para un tipo puede ser inválido para otro.

    <a class="article-link" href="/es/docs/integrations/salesforce/features/record-types"><p>Tipos de registro</p><Icon icon="arrow-up-right-from-square" iconType="solid" /></a>
  </Accordion>

  <Accordion title="El dato se guarda en un registro distinto al que esperaba">
    Revisa la **jerarquía**. Si la persona tiene varios registros y elegiste *Último creado*, el bloque escribe sobre el más reciente, que puede no ser el que tienes abierto en Salesforce.
  </Accordion>

  <Accordion title="En el campo de nombre del CRM queda el texto de un mensaje">
    Por ejemplo, un contacto cuyo nombre en Salesforce quedó como *"Hola, vi el anuncio y quiero información"*.

    Casi siempre es un bloque de acción escribiendo la **respuesta de la persona** sobre el campo de nombre. Revisa cuál propiedad tiene configurada ese bloque: es fácil apuntar a `Name` o `FirstName` cuando en realidad querías un campo propio.
  </Accordion>

  <Accordion title="Se están creando registros duplicados">
    Revisa si el interruptor **"Crear un nuevo objeto"** está activado en un bloque donde no debería. También revisa que el campo de búsqueda de teléfono sea el mismo donde están guardados los números de los registros existentes.
  </Accordion>

  <Accordion title="Salesforce responde que se guardó, pero el campo queda vacío">
    Puede haber una automatización en tu Salesforce (un Flow, Process Builder o trigger) que limpia o sobrescribe ese campo después de crear el registro.

    Una forma rápida de confirmarlo: si el valor **sí** se guarda cuando se escribe sobre un registro que ya existe, pero **no** cuando se crea, casi seguro hay una automatización que corre en la creación.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Siguientes pasos

<CardGroup cols={2}>
  <Card title="Leer datos de Salesforce" icon="download" href="/es/docs/integrations/salesforce/blocks/crm-variable-assignment">
    Traer un valor de Salesforce a una variable de la conversación.
  </Card>

  <Card title="Configuraciones avanzadas" icon="sliders" href="/es/docs/integrations/salesforce/features/advanced-settings">
    Qué hacer cuando un campo debe escribirse en el momento de crear.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.