> ## 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.

# Lanzar conversaciones desde un Flow

> Cómo instalar el paquete de Treble en Salesforce para disparar una conversación de WhatsApp desde un automation flow.

<Note>
  El paquete está en evolución y su enlace de instalación cambia con cada versión nueva. Si algo no coincide con lo que ves en pantalla, confirma con tu Customer Success Manager que estás usando la versión vigente.
</Note>

Hasta aquí, las conversaciones se disparan desde Treble. Con este paquete puedes hacerlo al revés: **un automation flow de Salesforce dispara una conversación de WhatsApp de Treble**.

Sirve para casos como: cuando un lead cambia a cierto estado, mandarle automáticamente una plantilla de WhatsApp; o cuando se crea una solicitud, iniciar la conversación de seguimiento sin que nadie tenga que hacer nada.

<div class="hr" />

## Antes de empezar

| Necesitas | Dónde se consigue |
| - | - |
| Un usuario administrador de Salesforce | Tu equipo de Salesforce |
| El enlace de instalación del paquete | Está más abajo, en el paso 1 |
| Tu API key de Treble | En la plataforma de Treble: **Configuración → Desarrolladores → API KEY** |

<Warning>
  La API key es una credencial con acceso a tu cuenta de Treble. No la compartas por canales abiertos, no la pegues en documentos compartidos, y si crees que se expuso, pide que se regenere.
</Warning>

<div class="hr" />

## 1. Instalar el paquete

Con tu sesión de Salesforce abierta, entra a este enlace:

```
https://login.salesforce.com/packaging/installPackage.apexp?p0=04taj000000A3B7AAK
```

<Info>
  **Sobre el identificador del enlace.** La parte final (`04taj000000A3B7AAK`) es el Id de la versión del paquete. Cuando se publica una versión nueva, ese Id cambia.

  Si el enlace no abre, te pide una contraseña de instalación, o instala algo que no corresponde con lo que ves aquí, probablemente estés con un enlace viejo: pídele a tu Customer Success Manager el vigente.
</Info>

<Warning>
  Si tu organización es un **sandbox**, cambia `login.salesforce.com` por `test.salesforce.com` en el enlace.
</Warning>

Vas a ver la pantalla de instalación del paquete **DeployTrebleConversation**.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=707e69ebb721781592a855e728f54b97" alt="Pantalla de instalación del paquete DeployTrebleConversation" className="mx-auto" width="1052" height="578" data-path="images/salesforce-flow-package-1.png" />

Elige quién puede usarlo:

| Opción | Cuándo usarla |
| - | - |
| **Install for Admins Only** | Recomendada para empezar. Solo los administradores pueden usarlo mientras lo prueban |
| **Install for All Users** | Cuando ya esté validado y lo vayan a usar varios equipos |
| **Install for Specific Profiles** | Cuando quieres limitarlo a ciertos perfiles |

Haz clic en **Install** y espera a que Salesforce confirme la instalación.

<div class="hr" />

## 2. Configurar la credencial

El paquete instala una **credencial externa** y una **credencial con nombre** que son las que permiten a Salesforce llamar a la API de Treble.

<img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=e975c1aacb76561f172db7ecb2557631" alt="Detalle de la credencial externa de Treble" className="mx-auto" width="1651" height="776" data-path="images/salesforce-flow-package-2.png" />

<Steps>
  <Step title="Abre Setup → Named Credentials">
    Vas a ver la credencial externa `treble_api_external_credential` y, relacionada con ella, la credencial con nombre `treble_api`.
  </Step>

  <Step title="Confirma la URL (normalmente no hay que tocarla)">
    El paquete ya trae la credencial apuntando a `https://main.treble.ai`. No tienes que configurarla: solo verifica que esté así.
  </Step>

  <Step title="Agrega el encabezado de autorización">
    En la credencial externa, en la sección **Custom Headers**, haz clic en **New** y crea:

    | Campo | Valor |
    | - | - |
    | **Name** | `Authorization` |
    | **Value** | Tu API key de Treble |
    | **Sequence Number** | `1` |

    Guarda.
  </Step>
