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

# Bloco de Ação no CRM

> Como escrever dados no Salesforce a partir de uma conversa: criar e atualizar registros, escolher qual é atualizado e salvar o que a pessoa responde.

O bloco de **Ação no CRM** escreve no Salesforce a partir do fluxo de conversa. Com ele você pode salvar o que a pessoa responde, marcar a origem de um lead, mudar o status de uma solicitação ou criar um registro novo.

O bloco tem um nome diferente conforme o seu tipo de integração:

| Tipo de integração | Nome do bloco |
| - | - |
| Objeto único | **Ação no CRM** |
| Multi-objeto | **CRM Multiple Object Action** |

<Note>
  Em multi-objeto os nomes são muito parecidos e é fácil confundi-los. O que **escreve** é *CRM Multiple Object **Action***. O que apenas **lê** se chama *CRM Multiple Object*, sem "Action".
</Note>

<div class="hr" />

## O que convém entender primeiro

Cada bloco de Ação no CRM escreve **uma única propriedade**. Se você precisar salvar três dados, usará três blocos.

Além disso, o bloco faz duas coisas diferentes conforme o caso:

* Se **encontra** o registro da pessoa, ele o **atualiza**.
* Se **não o encontra**, ele o **cria**.

<Warning>
  Essa diferença importa mais do que parece. Alguns campos do Salesforce só aceitam valores no momento da criação: por exemplo, um campo que uma regra de validação exige ao criar, ou o tipo de registro de uma Person Account.

  Como o bloco escreve **depois** de criar o registro, nesses casos o valor chega tarde. Se você se deparar com isso, confira [configurações avançadas](/pt/docs/integrations/salesforce/features/advanced-settings).
</Warning>

<div class="hr" />

## Adicionar o bloco

No construtor de conversas, abra o painel de blocos e procure **Ação no CRM** dentro de *Blocos avançados*.

<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="Adicionar o bloco de Ação no CRM ao fluxo" className="mx-auto" width="3024" height="1710" data-path="images/salesforce-crm-action-so-1.png" />

Arraste-o para a tela e clique em **Configuração** para abri-lo.

<div class="hr" />

## Configuração

