# Prenotare appuntamenti Cal.com o Calendly dalla chat

> Permetti ai visitatori di prenotare un appuntamento in chat dal tuo calendario Cal.com o Calendly: collegare una chiave API o un personal access token, scegliere un tipo di evento, cosa vedono i visitatori, dove compaiono le prenotazioni e i limiti.

Con la prenotazione attiva, il tuo agente può mostrare sotto la sua risposta gli orari liberi del tuo calendario Cal.com o Calendly. Il visitatore sceglie un orario, inserisce nome e indirizzo email, e l'appuntamento viene prenotato subito nel tuo calendario. L'agente decide quando mostrare gli orari. Gli orari vengono sempre dal tuo calendario, mai dal modello di IA.

> Sono supportati Cal.com e Calendly. Google Calendar e altri calendari non si possono collegare. Per indirizzare i visitatori a un'altra pagina di prenotazione, aggiungi un [pulsante personalizzato](/it/docs/custom-buttons) che vi rimandi.

## Prima di iniziare

Ti servono un account con almeno un tipo di evento, per esempio una chiamata introduttiva di 30 minuti, e una chiave che permetta a intoCHAT di usarlo:

- **Cal.com**: una chiave API. Creala in Cal.com in **Settings**, **Developer**, **API keys**. Inizia con `cal_`.
- **Calendly**: un personal access token. Crealo in Calendly in **Integrations**, **API & Webhooks**, **Personal access tokens**. Assegnagli gli scope `users:read`, `event_types:read`, `availability:read` e `scheduled_events:write`. Calendly mostra il token una sola volta, quindi copialo subito.

> Calendly permette di prenotare tramite la sua API solo con i piani a pagamento (Standard e superiori). Con il piano Free, Calendly rifiuta ogni prenotazione, quindi i visitatori vedrebbero orari liberi che non possono prenotare. intoCHAT non può controllare il tuo piano quando colleghi il calendario.

## Collegare il calendario

1. Apri il tuo agente e vai alla scheda **Actions** (azioni). Il riquadro **Booking** si trova sotto le tue azioni e i tuoi moduli.
2. In **Calendar**, scegli **Cal.com** o **Calendly**.
3. Incolla la chiave in **Cal.com API key**, oppure il token in **Personal access token**, e clicca su **Connect**. intoCHAT la controlla caricando i tuoi tipi di evento.
4. Scegli il tipo di evento in **Event type visitors book**. Ognuno mostra il titolo e la durata. Un tipo di evento indicato con "(hidden in Cal.com)" o "(secret in Calendly)" è nascosto sulla tua pagina pubblica di prenotazione, ma i visitatori possono comunque prenotarlo dalla chat. Un tipo di evento Calendly indicato con "(can't be booked from the chat)" non si può scegliere; il motivo compare sotto l'elenco. Vedi [Tipi di evento Calendly che la chat non può prenotare](#tipi-di-evento-calendly-che-la-chat-non-puo-prenotare).
5. Se vuoi, compila **When to offer booking** (quando offrire la prenotazione): lo legge l'agente, i visitatori non lo vedono, fino a 1.000 caratteri. Se lo lasci vuoto, l'agente usa il testo mostrato nel campo: "When the visitor wants to book a meeting, call, demo or appointment, or asks when the team is available."
6. Clicca su **Save**. La prenotazione è attiva appena salvata.

La chiave o il token vengono conservati cifrati e non vengono più mostrati. Il riquadro mostra una chiave Cal.com solo come `cal_…` con gli ultimi quattro caratteri, e un token Calendly solo come `…` con gli ultimi quattro caratteri. intoCHAT li usa per leggere i tuoi tipi di evento e i tuoi orari liberi e per creare le prenotazioni, nient'altro.

Se Cal.com rifiuta la chiave, il riquadro dice "Cal.com didn't accept this API key." Se Calendly rifiuta il token, dice "Calendly didn't accept this personal access token." Controlla di aver copiato l'intera chiave o l'intero token e che non sia scaduto, revocato o eliminato. Se al token manca uno scope, il riquadro indica gli scope necessari. Se l'account non ha ancora tipi di evento, creane uno e clicca di nuovo su **Connect**. Puoi controllare chiavi fino a 10 volte in 10 minuti.

### Tipi di evento Calendly che la chat non può prenotare

La chat chiede al visitatore solo un nome e un indirizzo email. Un tipo di evento Calendly non si può prenotare dalla chat quando:

