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

# Credenziali Meta — configurazione passo dopo passo

> Raccogli ogni credenziale Meta necessaria a Switchbord per inviare e ricevere messaggi WhatsApp, con deep-link e suggerimenti di verifica.

# Credenziali Meta

Switchbord comunica con la WhatsApp Business Platform tramite la Graph API di Meta.
Prima che qualsiasi messaggio possa fluire, servono cinque elementi:

1. **Meta access token** (token System User)
2. **App Secret** (firma dei webhook)
3. **Verify token** (handshake del webhook)
4. **Phone Number ID** (da quale numero inviare)
5. **WhatsApp Business Account ID** (WABA ID — l'account che possiede il numero)

Puoi incollare tutti e cinque dalla pagina Impostazioni del canale o dal wizard di benvenuto integrato su `/welcome`. Ogni campo ha un toggle "Dove lo trovo?" con il percorso esatto nel Meta Business Suite e un deep-link che ti porta direttamente lì.

## 1 · Meta access token

1. Apri [Meta Business Settings → Users → System Users](https://business.facebook.com/settings/system-users).
2. Seleziona il System User assegnato al tuo WABA (creane uno se non lo hai — deve avere **controllo completo** sul WABA).
3. Clicca **Generate new token**, scegli la tua app WhatsApp e concedi:
   * `whatsapp_business_management`
   * `whatsapp_business_messaging`
4. Copia la lunga stringa `EAAG…` e incollala in **Impostazioni canale →
   Credenziali provider → Meta Access Token**.

Switchbord cifra il token a riposo in Supabase Vault. Non compare mai nei log dell'applicazione.

## 2 · App Secret

1. Apri [Meta App Dashboard](https://developers.facebook.com/apps/) e scegli
   la tua app WhatsApp.
2. Vai su **App settings → Basic**.
3. Clicca **Show** accanto ad **App secret**, autenticati e copia il valore.
4. Incollalo in **Impostazioni canale → Webhook Signing Secret**.

L'App Secret è ciò con cui Switchbord verifica che i payload dei webhook in entrata provengano davvero da Meta (HMAC-SHA256 sul corpo grezzo).

## 3 · Verify token

Questo è a tua discrezione — Switchbord può generarlo per te.

1. Nel passo 3 del wizard di benvenuto (oppure **Impostazioni canale → Meta verify token**),
   clicca **Generate**.
2. Copia il token generato `swb_…`.
3. In [Meta App Dashboard → WhatsApp → Configuration →
   Webhooks](https://developers.facebook.com/apps/), clicca **Edit**, incolla
   lo stesso token e imposta la Callback URL su quella mostrata nel wizard.

Meta chiama `GET {callbackUrl}?hub.verify_token=…` una sola volta — Switchbord risponde con la challenge corrispondente se i token coincidono.

## 4 · Phone Number ID

1. Apri [WhatsApp Manager — Phone Numbers](https://business.facebook.com/wa/manage/phone-numbers/).
2. Seleziona il business che possiede il tuo WABA.
3. Trova la riga del numero WhatsApp da cui vuoi inviare.
4. Copia il lungo valore numerico nella colonna **ID** (in genere 15 cifre).
5. Incollalo in **Impostazioni canale → WhatsApp phone ID**.

Dopo il salvataggio, Switchbord chiama
`GET https://graph.facebook.com/v25.0/{phone_number_id}` per confermare che l'ID
sia reale e appartenga all'ambito del tuo access token. In caso di successo vedrai una riga verde
"Verified with Meta", oppure in caso di errore una riga rossa "Meta rejected this ID"
con il codice di errore esatto (in genere `meta_graph_100` se
l'ID è errato o `meta_graph_190` se il token non ha accesso).

## 5 · WhatsApp Business Account ID (WABA ID)

1. Apri [Business Settings → Accounts → WhatsApp
   Accounts](https://business.facebook.com/settings/whatsapp-business-accounts/).
2. Seleziona il tuo WABA.
3. L'ID numerico è mostrato sotto il nome dell'account (e nell'URL —
   `business.facebook.com/settings/whatsapp-business-accounts/<WABA_ID>`).
4. Incollalo in **Impostazioni canale → WhatsApp Business Account ID**.

Il WABA ID viene usato per inviare modelli e leggere i metadati a livello di account.
Switchbord lo valida rispetto a
`GET https://graph.facebook.com/v25.0/{waba_id}` immediatamente dopo il salvataggio.

## Risoluzione dei problemi

| Sintomo                               | Causa probabile                                                          | Soluzione                                                                                             |
| ------------------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
| `meta_graph_190` su qualsiasi campo   | Token scaduto o senza scope                                              | Genera un nuovo token System User con `whatsapp_business_management` + `whatsapp_business_messaging`. |
| `meta_graph_100` su Phone Number ID   | ID errato o appartenente a un WABA diverso                               | Ricopia da WhatsApp Manager → Phone Numbers → colonna ID.                                             |
| "Looks like a placeholder"            | Il campo contiene ancora il valore seed (`12345`, `default-phone`, ecc.) | Incolla l'ID numerico reale dal Business Suite.                                                       |
| Il webhook restituisce 401 in entrata | Mancata corrispondenza dell'App Secret                                   | Ricopia da App Dashboard → Basic.                                                                     |

## Alternativa: Meta Embedded Signup

I cinque passi precedenti sono il percorso **bring-your-own-token** — sempre disponibile e l'unico percorso per i deployment self-hosted. Se il tuo deployment ha Embedded Signup abilitato (`NEXT_PUBLIC_EMBEDDED_SIGNUP_ENABLED=1` più le credenziali dell'app Meta), `/welcome` offre anche un flusso di accesso ospitato da Meta che salta completamente i passi 1, 4 e 5 sopra indicati — Meta restituisce direttamente il WABA ID e il Phone Number ID, e Switchbord scambia lato server un codice one-time per l'access token. Supporta inoltre in modo trasparente l'onboarding di un **secondo WABA** nella stessa area di lavoro, senza toccare il token archiviato del primo WABA. Consulta [Meta Embedded Signup e Multi-WABA](/it/platform/embedded-signup) per il flusso completo.

## Riferimento

* `packages/whatsapp/validate-meta-ids.ts` — valida in tempo reale il Phone Number ID
  e il WABA ID rispetto alla Graph API di Meta.
* `apps/app/app/api/settings/meta/validate-ids/route.ts` — l'endpoint chiamato
  dall'interfaccia.
* Le impostazioni del canale risiedono su `channels.phone_number_id` e
  `channels.waba_id` (vedi `packages/database/src/adapters/messages.ts`).
* `apps/app/app/api/onboarding/meta/exchange/route.ts` — l'endpoint di scambio codice
  dell'Embedded Signup (vedi [Meta Embedded Signup e Multi-WABA](/it/platform/embedded-signup)).