<Tabs>
  <Tab title="Objeto único">
    ### 1. Objeto e hierarquia

    <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="Selecionar o objeto do Salesforce" className="mx-auto" width="3024" height="1712" data-path="images/salesforce-crm-action-so-2.png" />

    **Objeto.** Escolha em qual objeto você vai escrever. Pode ser a sua entidade pai (por exemplo `Contact`) ou algum dos seus objetos relacionados.

    **Hierarquia.** Define o que acontece quando a pessoa tem **mais de um registro** desse objeto. É uma decisão importante e fácil de passar despercebida.

    <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="Opções de hierarquia" width="500" className="mx-auto" data-path="images/salesforce-crm-action-so-3.png" />

    | Opção | O que faz |
    | - | - |
    | **Primeiro criado** | Usa o registro mais antigo |
    | **Último criado** | Usa o registro mais recente. É a opção mais comum |
    | **Personalizado** | Você define um filtro: por exemplo, o registro cujo campo *Status* seja *Ativo* |

    ### 2. Propriedade e 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="Escolher a propriedade e o valor a salvar" className="mx-auto" width="3024" height="1714" data-path="images/salesforce-crm-action-so-4.png" />

    **Propriedade.** O campo do Salesforce que você vai escrever.

    **Valor.** O que você quer salvar. Pode ser um texto fixo, ou uma variável da conversa usando chaves duplas, por exemplo `{{nombre}}`.

    <Info>
      O tipo de campo muda como esta parte aparece. Se for uma lista suspensa, você verá as opções disponíveis em vez de uma caixa de texto. Se as opções que você espera não aparecerem, provavelmente falta [sincronizar objetos](/pt/docs/integrations/salesforce/object-sync).
    </Info>

    ### 3. Criar um novo objeto

    No final do modal há um interruptor: **"Criar um novo objeto com esta configuração"**.

    <Warning>
      Se você o ativar, o Treble **sempre cria um registro novo**, sem verificar antes se a pessoa já existe.

      Use-o apenas quando você realmente quiser um registro por conversa (por exemplo, uma solicitação nova a cada vez). Se você o ativar no objeto principal por engano, vai acabar com um contato duplicado para cada conversa.
    </Warning>
  </Tab>

  <Tab title="Multi-objeto">
    Em multi-objeto o bloco pede um passo a mais no início, porque primeiro é preciso dizer **em qual dos seus objetos** você está trabalhando. O modal tem três passos numerados.

    ### 1. Objeto de referência e campo de telefone

    <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="Passos 1 e 2 do bloco CRM Multiple Object Action" className="mx-auto" width="3020" height="1710" data-path="images/salesforce-crm-action-mo-1.png" />

    **Objeto de referência.** Qual dos objetos que você configurou na instalação você vai usar neste bloco (por exemplo `Lead`, `Account` ou um objeto personalizado).

    **Campo de busca de telefone.** Por qual campo desse objeto a pessoa é buscada.

    <Warning>
      Este campo cumpre **duas funções ao mesmo tempo**: é por onde o Treble busca o registro, e também onde escreve o número quando o cria.

      Alterá-lo depois afeta as duas coisas. Se todos os seus registros históricos têm o número no campo anterior, o Treble deixará de encontrá-los e começará a criar duplicados. Confira [configurações avançadas](/pt/docs/integrations/salesforce/features/advanced-settings) antes de alterá-lo.
    </Warning>

    ### 2. Objeto e hierarquia

    Na mesma tela, o passo 2 pede o objeto no qual você vai escrever e a hierarquia. Pode ser o mesmo objeto de referência ou um relacionado.

    Além de *Primeiro criado* e *Último criado*, multi-objeto oferece **Personalizado**, que permite apontar para um registro específico com uma propriedade e um 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="Hierarquia personalizada com propriedade e valor" className="mx-auto" width="3024" height="1706" data-path="images/salesforce-crm-action-mo-2.png" />

    <Tip>
      O valor aceita variáveis da conversa. No exemplo, `Account ID = {{client_id}}` escreve exatamente na conta cujo Id ficou salvo na variável `{{client_id}}` — útil quando você já leu o Id em um bloco anterior e quer ter certeza de escrever nesse registro e não em outro.
    </Tip>

    ### 3. Propriedade e 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="Propriedade a escrever e valor a salvar" className="mx-auto" width="3024" height="1706" data-path="images/salesforce-crm-action-mo-3.png" />

    **Propriedade.** O campo do Salesforce que você vai escrever (no exemplo, `Account Name`).

    **Salvar como texto.** O valor. Pode ser texto fixo ou uma variável com chaves duplas, por exemplo `{{nombre_cuenta}}`.

    <Warning>
      Logo abaixo está o interruptor **"Criar um novo objeto com esta configuração"**. Se você o ativar, o Treble **sempre cria um registro novo** do objeto do passo 2, sem verificar antes se ele já existe.

      Use-o apenas quando você realmente quiser um registro por conversa. Se você o ativar no seu objeto principal por engano, vai acabar com um registro duplicado para cada conversa.
    </Warning>
  </Tab>
</Tabs>

<div class="hr" />

## Como aparece no fluxo

Uma vez configurado, o bloco mostra um resumo do que faz, para que você possa ler o fluxo sem abrir cada um.

Em **objeto único** aparece assim:

```
Objeto: Contact
Hierarquia: Último criado
Na propriedade: Lead Source
  ↳ Colocar: Web
```

Em **multi-objeto** o resumo inclui também o objeto de referência e o campo de busca:

<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="Blocos de leitura e escrita na tela do fluxo" className="mx-auto" width="3018" height="1712" data-path="images/salesforce-crm-action-mo-4.png" />

À esquerda está o bloco de **leitura** (*CRM Multiple Object*, que termina em uma variável) e à direita o de **escrita** (*CRM Multiple Object Action*, que termina em *Na propriedade → Colocar*). O ícone e o último quadro do resumo são a forma mais rápida de distingui-los num relance.

<div class="hr" />

## Quando se escreve, e por que a ordem importa