- ha una domanda di prenotazione attiva e obbligatoria,
- offre solo luoghi che chiedono qualcosa all'invitato, come il numero di telefono dell'invitato, per chiamarlo tu, o un luogo scelto dall'invitato,
- è un sondaggio per una riunione (meeting poll).

Si possono prenotare i tipi di evento con una videochiamata (Zoom, Google Meet, Microsoft Teams, Webex, GoTo Meeting), con un numero di telefono che l'invitato chiama, con un luogo che hai impostato tu o senza alcun luogo. Quando un tipo di evento offre più luoghi, intoCHAT prenota il primo di questi. Le domande di prenotazione facoltative restano vuote.

## Gestire la prenotazione

Una volta collegato un calendario, il riquadro mostra il calendario, gli ultimi quattro caratteri della chiave o del token e il tipo di evento.

- L'interruttore **On** / **Off** nell'intestazione del riquadro impedisce all'agente di offrire la prenotazione, senza scollegare il calendario.
- **When to offer booking** si può modificare in qualsiasi momento. Clicca su **Save** per mantenere la modifica.
- **Change event type** carica di nuovo i tuoi tipi di evento e passa a quello che scegli. Un agente prenota un solo tipo di evento alla volta.
- **Replace key** (Cal.com) o **Replace token** (Calendly) collega una nuova chiave o un nuovo token. Lì puoi anche scegliere l'altro calendario. Se il riquadro dice che la chiave o il token salvati non si possono più leggere, quindi i visitatori non possono prenotare, il pulsante si chiama **Reconnect**: incollali di nuovo.
- **Disconnect** ferma la prenotazione ed elimina la chiave o il token salvati. Gli appuntamenti già prenotati restano nel tuo calendario e nell'elenco **Bookings** della scheda **Leads**.

## Cosa vedono i visitatori

L'agente legge **When to offer booking**. Quando la conversazione lo richiede, mostra gli orari liberi sotto la sua risposta e li cita con una breve frase. Non elenca gli orari nel testo, non chiede in chat il nome o l'email del visitatore e non dice mai che un appuntamento è prenotato prima che il visitatore lo prenoti.

Il selettore degli orari mostra il titolo e la durata del tipo di evento e il fuso orario del visitatore, per esempio "Orari nel fuso Europe/Rome":

- Mostra fino a 5 giorni con orari liberi e fino a 8 orari al giorno, distribuiti nella giornata in modo che compaiano sia la mattina sia il pomeriggio.
- Per impostazione predefinita, l'agente guarda i 7 giorni successivi. Quando il visitatore chiede giorni precisi, guarda quelli, fino a 14 giorni alla volta e fino a un anno avanti.
- Gli orari sono nel fuso orario del browser del visitatore, oppure in UTC se il browser non ne indica uno. Sono scritti come il browser del visitatore scrive date e ore.

Per prenotare, il visitatore sceglie un giorno e un orario, inserisce **Nome** ed **Email** e clicca su **Prenota**. **Scegliere un altro orario** torna all'elenco. Subito prima della prenotazione, intoCHAT chiede di nuovo al tuo calendario se l'orario è ancora libero. Se nel frattempo qualcun altro l'ha preso, il visitatore vede "Questo orario è appena stato prenotato. Sceglierne un altro." e l'orario sparisce dall'elenco.

Quando l'appuntamento è prenotato, una conferma viene aggiunta alla chat come messaggio dell'agente, per esempio "Prenotato: Chiamata introduttiva, martedì 13 ottobre 2026 alle ore 14:30 (Europe/Rome). Una conferma dovrebbe arrivare a ana@example.com." Se il tuo tipo di evento Cal.com richiede che tu confermi le prenotazioni, inizia invece con "Richiesto:" e dice che l'appuntamento deve ancora essere confermato. Cal.com o Calendly invia le sue solite email e gli inviti di calendario. intoCHAT non invia al visitatore nessuna email propria.

I testi del selettore seguono **Widget language** nella scheda [Appearance](/it/docs/appearance). Il titolo del tipo di evento compare come l'hai scritto in Cal.com o Calendly. Dopo un ricaricamento, un selettore il cui orario è stato prenotato mostra "In questa chat è stato prenotato un appuntamento."

Se il calendario non ha orari liberi nei giorni richiesti, l'agente lo dice e può proporre di guardare altri giorni. Se il tuo calendario non è raggiungibile, l'agente dice che al momento la prenotazione non funziona. Non inventa mai orari.

