FAQ
Gli utenti devono installare qualcosa?
No. Gli utenti devono solo incollare un tag script nel loro HTML — nessun pacchetto npm, nessun passaggio di build, nessuna dipendenza. Le funzionalità extra si caricano automaticamente dalla stessa origine.
Andrà in conflitto con il mio CSS?
No. Il widget viene renderizzato all’interno di uno Shadow DOM, isolando completamente i suoi stili dalla tua pagina.
Supporta le single-page app (React, Vue, Next.js)?
Sì. Lo script si carica una sola volta e persiste tra i cambi di rotta. Per React/Next.js, posiziona lo script nel tuo root layout.
// app/layout.tsx (App Router)
import Script from 'next/script';
import { ReactNode } from 'react';
export default function RootLayout({ children }: { children: ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Script id="respondo-init" strategy="afterInteractive">
{`
window.Respondo = window.Respondo || {};
Respondo.init = Respondo.init || function(c) { window.RespondoAIConfig = c; };
Respondo.q = Respondo.q || [];
Respondo.identify = Respondo.identify || function(d) { Respondo.q.push(['identify', d]); };
Respondo.init({
agentId: 'YOUR_AGENT_ID',
channelId: 'YOUR_CHANNEL_ID'
});
`}
</Script>
<Script src="https://api.respondo.ai/widget/widget.js" strategy="afterInteractive" />
</body>
</html>
);
}Cosa succede quando una conversazione viene risolta?
Un nuovo messaggio dopo la risoluzione apre automaticamente una conversazione di follow-up collegata alla precedente (mostrata come "Continued from #N" nella tua inbox). Il contesto, come la lingua e la trascrizione precedente, viene mantenuto e il visitatore vede un’unica chat continua. Se un membro del team gestiva la conversazione risolta, il follow-up viene reindirizzato al tuo team invece che all’IA; altrimenti se ne occupa l’IA.
Come viene caricato il widget?
Il widget viene caricato in modo asincrono (async), quindi non blocca mai il rendering della pagina. Il bundle principale è ~180KB (~50KB gzipped); le funzionalità opzionali (campagne, tour di prodotto) si caricano come chunk lazy separati dopo il mount del widget, quindi il rendering iniziale della pagina non viene mai bloccato.
Come funziona l’escalation?
Gli utenti possono cliccare il pulsante "Talk to human", scrivere una frase richiedendo un umano, oppure l’IA passa la conversazione da sé quando non riesce a rispondere a partire dalla tua knowledge base. Una volta avvenuta l’escalation, l’IA smette di rispondere e tutti i messaggi successivi vengono inoltrati al tuo team di supporto. Vedi la sezione Escalation e passaggio per i dettagli.
Gli utenti possono continuare a chattare con l’IA dopo l’escalation?
Sì. Il widget mostra un pulsante "Continue with AI" che consente all’utente di ignorare l’escalation e riprendere la conversazione con l’IA.
Knowledge base e scansione del sito#
Perché la scansione del mio sito è bloccata?
«Bloccata» significa che il sito — o il suo livello di protezione (Cloudflare, un WAF, un plugin anti-bot) — ha rifiutato il nostro crawler: la pagina iniziale o robots.txt ha risposto a ogni tentativo con un errore di accesso o con una verifica «controllo del browser», oppure robots.txt vieta esplicitamente il nostro crawler. Le pagine importate in precedenza restano intatte, e una risincronizzazione fallirà allo stesso modo finché il sito non ci farà entrare. Chieda al proprietario del sito di consentire lo User-Agent RespondoAI-Crawler (stringa completa: Mozilla/5.0 (compatible; RespondoAI-Crawler/1.0; +https://respondo.ai/bot)) nelle impostazioni di protezione — su Cloudflare è Security → WAF → Custom rules — e, se la causa è robots.txt, di aggiungere una regola di autorizzazione per User-agent: RespondoAI-Crawler. Respondo non pubblica un indirizzo IP fisso del crawler: autorizzi per User-Agent; se l'errore mostrato sulla fonte indica un IP, autorizzi anche quello. Se il sito non può essere modificato, aggiunga lo stesso contenuto come file o testo incollato.
La scansione è terminata ma ha trovato solo poche pagine
Individuiamo le pagine tramite la sitemap del sito (la riga Sitemap: in robots.txt o posizioni comuni come /sitemap.xml) e seguendo i link a partire dall'URL iniziale — fino a 10 livelli di link di profondità e fino a 5.000 pagine per fonte. Vengono importate solo le pagine dello stesso sito sotto il percorso dell'URL iniziale: una scansione avviata da https://example.com/help salta /blog, quindi parta dalla radice o aggiunga percorsi da includere. Le pagine a cui nessun link o sitemap punta, quelle vietate da robots.txt e quelle dietro un login non vengono trovate. Le pagine quasi duplicate (versioni stampabili, varianti con parametri di tracciamento) vengono unite in una sola. Le pagine il cui contenuto è disegnato interamente da JavaScript vengono rilevate e renderizzate con un meccanismo di riserva basato su browser; un numero basso di pagine indica quindi di solito un problema di ambito o di sitemap, non di rendering.
Come limito la scansione a una sezione del sito?
Apra Advanced nella finestra di aggiunta del sito e compili Only crawl paths starting with (scansiona solo i percorsi che iniziano con) e/o Skip paths starting with (salta i percorsi che iniziano con) — un percorso per riga, fino a 50 per campo. La corrispondenza avviene per segmenti interi del percorso: /docs corrisponde a /docs e /docs/getting-started, ma non a /docs-archive; la barra finale viene ignorata e può incollare un URL completo — ne viene usato solo il percorso. Le regole di esclusione prevalgono su quelle di inclusione. Le stesse regole si applicano alla sitemap e a ogni risincronizzazione successiva di quella fonte.
Ogni quanto Respondo riesegue la scansione del mio sito?
Ogni fonte di tipo sito web ha una pianificazione Auto-refresh nel pannello delle pagine: Off (disattivata), Daily (ogni 24 ore) o Weekly (ogni 7 giorni). Una scansione pianificata è incrementale: le pagine il cui lastmod nella sitemap è precedente alla scansione precedente vengono saltate, le pagine invariate non vengono reindicizzate, quelle modificate vengono reindicizzate e quelle scomparse vengono rimosse. Per aggiornare subito, usi Re-sync nel menu della fonte o Re-sync all nella pagina Knowledge.
«Questa volta non siamo riusciti a leggere il sito»: cosa è successo?
È l'errore generico: il sito non ha risposto in tempo, il dominio non è stato risolto, il server ha restituito un errore, la pagina iniziale non conteneva testo leggibile oppure l'indirizzo non è stato trovato. Il dettaglio è mostrato sulla fonte. Verifichi che l'URL si apra in una finestra di navigazione privata, che il dominio non contenga refusi e che la pagina iniziale sia una vera pagina di contenuto e non una schermata di accesso. Social network e piattaforme di messaggistica (Facebook, Instagram, LinkedIn, X, YouTube e simili) non possono essere importati affatto: vengono rifiutati prima dell'avvio della scansione. Le pagine esistenti vengono conservate; una fonte pianificata riprova all'esecuzione successiva, altrimenti risincronizzi quando il sito torna raggiungibile.
Cosa significano «il nostro indice di ricerca è pieno» e «non siamo riusciti a indicizzare questa fonte»?
Entrambi compaiono dopo che il contenuto è stato letto con successo. Indice pieno significa che l'indice di ricerca in cui questa fonte viene copiata non ha più spazio dal lato di Respondo — un limite di Respondo, non un problema del suo contenuto. Le pagine sono archiviate, tutto ciò che è già indicizzato continua a rispondere, il nostro team viene avvisato automaticamente e la fonte verrà indicizzata non appena ci sarà spazio; una risincronizzazione anticipata fallirà allo stesso modo. Non siamo riusciti a indicizzare questa fonte significa che la costruzione dell'indice di ricerca è fallita questa volta — un errore temporaneo dalla nostra parte; i dati esistenti sono intatti e l'operazione viene ritentata automaticamente. Se uno dei due messaggi persiste, usi «Chiedi a Copilot» sull'errore.
Le pagine lunghe vengono usate solo dall'inizio?
No. Ogni pagina scansionata viene suddivisa in frammenti sovrapposti di circa 1.600 caratteri, ciascuno indicizzato separatamente con il titolo della pagina allegato, così una risposta può provenire da qualsiasi parte di un articolo lungo. Le citazioni mostrano comunque un link per pagina. Le pagine importate prima di questa modifica vengono risuddivise nelle risincronizzazioni successive.
Come ottengo aiuto per un errore di scansione?
Ogni errore di scansione o indicizzazione nella pagina Knowledge è accompagnato da un pulsante Chiedi a Copilot. Apre Copilot con l'errore allegato, e Copilot risponde attingendo alla documentazione di aiuto di Respondo con passaggi concreti per il suo caso. Questo aiuto è gratuito: non viene conteggiato nelle sue richieste AI. Se i passaggi non risolvono il problema, lo dica — basta un «non ha funzionato». Copilot propone allora una scheda che passa il problema al team di Respondo: la scheda elenca esattamente cosa viene inviato, nulla parte finché non conferma, e la loro risposta arriva nello stesso thread di Copilot. Se il passaggio non è disponibile, Copilot lo dice chiaramente invece di tacere.
Messaggi che non arrivano al cliente#
Una risposta segna «Not delivered»: cosa significa e da dove comincio?
Ogni messaggio in uscita dalla posta in arrivo porta un indicatore di consegna: Queued (in coda: le risposte scritte a distanza ravvicinata vengono unite e partono come una sola e-mail nel giro di un paio di minuti), Sending… (invio in corso), Sent (inviato), Delivered (consegnato), oppure un errore in rosso. Gli errori hanno tre forme: Not delivered — il canale ha rifiutato il messaggio; Bounced, con accanto il sottotipo di rimbalzo — il server di posta del destinatario ha respinto l'e-mail; e Marked as spam — il destinatario l'ha segnalata. Passi il mouse sull'etichetta o ci clicchi sopra: il tooltip riporta le parole esatte del provider, incluso il diagnostico SMTP grezzo di un rimbalzo. Accanto compaiono fino a due azioni — Retry / Send again (riprova), che rimanda davvero il messaggio, e Ask Copilot (chiedi a Copilot), che apre Copilot con l'errore allegato. Se il pulsante di reinvio non c'è affatto, l'indirizzo è bloccato e un nuovo invio fallirebbe allo stesso modo. Un Sent o Delivered accompagnato da N files not delivered significa che il testo è arrivato ma un allegato no: quel canale non poteva trasportare il file.
Perché la mia e-mail non è arrivata al cliente?
Quattro cose diverse, e l'etichetta le distingue. Un rimbalzo permanente significa che l'indirizzo non esiste o rifiuta la posta: non compare alcun pulsante di reinvio e l'indirizzo finisce nella lista di soppressione. Un rimbalzo temporaneo è una casella piena o un problema passeggero sul server ricevente; Send again viene offerto e di solito funziona più tardi. Un rimbalzo il cui diagnostico cita SPF, DKIM, DMARC o 5.7.515 è un caso diverso: il sistema di posta del destinatario ha respinto il messaggio perché il suo dominio di invio non ha superato il controllo di autenticazione. Una nuova risposta rimbalzerà esattamente allo stesso modo finché il dominio non viene sistemato, quindi nel frattempo risponda su un altro canale e ripari i record DNS del canale e-mail in Settings → Channels. Infine, Marked as spam significa che il destinatario ha premuto «segnala come spam»: l'indirizzo viene soppresso e smettiamo di scrivergli. Il report di una campagna può inoltre mostrare The email provider rejected this message — un rifiuto definitivo prima ancora che l'e-mail partisse, di solito un dominio di invio non verificato o un indirizzo malformato — e The email provider rejected our credentials, che è un problema di configurazione dello spazio di lavoro e non riguarda quel singolo contatto.
Che cos'è la lista di soppressione e come si toglie un indirizzo?
È un elenco, privato del suo spazio di lavoro, di indirizzi e-mail a cui Respondo si rifiuta di scrivere. Un indirizzo ci finisce quando un messaggio subisce un rimbalzo definitivo (un rifiuto permanente), quando qualcuno segnala una sua e-mail come spam, oppure quando viene bloccato manualmente. I rimbalzi temporanei non sopprimono mai un indirizzo. Finché il blocco è attivo, le consegne di campagna verso quell'indirizzo vengono saltate con This address is blocked after an earlier bounce or complaint, e una risposta dalla posta in arrivo viene rifiutata prima di partire. Viene soppresso soltanto il destinatario reale del messaggio: una notifica di rimbalzo non può bloccare un indirizzo arbitrario. Nella dashboard non esiste una schermata per questa lista: un proprietario o un amministratore può leggerla con GET https://api.respondo.ai/api/v1/integrations/email/suppressions e rimuovere una voce con DELETE https://api.respondo.ai/api/v1/integrations/email/suppressions/<email>, oppure chiedere al supporto Respondo di farlo. Sblocchi un rimbalzo definitivo solo se sa che la casella è stata davvero sistemata: scrivere di nuovo a un indirizzo morto danneggia la reputazione del suo dominio.
WhatsApp non accetta la mia risposta: la finestra di 24 ore
WhatsApp consente a un'azienda di inviare messaggi in forma libera solo entro 24 ore dall'ultimo messaggio del cliente; oltre quel limite Meta rifiuta tutto con l'errore 131047. Respondo tiene traccia di quella finestra persona per persona e, quando sa che è scaduta, ferma la risposta prima dell'invio. Quando Respondo non ha alcuna traccia di una finestra — un contatto importato, o un numero che non le ha mai scritto — non blocca: il messaggio va a Meta ed è Meta a decidere. Le vie d'uscita sono esattamente due. Aspettare che il cliente scriva di nuovo — il suo messaggio riapre la finestra per altre 24 ore e la sua risposta passa — oppure inviare un template (modello) approvato da Meta. I template non si possono inviare dal compositore della conversazione. Li gestisca in Outbound → WhatsApp templates: Sync recupera quelli già registrati sul suo numero, New template ne sottopone uno a Meta, la cui revisione richiede un giorno o più. Poi invii un template approvato tramite una campagna outbound rivolta a quel contatto. Un template raggiunge allo stesso modo le persone dentro e fuori dalla finestra, ma solo finché il suo stato è approved.
«That channel is disconnected» / «That channel is not connected»
Disconnected (disconnesso) significa che l'integrazione esiste ma non è più attiva: il suo token di accesso è stato revocato o è scaduto, oppure qualcuno l'ha disconnessa. Not connected (non connesso) significa che dietro il recapito della persona non c'è alcuna integrazione. Entrambi si risolvono in Settings → Channels, dove i canali disconnessi sono raggruppati sotto un titolo dedicato con un pulsante Reconnect su ogni scheda; riconnetta, poi riprovi il messaggio. Due casi vicini si somigliano ma non sono la stessa cosa: un canale e-mail il cui dominio di invio non è verificato non può passare a Live e non invia nulla finché DKIM e SPF non sono confermati, e un canale di sola ricezione rifiuta i messaggi in uscita per progetto, quindi lì un Retry non andrà mai a buon fine.
«No channel to reach this person on» / «No email address on this contact»
Entrambi compaiono nel report di consegna di una campagna, non nella posta in arrivo. Il primo significa che nessuno dei recapiti del contatto corrispondeva ai canali su cui la campagna invia; se il suo unico recapito si trova su un canale di sola ricezione, la cosa viene riportata a parte come salto deliberato. Il secondo significa che la campagna invia e-mail e il contatto non ha alcun indirizzo registrato. Telegram ha la sua variante: se la persona non ha mai scritto al suo bot non esiste alcuna chat a cui scrivere, perché la Bot API vieta a un bot di scrivere per primo — deve essere lei a mandare il primo messaggio. Rimedi aggiungendo l'indirizzo mancante al contatto, allargando i canali a cui la campagna si rivolge, oppure lasciando che ripieghi sull'e-mail.
Il contatto si è disiscritto: cosa posso inviargli?
They had already unsubscribed significa che il contatto ha una disiscrizione globale: impostata tramite il link di disiscrizione di una delle sue e-mail, arrivata con un'importazione, oppure attivata da un collega. Campagne e serie saltano questi contatti su ogni canale, non solo sull'e-mail, e la consegna viene registrata come salto e non come errore. Una risposta uno-a-uno di un collega dentro una conversazione deliberatamente non viene bloccata: una disiscrizione riguarda gli invii massivi, e rispondere a chi le ha scritto è una decisione umana. Lo stato è mostrato sul contatto come Outbound: Subscribed / Unsubscribed (iscritto / disiscritto), l'elenco contatti può essere filtrato in base a esso, e il pulsante Re-subscribe (reiscrivi) sul contatto lo annulla: lo usi solo se è la persona a chiederglielo.
Quante volte riprovate, e premere Retry è sicuro?
Una risposta dalla posta in arrivo viene affidata a una coda che compie fino a cinque tentativi, con attese di circa 3, 10, 30 e 30 minuti tra l'uno e l'altro. Vengono ritentati solo gli errori transitori: timeout, connessioni rifiutate, limiti di frequenza, errori del server del provider stesso. Un rifiuto definitivo (indirizzo sconosciuto, dominio di invio non verificato, credenziali respinte) viene segnato come fallito subito, perché una ripetizione otterrebbe la stessa risposta. Le consegne di campagna girano su una coda propria con fino a sei tentativi e attese più brevi — 5 secondi, 30 secondi, 2 minuti, 10 minuti; esauriti quelli, la consegna viene chiusa con Delivery kept failing and was stopped after several attempts invece di restare per sempre in «queued». Premere Retry a mano è sicuro. Agisce solo su un messaggio che è davvero in stato di errore e, per l'e-mail, chiede prima al provider che fine ha fatto l'originale: se quell'e-mail è partita, la riga passa a consegnata invece di inviare una seconda copia, e un reinvio vero parte con una nuova chiave di idempotenza. Dove una seconda copia sarebbe sbagliata — un rimbalzo definitivo, una segnalazione di spam, un invio ancora in volo — il pulsante non c'è oppure il reinvio viene rifiutato indicandone il motivo.
La causa non è ancora chiara: come ottengo aiuto?
Ogni messaggio fallito porta accanto un pulsante Ask Copilot (chiedi a Copilot). Apre Copilot con l'errore, il canale e la conversazione allegati, e Copilot risponde attingendo alla documentazione di aiuto di Respondo con i passaggi per quel preciso errore. Questo aiuto è gratuito: non viene conteggiato nelle sue richieste AI. Se i passaggi non risolvono il problema, lo dica — basta un «non ha funzionato». Copilot propone allora una scheda che passa il problema al team di Respondo: la scheda elenca esattamente cosa viene inviato, nulla parte finché non conferma, e la loro risposta arriva nello stesso thread di Copilot. Se il passaggio non è disponibile, Copilot lo dice chiaramente invece di tacere.