Cada bloco escreve no Salesforce **no momento exato em que a conversa passa por ele**. Não espera o final do fluxo, e não é desfeito se a pessoa abandonar a conversa depois.

<Warning>
  **Conversas incompletas também deixam dados.** Se você colocar um bloco de ação logo depois da primeira pergunta e a pessoa abandonar ali, esse dado já ficou escrito no Salesforce.

  É a causa da reclamação mais comum sobre "informação lixo no CRM".
</Warning>

### Como evitar dados pela metade

<AccordionGroup>
  <Accordion title="Escreva no final, não ao longo do caminho">
    Salve as respostas em variáveis da conversa durante o fluxo, e coloque **todos** os blocos de ação juntos no final, depois da última pergunta.

    Assim só chega ao CRM a informação de quem completou o fluxo.

    <a class="article-link" href="/pt/docs/integrations/salesforce/blocks/crm-variable-assignment"><p>Como salvar em variáveis</p><Icon icon="arrow-up-right-from-square" iconType="solid" /></a>
  </Accordion>

  <Accordion title="Marque quem completou o fluxo">
    Se você preferir escrever ao longo do caminho —por exemplo para não perder os dados de quem abandona— adicione um último bloco de ação que marque um campo do tipo "fluxo concluído". Depois você pode filtrar por esse campo no Salesforce.
  </Accordion>

  <Accordion title="Preciso conectar outro bloco depois do de ação?">
    Não para que a escrita aconteça: o bloco escreve ao passar por ele, havendo ou não um bloco seguinte.

    Mas sim para que o fluxo faça sentido: um bloco de ação não diz nada à pessoa. Se for o último passo, o normal é colocar uma mensagem de encerramento depois.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Problemas frequentes

<AccordionGroup>
  <Accordion title="O campo que eu quero não aparece na lista">
    Quase sempre é falta de sincronização. Execute a [sincronização de objetos](/pt/docs/integrations/salesforce/object-sync) e abra o bloco novamente.
  </Accordion>

  <Accordion title="O Salesforce rejeita um valor de uma lista suspensa que existe">
    Costuma ser o **tipo de registro**. Os tipos de registro definem quais valores de lista são válidos em cada registro, então um valor correto para um tipo pode ser inválido para outro.

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

  <Accordion title="O dado é salvo em um registro diferente do que eu esperava">
    Confira a **hierarquia**. Se a pessoa tem vários registros e você escolheu *Último criado*, o bloco escreve no mais recente, que pode não ser o que você tem aberto no Salesforce.
  </Accordion>

  <Accordion title="No campo de nome do CRM fica o texto de uma mensagem">
    Por exemplo, um contato cujo nome no Salesforce ficou como *"Olá, vi o anúncio e quero informações"*.

    Quase sempre é um bloco de ação escrevendo a **resposta da pessoa** no campo de nome. Confira qual propriedade esse bloco tem configurada: é fácil apontar para `Name` ou `FirstName` quando na verdade você queria um campo próprio.
  </Accordion>

  <Accordion title="Estão sendo criados registros duplicados">
    Confira se o interruptor **"Criar um novo objeto"** está ativado em um bloco onde não deveria. Confira também se o campo de busca de telefone é o mesmo onde estão salvos os números dos registros existentes.
  </Accordion>

  <Accordion title="O Salesforce responde que foi salvo, mas o campo fica vazio">
    Pode haver uma automação no seu Salesforce (um Flow, Process Builder ou trigger) que limpa ou sobrescreve esse campo depois de criar o registro.

    Uma forma rápida de confirmar: se o valor **é** salvo quando se escreve em um registro que já existe, mas **não** quando ele é criado, quase com certeza há uma automação que roda na criação.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Próximos passos

<CardGroup cols={2}>
  <Card title="Ler dados do Salesforce" icon="download" href="/pt/docs/integrations/salesforce/blocks/crm-variable-assignment">
    Trazer um valor do Salesforce para uma variável da conversa.
  </Card>

  <Card title="Configurações avançadas" icon="sliders" href="/pt/docs/integrations/salesforce/features/advanced-settings">
    O que fazer quando um campo deve ser escrito no momento da criação.
  </Card>
</CardGroup>


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