La prenotazione funziona nella bolla della chat, nell'iframe incorporato, nel link diretto, nella [pagina di assistenza](/it/docs/help-page) e nel **Playground**. Non è disponibile nelle chat temporanee, dove non viene salvato nulla. Se un visitatore vuole prenotare lì, l'agente gli chiede di uscire dalla chat temporanea e chiedere di nuovo.

## Le prenotazioni dal Playground sono reali

> Un appuntamento prenotato nel **Playground** è una prenotazione reale. Il selettore lì dice, per esempio: "Playground: booking here is real. It creates the meeting in your Calendly calendar, and Calendly sends its usual emails." Compare anche nell'elenco **Bookings** e invia il webhook `booking.created` e la notifica Slack come qualsiasi altra prenotazione. Annulla le prenotazioni di prova in Cal.com o Calendly.

## Dove compaiono le prenotazioni

- **Scheda Leads**: il riquadro **Bookings** elenca ogni appuntamento prenotato dalla chat, con nome, indirizzo email e fuso orario del visitatore e un link alla conversazione. Vedi [Notifiche ed export](/it/docs/lead-alerts-and-export#prenotazioni).
- **Scheda Conversations**: la conferma compare nella trascrizione come messaggio dell'agente. Sotto la risposta che ha mostrato gli orari, **Why this answer** elenca "Booking:" seguito dal titolo del tipo di evento sotto **Actions called**. Nell'export CSV, il messaggio di quella risposta termina con `[Booking times: ` e il titolo del tipo di evento. Vedi [Conversazioni e statistiche](/it/docs/conversations-and-dashboard).
- **Webhook**: iscrivi un webhook a **Meeting booked** per ricevere l'evento `booking.created`. Il suo `provider` è `calcom` o `calendly`. Vedi [Webhook](/it/docs/webhooks#dati-di-booking-created).
- **Slack**: seleziona **Booked meeting** in **Post a message for** nel riquadro **Slack alerts**. Vedi [Notifiche Slack](/it/docs/lead-alerts-and-export#notifiche-slack).

## Limiti

- **Cal.com o Calendly**, un calendario e un tipo di evento per agente.
- **Calendly richiede un piano a pagamento** (Standard e superiori) per prenotare tramite la sua API. Calendly limita anche quante prenotazioni accetta la sua API: con i piani a pagamento diversi da Enterprise, 10 al minuto, 50 all'ora e 100 al giorno per utente Calendly; durante una prova di Calendly, 5 al giorno. Oltre, i visitatori vedono "Troppi tentativi. Riprovare tra qualche istante."
- **Nessuna sincronizzazione dal tuo calendario.** Se un appuntamento viene spostato o cancellato in Cal.com o Calendly, l'elenco **Bookings** e la conversazione mostrano ancora la prenotazione originale. I visitatori non possono cancellare o spostare un appuntamento dalla chat; lo si fa in Cal.com o Calendly.
- **Una prenotazione non è un lead.** Il nome e l'indirizzo email del visitatore non aggiungono un lead, e una prenotazione non genera né una notifica di nuovo lead né un webhook `lead.created`. Le prenotazioni non vengono contate in **Outcomes** nella dashboard né nelle email di riepilogo.
- **Solo conversazioni salvate.** Una prenotazione appartiene sempre a una conversazione salvata, quindi nelle chat temporanee non si può prenotare.
- **Tentativi.** Un visitatore può provare a prenotare fino a 5 volte al minuto. Oltre, vede "Troppi tentativi. Riprovare tra qualche istante."
- **Una prenotazione per orario.** Lo stesso orario non si può prenotare due volte nella stessa conversazione; un secondo clic mostra la prima prenotazione. Altri orari si possono prenotare nella stessa conversazione.
- **Messaggi.** La risposta che mostra gli orari conta come un messaggio, come qualsiasi risposta. Prenotare l'orario non consuma un messaggio.
- **Gli agenti duplicati** non copiano il collegamento al calendario. Collega di nuovo Cal.com o Calendly nella copia se deve offrire la prenotazione.
- **Cambiare il tipo di evento** non modifica gli appuntamenti già prenotati. L'elenco **Bookings** conserva il titolo con cui è stato prenotato ogni appuntamento, anche dopo **Disconnect**.

## Passi successivi

- Invia le prenotazioni ai tuoi sistemi: [Webhook](/it/docs/webhooks).
- Raccogli invece dati come una richiesta di preventivo: [Moduli in chat](/it/docs/chat-forms).
- Rimanda a un'altra pagina di prenotazione: [Pulsanti personalizzati](/it/docs/custom-buttons).