</Steps>

<div class="hr" />

## 3. Dar permisos a los usuarios

Salesforce no deja usar una credencial externa sin un permiso explícito. El paquete trae un conjunto de permisos listo.

<Steps>
  <Step title="Abre Setup → Permission Sets">
    Busca el conjunto de permisos `treble_api_permission`.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=bcf6ffcac3840375cabebb77d2fee7a6" alt="El conjunto de permisos treble_api_permission" className="mx-auto" width="1654" height="366" data-path="images/salesforce-flow-package-3.png" />
  </Step>

  <Step title="Confirma el acceso a la credencial">
    Dentro del conjunto, entra a **External Credential Principal Access** y verifica que esté el principal de Treble.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=26505e27c94ebf52dee74c6e8ba7da02" alt="Sección External Credential Principal Access" className="mx-auto" width="1633" height="738" data-path="images/salesforce-flow-package-4.png" />
  </Step>

  <Step title="Asigna el conjunto a los usuarios">
    Haz clic en **Manage Assignments → Add Assignments** y selecciona los usuarios que van a ejecutar los flows.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-package-5.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=f912fb44a3682c547583773c5bb87a58" alt="Administrar asignaciones del conjunto de permisos" className="mx-auto" width="1647" height="443" data-path="images/salesforce-flow-package-5.png" />

    <Info>
      Si el flow se ejecuta de forma automática (por un cambio de registro, no por alguien que hace clic), asigna el permiso al **usuario bajo el que corre el flow**, no solo a los administradores. Es el error más común en esta parte.
    </Info>
  </Step>
</Steps>

<div class="hr" />

## 4. Crear el flow que lanza la conversación

Con el paquete instalado y los permisos asignados, la acción de Treble ya está disponible en el **Flow Builder** de Salesforce.

El ejemplo que sigue lanza una conversación de WhatsApp cada vez que se crea una cuenta. La misma estructura sirve para cualquier otro disparador.

