> ## 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 dell'identità Salesforce: app KYC e KYB

> Con Didit, app Salesforce per verifica dell'identità, KYC e KYB. Setup senza codice da $0.33 per KYC completo, $10 gratis al mese, senza contratti.

Aggiungi la verifica dell'identità di Didit a Salesforce Sales Cloud / Service Cloud con il nostro pacchetto gestito. Il componente si inserisce nelle pagine dei record Contact e Lead, crea sessioni nella tua org tramite Apex (la tua chiave API Didit resta all'interno di Salesforce) e scrive i risultati nei campi standard del record, così che Flow e Report possano agire su di essi. Un'**Invocable Action** integrata permette a Flow Builder di avviare automaticamente le verifiche, ad esempio quando viene creato un nuovo lead.

## Prerequisiti

* Un'org Salesforce (edizione Enterprise o superiore; Developer Edition per i test)
* Un account della [Didit Console](https://business.didit.me) con un workflow configurato
* Autorizzazione a installare pacchetti gestiti e creare Sites in Setup

***

### Passaggio 1: installa l'app

Il link qui sotto installa il pacchetto rilasciato **DiditVerifyManaged 1.0.0.2**.
L'installazione del pacchetto è separata dall'approvazione della pubblicazione nel marketplace.

1. Apri il link di installazione: [[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. Seleziona **Install for Admins Only** mentre configuri e testi l'integrazione.
   Concedi l'accesso agli utenti previsti solo dopo aver validato la configurazione.

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

3. Fai clic su **Install**

***

### Passaggio 2: ottieni le tue credenziali Didit

#### Ottieni la tua chiave API (per la modalità API)

1. Accedi alla [Didit Business Console](https://business.didit.me)
2. Vai a **API e Webhook** nella barra laterale sinistra
3. Copia la tua chiave API

![Come ottenere la chiave API dalla 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)

#### Ottieni il tuo ID del workflow

1. Nella Didit Business Console, vai su **Workflow**
2. Seleziona il workflow che vuoi usare (oppure creane uno nuovo)
3. Copia l'**ID del workflow** (un UUID come `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)

![Come ottenere l'ID del workflow dalla 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)

***

### Passaggio 3: configura le impostazioni di Didit

1. Fai clic su **App Launcher** (icona a griglia, in alto a sinistra) e cerca **"Didit"**

![come accedere all'app 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. Apri l'app **Didit**: si aprirà la scheda **Didit Settings**
3. Compila le credenziali e le preferenze:

| Campo | Descrizione | Predefinito |
| - | - | - |
| **Mode** | `api` (consigliato) o `unilink` | `api` |
| **Didit API Key** | La tua chiave API Didit (solo modalità API) | — |
| **ID del workflow** | Il tuo ID workflow Didit (solo modalità API) | — |
| **Webhook Secret** | Segreto HMAC da Didit Console → API e Webhook. Obbligatorio per ricevere aggiornamenti della verifica in tempo reale. Se lasciato vuoto, tutti i webhook in arrivo vengono rifiutati. | — |
| **UniLink URL** | URL di verifica fisso (solo modalità UniLink) | — |
| **Display Mode** | `modal` (popup) o `embedded` (inline) | `embedded` |
| **Dati Fornitore** | `record_id`, `record_email`, `custom prefix + record id`, oppure `none` | `record_id` |
| **Lingua** | Codice lingua (es. `en`, `es`, `fr`) | `Auto detect by browser` |
| **Auto Send Contact Data** | Precompila la verifica con i dati del record | `true` |
| **Show Close Button** | Mostra il pulsante X nella finestra modale | `true` |
| **Exit Confirmation** | Chiedi conferma prima di chiudere la finestra modale | `true` |
| **Auto-close on Complete** | Chiudi automaticamente la modale al completamento | `false` |
| **Debug Logging** | Attiva il log nella console del browser | `false` |
| **Button Text** | Etichetta del pulsante di verifica | `Verify Identity` |
| **Button Success Text** | Etichetta dopo la verifica | `Identity Verified` |
| **Button Color** | Colore di sfondo del pulsante, in esadecimale | `#2667ff` |

4. Fai clic su **Save Settings**

### Passaggio 4: aggiungi il componente alle pagine dei record

1. Vai a un record **Contact** o **Lead**

![vista della pagina Contact](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-1.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=0a5d3676ade4b7d2e4334df2305ae050)

2. Fai clic sull'**icona a ingranaggio → Edit Page** (oppure Setup → Object Manager → Contact/Lead → Lightning Record Pages)

![vista dei dettagli del contatto](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/contact-page-2.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=68b8d16948761de61d5ee8a4c5dcc0f2)

3. In Lightning App Builder, trascina **Didit Identity Verification** dal pannello Components

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

4. Fai clic su **Salva** e **Attiva** la pagina, seleziona "Assign as Org Default" durante l'attivazione, guarda il video:

![Salva e attiva la pagina con il componente Didit](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/save-and-activate.gif?s=2f9f3fffb2fed482ea524236b5ad910d)

5. L'esempio sopra usa una pagina del record Contact; i passaggi sono identici per le pagine dei record Lead.

## Come funziona

### Modalità API (consigliata)

1. L'utente clicca su **Verify Identity** in un record Contact/Lead
2. Apex crea una sessione tramite l'API di Didit (la chiave API resta lato server)
3. L'SDK di Didit apre il flusso di verifica, come overlay modale o come vista incorporata nella pagina, a seconda dell'impostazione Display Mode
4. Al termine, il record viene aggiornato automaticamente:
   * `Verification Status` → il risultato della sessione (`Approved`, `Declined`, `In Review`, ecc.)
   * `Identity Verified` → `true` per Approved; `false` per Declined
   * `Verified At` (timestamp) e `Didit Session ID`
   * `Verified Document Type`, `Document Expiry Date`, `AML Check Status` (popolati tramite webhook, vedi sotto)
5. Il componente mostra in linea lo stato di verifica, il tipo di documento, la data di scadenza e il risultato AML, senza bisogno di configurare il layout della pagina

### Modalità UniLink

1. L'utente clicca su **Verify Identity**
2. Un URL UniLink fisso si apre in una finestra modale o in un iframe (non è necessaria alcuna chiamata API)
3. Al termine, il risultato viene salvato nel record

### Aggiornamenti automatici della verifica (webhook)

Quando una sessione di verifica si completa (che l'operatore stia guardando la pagina o no), Didit invia un webhook alla tua org Salesforce per aggiornare automaticamente il record Contact/Lead. Questo richiede una configurazione una tantum di un Salesforce Site.

#### Perché serve?

Salesforce non accetta richieste HTTP in entrata da servizi esterni senza un endpoint pubblico. Un Salesforce Site crea questo endpoint, così Didit può inviare i risultati della verifica direttamente alla tua org in tempo reale.

#### Passaggio 1: vai a Setup > Sites

In Salesforce, clicca sull'**icona a forma di ingranaggio > Setup**. Nella casella Quick Find digita **Sites** e clicca su di esso in **Sites and Domains**.

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

Se è la prima volta, seleziona **"I have read and accepted the Salesforce Site Terms of Use"** e clicca su **Register My Salesforce Site Domain**.

![Passaggio 1 - pagina Sites con dominio registrato](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step1-sites-registered.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=9a89d50c21cfc4911cf707a111f963ad)

#### Passaggio 2: crea un nuovo Site

Clicca sul pulsante **Nuovo** nell'elenco Sites. Compila:

* **Site Label**: `DiditWebhook`
* **Site Name**: si compila automaticamente come `DiditWebhook`
* **Default Web Address**: `didit`
* **Attivo**: selezionato
* **Active Site Home Page**: `InMaintenance`

Lascia invariati tutti gli altri campi e clicca su **Salva**.

![Passaggio 2 - modulo del nuovo Site](https://mintcdn.com/didit-0f962782/yCWnhXcnyUBtSh0w/images/salesforce/step2-new-site-form.png?fit=max\&auto=format\&n=yCWnhXcnyUBtSh0w\&q=85\&s=d5869ff430f4050ebde176ff6020c260)

#### Passaggio 3: verifica che il Site sia stato creato

Dopo il salvataggio, vedrai la pagina di dettaglio del Site. Annota il **Site URL**: avrà un formato simile a `https://your-org.develop.my.salesforce-sites.com/didit`. Ti servirà più avanti.

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

#### Passaggio 4: concedi al Guest User l'accesso alla classe del webhook

Nella pagina di dettaglio del Site, clicca su **Public Access Settings**. Si apre il profilo Guest User. Scorri fino a **Enabled Apex Class Access** e clicca su **Modifica**. Seleziona **DiditWebhookReceiver** dall'elenco Available e clicca su **Aggiungi** per spostarlo nell'elenco Enabled. Clicca su **Salva**.

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

#### Passaggio 5: configura il webhook nella Didit Console

1. Vai su [business.didit.me](https://business.didit.me) > **API e Webhook**
2. Imposta il tuo **Webhook URL** su: `https://your-org.develop.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`

> **Nota:** il formato esatto del dominio dipende dal tipo di org. Le org Developer Edition includono `.develop` nell'URL. Le org di produzione usano `https://your-org.my.salesforce-sites.com/didit/services/apexrest/didit/webhook/`. Copia sempre l'URL dalla pagina di dettaglio del Site (Passaggio 3) per essere sicuro.

3. Copia la **Webhook Secret Key**
4. In Salesforce, vai su **Didit Settings** e incolla il segreto nel campo **Webhook Secret**
5. Clicca su **Save Settings**

Tutto qui. Da ora in poi, ogni risultato di verifica aggiornerà automaticamente il record Contact/Lead, anche se nessuno ha la pagina di Salesforce aperta.

#### Cosa salva il webhook

Quando Didit invia un webhook, il Contact o il Lead viene aggiornato automaticamente.

**Sempre aggiornati, indipendentemente dal tipo di workflow:**

| Campo | Cosa memorizza |
| - | - |
| **Verification Status** | `Approved`, `Declined`, `In Review`, `In Progress`, `Abandoned` |
| **Identity Verified** | `true` per Approved; `false` per Declined o Abandoned |
| **Verified At** | Timestamp del risultato Approved |
| **Didit Session ID** | L'UUID della sessione |

**Aggiornati solo quando la funzionalità fa parte del tuo workflow:**

| Campo | Richiede |
| - | - |
| **Verified Document Type** | Verifica dell'identità nel tuo workflow |
| **Document Expiry Date** | Verifica dell'identità nel tuo workflow |
| **AML Check Status** | Screening AML nel tuo workflow |
| **Verification Decline Reasons** | Verifica dell'identità nel tuo workflow |

Se una funzionalità non è attiva nel tuo workflow di Didit, i campi corrispondenti restano semplicemente vuoti: non si rompe nulla.

Per ogni sessione viene inoltre creato un record figlio **Didit Verification** (`Didit_Verification__c`), che ti offre un registro di audit completo con dettagli aggiuntivi (numero del documento, paese di emissione, nome sul documento, data di nascita, punteggio di confronto facciale, punteggio di rilevamento della vitalità, numero di riscontri AML). Anche in questo caso, i dettagli compaiono solo per le funzionalità incluse nel workflow.

Puoi aggiungere la lista correlata **Didit Verifications** al layout di pagina di Contact/Lead per consultarne la cronologia.

### Automazione dei flow (azione invocabile)

Il plugin include un'azione Apex invocabile che i Flow di Salesforce possono chiamare per avviare la verifica automaticamente:

1. In Flow Builder, aggiungi un elemento **Azione**
2. Cerca **"Create Didit Verification Session"**
3. Passa l'ID di un record Contact o Lead
4. L'azione restituisce `url`, `sessionId`, `success` ed `error`
5. Usa l'URL in un'azione **Send Email** o **Send Notification** per inviarlo al cliente

**Esempi di casi d'uso:**

* **Alla creazione di un Lead**: invia automaticamente un link di verifica a ogni nuovo lead
* **Monitoraggio della scadenza dei documenti**: crea uno Scheduled Flow che viene eseguito ogni giorno, trova tutti i Contact in cui `Document Expiry Date ≤ TODAY + 90 days` e invia un link di nuova verifica. Funziona subito, usando il campo `Document Expiry Date` popolato dal webhook.

## Risoluzione dei problemi

### Il pulsante non fa nulla al clic

* Assicurati di aver salvato la tua chiave API e il Workflow ID nelle Impostazioni di Didit
* Verifica che il Workflow ID appartenga alla stessa applicazione della tua chiave API
* Attiva il **Debug Logging** nelle Impostazioni di Didit e controlla la console del browser per individuare eventuali errori

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

* Verifica che la Remote Site Setting per `https://verification.didit.me` sia attiva: Setup → Remote Site Settings
* Controlla che la tua chiave API sia valida e non sia scaduta nella [Didit Business Console](https://business.didit.me)

### Il webhook restituisce 401 — "Webhook secret not configured"

* Vai alle **Impostazioni di Didit**, incolla la tua Webhook Secret Key (copiata da Didit Console → API & Webhooks) nel campo **Webhook Secret**, quindi fai clic su **Save Settings**

### Il webhook restituisce 401 — "Invalid signature" o "Request timestamp is stale"

* Firma non valida: assicurati che la Webhook Secret nelle Impostazioni di Didit corrisponda esattamente a quella presente nella Didit Console, senza spazi o caratteri in più
* Timestamp obsoleto: i webhook devono arrivare entro 5 minuti dall'invio. Se l'orologio della tua organizzazione Salesforce non è sincronizzato, questo può generare falsi positivi, ma è un caso molto raro

### La finestra di verifica non si apre (errore CSP nella console del browser)

* Il CSP Trusted Site per `https://verify.didit.me` è incluso nel pacchetto gestito (managed package) e viene distribuito automaticamente. Se effettui il deployment dal codice sorgente, assicurati che `cspTrustedSites/Didit_Verify_Frontend.cspTrustedSite-meta.xml` sia incluso nel tuo deployment

## Supporto (24/7)

Il nostro team è disponibile per aiutarti a iniziare.

> [card] [Email](mailto:hello@didit.me)
>
> Scrivici un'email all'indirizzo [hello@didit.me](mailto:hello@didit.me).


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