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

# Verificação de identidade no Salesforce: app de KYC e KYB

> Pacote gerenciado da Didit para Salesforce com verificação de identidade, KYC e KYB. Sem código, a partir de $0.33 por KYC completo, $10 grátis/mês.

Adicione a verificação de identidade da Didit ao Salesforce Sales Cloud / Service Cloud com nosso pacote gerenciado. O componente é inserido nas páginas de registro de Contato e Lead, cria sessões na sua org via Apex (sua chave de API da Didit permanece dentro do Salesforce) e grava os resultados em campos padrão do registro, para que Flows e Reports possam usar esses resultados. Uma **Invocable Action** integrada permite que o Flow Builder dispare verificações automaticamente, por exemplo, quando um novo lead é criado.

## Pré-requisitos

* Uma org do Salesforce (edição Enterprise ou superior; Developer Edition para testes)
* Uma conta no [Didit Console](https://business.didit.me) com um fluxo de verificação (workflow) configurado
* Permissão para instalar pacotes gerenciados e criar Sites no Setup

***

### Etapa 1: instale o app

O link abaixo instala o pacote publicado **DiditVerifyManaged 1.0.0.2**.
A instalação do pacote é independente da aprovação da listagem no marketplace.

1. Abra o link de instalação: [[https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU](https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000004M0LAAU)
2. Selecione **Install for Admins Only** enquanto configura e testa a integração.
   Depois de validar sua configuração, conceda acesso aos usuários desejados.

![Instalar o app da Didit no Salesforce](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/install-package.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8758cc01110ca562d2e88b7cb76a9ab5)

3. Clique em **Install**

***

### Etapa 2: obtenha suas credenciais da Didit

#### Obtenha sua chave de API (para o modo API)

1. Faça login no [Didit Business Console](https://business.didit.me)
2. Acesse **API & Webhooks** na barra lateral esquerda
3. Copie sua chave de API

![Como obter a chave de API no Didit Business Console](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-api-key.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=9027ca685cc296a400e78d320a566453)

#### Obtenha seu ID do fluxo

1. No Didit Business Console, acesse **Workflows**
2. Selecione o fluxo que deseja usar (ou crie um novo)
3. Copie o **ID do fluxo de trabalho** (um UUID como `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)

![Como obter o ID do fluxo de trabalho no Didit Business Console](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-workflow-id.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=529dc681169efc0a6cdc96d6c0e0a605)

***

### Etapa 3: defina as configurações da Didit

1. Clique no **App Launcher** (ícone de grade, no canto superior esquerdo) e pesquise por **"Didit"**

![Como acessar o app da Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/app-launcher-search-didit.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=1a2fb9eee64fa9735b29e4d64a20e56e)

2. Abra o app **Didit**: você chegará à aba **Didit Settings**
3. Preencha suas credenciais e preferências:

| Campo | Descrição | Padrão |
| - | - | - |
| **Mode** | `api` (recomendado) ou `unilink` | `api` |
| **Didit API Key** | Sua chave de API da Didit (somente no modo API) | — |
| **ID do fluxo de trabalho** | O ID do seu fluxo da Didit (somente no modo API) | — |
| **Webhook Secret** | Segredo HMAC obtido em Didit Console → API & Webhooks. Obrigatório para receber atualizações de verificação em tempo real. Se ficar vazio, todos os webhooks recebidos serão rejeitados. | — |
| **UniLink URL** | URL de verificação fixa (somente no modo UniLink) | — |
| **Display Mode** | `modal` (pop-up) ou `embedded` (incorporado na página) | `embedded` |
| **Vendor Data** | `record_id`, `record_email`, `custom prefix + record id` ou `none` | `record_id` |
| **Language** | Código do idioma (por exemplo, `en`, `es`, `fr`) | `Auto detect by browser` |
| **Auto Send Contact Data** | Preenche previamente a verificação com os dados do registro | `true` |
| **Show Close Button** | Exibe o botão X no modal | `true` |
| **Exit Confirmation** | Pede confirmação antes de fechar o modal | `true` |
| **Auto-close on Complete** | Fecha o modal automaticamente após a conclusão | `false` |
| **Debug Logging** | Ativa os logs no console do navegador | `false` |
| **Button Text** | Rótulo do botão de verificação | `Verify Identity` |
| **Button Success Text** | Rótulo após a verificação | `Identity Verified` |
| **Button Color** | Cor de fundo do botão em hexadecimal | `#2667ff` |

4. Clique em **Save Settings**

### Etapa 4: adicione o componente às páginas de registro

1. Acesse um registro de **Contact** ou **Lead**

![Visualização da página de contato](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-1.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=0a5d3676ade4b7d2e4334df2305ae050)

2. Clique em **ícone de engrenagem → Edit Page** (ou Setup → Object Manager → Contact/Lead → Lightning Record Pages)

![Visualização dos detalhes do contato](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-2.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=68b8d16948761de61d5ee8a4c5dcc0f2)

3. No Lightning App Builder, arraste **Didit Identity Verification** do painel Components

![Arrastar o componente da Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/drag-didit-component.gif?s=f34880744041ffa63271a683a641b3ba)

4. Clique em **Save** e **Activate** a página, selecione "Assign as Org Default" ao ativar e veja o vídeo:

![Salvar e ativar a página com o componente da Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/save-and-activate.gif?s=2f9f3fffb2fed482ea524236b5ad910d)

5. O exemplo acima usa uma página de registro de Contato; as etapas são idênticas para as páginas de registro de Lead.

## Como funciona

### Modo API (recomendado)

1. O usuário clica em **Verify Identity** em um registro de Contact/Lead
2. O Apex cria uma sessão pela API da Didit (a chave de API permanece no servidor)
3. O SDK da Didit abre o fluxo de verificação, como uma sobreposição modal ou uma visualização incorporada na página, conforme a configuração de Display Mode
4. Ao final, o registro é atualizado automaticamente:
   * `Verification Status` → o resultado da sessão (`Approved`, `Declined`, `In Review` etc.)
   * `Identity Verified` → `true` em caso de aprovação; `false` em caso de recusa
   * Carimbo de data e hora `Verified At` e `Didit Session ID`
   * `Verified Document Type`, `Document Expiry Date`, `AML Check Status` (preenchidos via webhook; veja abaixo)
5. O componente exibe na própria página o status da verificação, o tipo de documento, a data de validade e o resultado AML, sem necessidade de configurar o layout da página

### Modo UniLink

1. O usuário clica em **Verify Identity**
2. Uma URL fixa do UniLink é aberta em um modal ou iframe (nenhuma chamada à API é necessária)
3. Ao final, o resultado é salvo no registro

### Atualizações automáticas da verificação (webhooks)

Quando uma sessão de verificação é concluída (com o agente acompanhando a página ou não), a Didit envia um webhook para sua org do Salesforce para atualizar automaticamente o registro de Contact/Lead. Isso exige uma configuração do Salesforce Site feita uma única vez.

#### Por que isso é necessário?

O Salesforce não aceita requisições HTTP de serviços externos sem um endpoint público. Um Salesforce Site cria esse endpoint para que a Didit possa enviar os resultados das verificações diretamente para sua org em tempo real.

#### Etapa 1: acesse Setup > Sites

No Salesforce, clique em **gear icon > Setup**. Na caixa Quick Find, digite **Sites** e clique na opção em **Sites and Domains**.

![Etapa 1 - Busca por Sites](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-search.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=07d8ca3804316538de6d15b6ccb39caf)

Se for a primeira vez, marque **"I have read and accepted the Salesforce Site Terms of Use"** e clique em **Register My Salesforce Site Domain**.

![Etapa 1 - Página Sites com o domínio registrado](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-registered.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=9a89d50c21cfc4911cf707a111f963ad)

#### Etapa 2: crie um novo Site

Clique no botão **New** na lista de Sites. Preencha:

* **Site Label**: `DiditWebhook`
* **Site Name**: é preenchido automaticamente como `DiditWebhook`
* **Default Web Address**: `didit`
* **Active**: marcado
* **Active Site Home Page**: `InMaintenance`

Mantenha os valores padrão em todos os outros campos e clique em **Save**.

![Etapa 2 - Formulário de novo Site](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step2-new-site-form.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=d5869ff430f4050ebde176ff6020c260)

#### Etapa 3: confirme que o Site foi criado

Depois de salvar, você verá a página de detalhes do Site. Anote a **Site URL**, que terá o formato `https://your-org.develop.my.salesforce-sites.com/didit`. Você precisará dela mais adiante.

![Etapa 3 - Site criado](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step3-site-created.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=daa8ed30fedd1369d33abe13828ddb12)

#### Etapa 4: conceda ao Guest User acesso à classe do webhook

Na página de detalhes do Site, clique em **Public Access Settings**. Isso abre o perfil do Guest User. Role a página até **Enabled Apex Class Access** e clique em **Edit**. Selecione **DiditWebhookReceiver** na lista Available e clique em **Add** para movê-la para a lista Enabled. Clique em **Save**.

![Etapa 4 - Acesso à classe Apex](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step4-apex-class-access.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=8bcfbece75a5a7864e8e1ab8fc07db9d)

#### Etapa 5: configure o webhook no Didit Console

1. Acesse [business.didit.me](https://business.didit.me) > **API & Webhooks**
2. Defina a **Webhook URL** como: `https://your-org.develop.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`

> **Observação:** o formato exato do domínio depende do tipo da sua org. Orgs Developer Edition incluem `.develop` na URL. Orgs de produção usam `https://your-org.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`. Para ter certeza, copie sempre a URL da página de detalhes do seu Site (Etapa 3).

3. Copie a **Webhook Secret Key**
4. No Salesforce, acesse **Didit Settings** e cole o segredo no campo **Webhook Secret**
5. Clique em **Save Settings**

Pronto. A partir de agora, cada resultado de verificação atualizará automaticamente o registro de Contact/Lead, mesmo que ninguém esteja com a página do Salesforce aberta.

#### O que o webhook salva

Quando a Didit envia um webhook, o Contact ou Lead é atualizado automaticamente.

**Sempre atualizados, independentemente do tipo de fluxo de verificação (workflow):**

| Campo | O que armazena |
| - | - |
| **Verification Status** | `Approved`, `Declined`, `In Review`, `In Progress`, `Abandoned` |
| **Identity Verified** | `true` em caso de aprovação; `false` em caso de recusa ou abandono |
| **Verified At** | Carimbo de data e hora do resultado aprovado |
| **Didit Session ID** | O UUID da sessão |

**Atualizados somente quando o recurso faz parte do seu fluxo:**

| Campo | Requer |
| - | - |
| **Verified Document Type** | Verificação de identidade no seu fluxo |
| **Document Expiry Date** | Verificação de identidade no seu fluxo |
| **AML Check Status** | Triagem de AML no seu fluxo |
| **Verification Decline Reasons** | Verificação de identidade no seu fluxo |

Se um recurso não estiver ativado no seu fluxo da Didit, os campos correspondentes simplesmente ficam em branco, sem causar nenhum erro.

Um registro filho **Didit Verification** (`Didit_Verification__c`) também é criado para cada sessão, oferecendo uma trilha de auditoria completa com detalhes adicionais (número do documento, país emissor, nome no documento, data de nascimento, pontuação de correspondência facial, pontuação de prova de vida, número de ocorrências AML), novamente apenas para os recursos incluídos no fluxo.

Você pode adicionar a lista relacionada **Didit Verifications** ao layout da página de Contact/Lead para ver o histórico.

### Automação com Flow (Invocable Action)

O plugin inclui uma ação Invocable Apex que os Salesforce Flows podem chamar para acionar a verificação automaticamente:

1. No Flow Builder, adicione um elemento **Action**
2. Pesquise por **"Create Didit Verification Session"**
3. Informe o ID de um registro de Contact ou Lead
4. A ação retorna `url`, `sessionId`, `success` e `error`
5. Use a URL em uma ação **Send Email** ou **Send Notification** para entregá-la ao cliente

**Exemplos de casos de uso:**

* **Na criação de um Lead**: envie automaticamente um link de verificação para cada novo lead
* **Monitoramento da validade de documentos**: crie um Scheduled Flow que seja executado diariamente, encontre todos os Contacts em que `Document Expiry Date ≤ TODAY + 90 days` e envie um link de reverificação. Isso funciona de imediato usando o campo `Document Expiry Date` preenchido pelo webhook

## Solução de problemas

### O botão não faz nada ao ser clicado

* Verifique se você salvou sua chave de API e o ID do workflow em Didit Settings
* Confirme que o ID do workflow pertence à mesma aplicação da sua chave de API
* Ative **Debug Logging** em Didit Settings e procure erros no console do navegador

### "Received a non-JSON response from the Didit API"

* Verifique se a Remote Site Setting de `https://verification.didit.me` está ativa: Setup → Remote Site Settings
* Confirme no [Didit Business Console](https://business.didit.me) que sua chave de API é válida e não expirou

### O webhook retorna 401 — "Webhook secret not configured"

* Acesse **Didit Settings** e cole sua Webhook Secret Key (copiada do Didit Console → API & Webhooks) no campo **Webhook Secret** e, em seguida, clique em **Save Settings**

### O webhook retorna 401 — "Invalid signature" ou "Request timestamp is stale"

* Assinatura inválida: verifique se o Webhook Secret em Didit Settings é exatamente igual ao do Didit Console, sem espaços ou caracteres extras
* Timestamp desatualizado: os webhooks devem chegar em até 5 minutos após o envio. Se o relógio da sua organização do Salesforce estiver dessincronizado, isso pode gerar falsos positivos, mas é muito raro

### A janela de verificação não abre (erro de CSP no console do navegador)

* O CSP Trusted Site de `https://verify.didit.me` está incluído no pacote gerenciado e é implantado automaticamente. Se você estiver implantando a partir do código-fonte, verifique se `cspTrustedSites/Didit_Verify_Frontend.cspTrustedSite-meta.xml` está incluído na sua implantação

## Suporte (24/7)

Nossa equipe está à disposição para ajudar você a começar a usar nossa plataforma.

> [card] [E-mail](mailto:hello@didit.me)
>
> Envie um e-mail para [hello@didit.me](mailto:hello@didit.me).


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