<Steps>
  <Step title="Entra a Flows">
    En Setup, ve a **Process Automation → Flows** y haz clic en **New Flow**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-1.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=b5f341bf12bae77c86be05e12762fee7" alt="Flows dentro de Process Automation" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-flow-use-1.png" />
  </Step>

  <Step title="Elige el tipo de flow">
    Para que se dispare solo cuando cambian los datos, elige **Record-Triggered Flow**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-2.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=d6af420f59bd72b8ffe077addb3887f2" alt="Elegir Record-Triggered Flow" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-flow-use-2.png" />
  </Step>

  <Step title="Configura el disparador y activa la ruta asíncrona">
    Elige el objeto (en el ejemplo, `Account`), cuándo se dispara (*A record is created*), y en **Optimize the Flow for** elige **Actions and Related Records**.

    <Warning>
      **Este es el paso que más se olvida.** Abajo, activa **Add Asynchronous Path**.

      Salesforce **no permite** llamar a un sistema externo desde la ruta normal de un flow disparado por registro. Sin esta ruta, la acción de Treble fallará.
    </Warning>

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-3.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=f5c06ba02076769b787d8dfe7b9a7a73" alt="El interruptor Add Asynchronous Path" className="mx-auto" width="3020" height="1710" data-path="images/salesforce-flow-use-3.png" />

    Al activarlo, el flow se divide en dos caminos: **Run Immediately** y **Run Asynchronously**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-4.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=071bf911633c72828d522fc9e2ffa003" alt="El flow con las rutas inmediata y asíncrona" className="mx-auto" width="3020" height="1708" data-path="images/salesforce-flow-use-4.png" />

    <Check>
      Todo lo que llame a Treble va en la rama **Run Asynchronously**.
    </Check>
  </Step>

  <Step title="Opcional: guarda en variables los datos que necesitas">
    Si quieres tener a mano datos del registro, agrega un elemento **Assignment** en la rama asíncrona.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-5.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=a91932c9592860f45b3322936c403471" alt="Elemento Assignment guardando el nombre del contacto" className="mx-auto" width="1622" height="1460" data-path="images/salesforce-flow-use-5.png" />

    En el ejemplo se guarda el nombre del contacto que disparó el flow en una variable `contactname`. Lo mismo se hace con el teléfono, que es el dato que sí necesita la acción de Treble.
  </Step>

  <Step title="Agrega la acción de Treble">
    En la rama asíncrona, haz clic en **+** y elige **Action**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-6.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=0d6b1f587660ec0d405e747af48be962" alt="Agregar un elemento al flow" width="420" className="mx-auto" data-path="images/salesforce-flow-use-6.png" />

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-7.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=18a5577cf6494caa307fa4ab2aae1495" alt="Elegir el elemento Action" width="420" className="mx-auto" data-path="images/salesforce-flow-use-7.png" />

    Busca `treble` y selecciona **Deploy Treble Conversation**.

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-8.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=fbe50a121918d720932a47f2e91b1a06" alt="Buscar y elegir la acción Deploy Treble Conversation" className="mx-auto" width="3024" height="1708" data-path="images/salesforce-flow-use-8.png" />

    <Info>
      Si no aparece, es un problema de instalación o de permisos, no del flow. Revisa [problemas frecuentes](#problemas-frecuentes).
    </Info>
  </Step>

  <Step title="Llena los parámetros">
    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-9.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=a018bbf02663c91c3803fde67c9b92d9" alt="Parámetros conversationId y phoneNumber" className="mx-auto" width="1380" height="1488" data-path="images/salesforce-flow-use-9.png" />

    <img src="https://mintcdn.com/trebleai/n_48dzI5l_tB6XfZ/images/salesforce-flow-use-10.png?fit=max&auto=format&n=n_48dzI5l_tB6XfZ&q=85&s=c8d1a5c5cd490da0f9d9fcc9df30f8fd" alt="Parámetro opcional deploymentPhone y el resultado" className="mx-auto" width="1338" height="434" data-path="images/salesforce-flow-use-10.png" />

    | Parámetro | ¿Obligatorio? | Qué va aquí |
    | - | - | - |
    | **conversationId** | Sí | El Id de la campaña de Treble que quieres lanzar |
    | **phoneNumber** | Sí | El celular de destino, normalmente tomado del registro que disparó el flow |
    | **deploymentPhone** | No | El número de Treble desde el cual quieres enviar. Útil solo si tienes varios; déjalo apagado si no |

    <Info>
      `deploymentPhone` viene desactivado ("Not Included"). Actívalo solo si vas a usarlo.
    </Info>
  </Step>

  <Step title="Guarda y activa">
    Haz clic en **Save** y luego en **Activate**. Un flow guardado pero sin activar no corre.
  </Step>
</Steps>

<div class="hr" />

## Qué hace la acción por dentro

Vale la pena conocer dos cosas, porque definen lo que se puede y lo que no.

<AccordionGroup>
  <Accordion title="El resultado es un texto, no un sí o no">
    La acción devuelve una sola salida, `result`, con un texto:

    ```
    Success for conversation <id> and phoneNumber <numero>. Response: ...
    ```

    o, cuando algo falla:

    ```
    Error: 401 Unauthorized
    ```

    Si quieres que el flow reaccione al fallo —mandar un correo, marcar un campo— tienes que agregar un elemento **Decision** que evalúe ese texto, por ejemplo comprobando si **empieza por** `Error`. No hay un campo de éxito o fracaso aparte.
  </Accordion>

  <Accordion title="No se pueden enviar variables de plantilla desde el flow">
    La acción le manda a Treble **el número de destino y cuál campaña lanzar**, y nada más.

    Eso significa que **no puedes pasar valores del registro de Salesforce como variables de la plantilla de WhatsApp** desde este flow. La personalización del mensaje tiene que resolverse del lado de Treble: la campaña puede leer los datos de Salesforce con los [bloques de CRM](/es/docs/integrations/salesforce/blocks/crm-variable-assignment) una vez iniciada la conversación.

    Es la limitación que más sorprende de este paquete, y conviene tenerla clara antes de diseñar la automatización.
  </Accordion>

  <Accordion title="Funciona con varios registros a la vez">
    La acción acepta lotes, así que sirve igual en un flow que procesa un registro o muchos.
  </Accordion>
</AccordionGroup>

<div class="hr" />

Por debajo, la acción llama al endpoint de **despliegue** de Treble, el mismo que se usa para lanzar campañas por API:

<a class="article-link" href="/es/api-reference/endpoints/deploy"><p>Endpoint de despliegue</p><Icon icon="arrow-up-right-from-square" iconType="solid" /></a>

<Note>
  **Si tienes dos cuentas de Treble conectadas al mismo Salesforce**, necesitas configurar el paquete **dos veces**, cada una con su propia API key. No se pueden unificar los despliegues de las dos cuentas en una sola configuración.
</Note>

<div class="hr" />

## Problemas frecuentes

<AccordionGroup>
  <Accordion title="El despliegue falla con un error 401">
    Es el síntoma clásico de la configuración incompleta: el paquete quedó instalado, pero el encabezado `Authorization` o el conjunto de permisos no están bien puestos.

    La recomendación de nuestro equipo de ingeniería en estos casos es **desinstalar el paquete y volver a instalarlo** siguiendo esta guía paso a paso, en vez de intentar corregir la configuración existente.
  </Accordion>

  <Accordion title="Instalé el paquete pero no aparece la credencial de Treble">
    Pasa cuando la instalación terminó a medias, incluso si llegó el correo de confirmación de Salesforce.

    Revisa en *Setup → Named Credentials*, pestaña **External Credentials**, que exista `treble_api_external_credential`. Si no está, desinstala el paquete y vuelve a instalarlo.
  </Accordion>

  <Accordion title="El flow falla con un error de autenticación o de credencial">
    Las dos causas habituales:

    1. **El encabezado `Authorization` no está creado**, o la API key quedó incompleta.
    2. **El usuario que ejecuta el flow no tiene asignado el conjunto de permisos** `treble_api_permission`.
  </Accordion>

  <Accordion title="No veo la acción de Treble en el Flow Builder">
    Busca `treble` en el buscador de acciones: debe aparecer **Deploy Treble Conversation**, en la categoría **Treble**.

    Si no está, confirma que la instalación del paquete terminó correctamente y que tu usuario está dentro del alcance que elegiste al instalar (admins, todos, o perfiles específicos).
  </Accordion>

  <Accordion title="El flow no deja guardar porque la acción hace una llamada externa">
    Falta activar la **ruta asíncrona**. Salesforce no permite llamar a un sistema externo desde la ruta inmediata de un flow disparado por registro.

    Abre *Configure Start*, activa **Add Asynchronous Path**, y mueve la acción de Treble a la rama **Run Asynchronously**.
  </Accordion>

  <Accordion title="Funciona para mí pero no cuando el flow corre solo">
    Es el caso del permiso: un flow automático corre bajo un usuario distinto al tuyo. Asígnale el conjunto de permisos a ese usuario.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Siguientes pasos

<CardGroup cols={2}>
  <Card title="WhatsApp dentro de Salesforce" icon="window-maximize" href="/es/docs/integrations/salesforce/embed/custom-tab">
    Para que los asesores respondan sin salir del CRM.
  </Card>

  <Card title="Marketing Cloud" icon="bullhorn" href="/es/docs/integrations/salesforce/embed/marketing-cloud">
    Lanzar conversaciones desde Marketing Cloud.
  </Card>
</CardGroup>


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