Blu Pantheon
Integrations

CRM ed ERP

Pattern di integrazione con Salesforce, HubSpot, Dynamics 365, SAP, gestionali italiani e sistemi legacy AS/400.

Blu Pantheon non sostituisce il tuo CRM o il tuo ERP: li alimenta e li interroga. Questa pagina descrive i pattern di integrazione disponibili, la mappatura dei campi, la gestione dei duplicati e la sincronizzazione bidirezionale.

Prima di iniziare

  • Ruolo Amministratore tenant oppure permesso config:integrations:write
  • Credenziali di un utente tecnico sul CRM o ERP, con permessi minimi necessari
  • Un ambiente di prova del sistema di destinazione (sandbox)
  • Una chiave di correlazione condivisa fra i due sistemi, definita prima di iniziare

Scegliere il pattern

PatternCome funzionaQuando usarloLatenza tipica
Event-driven via webhookBlu Pantheon notifica il tuo sistema a ogni evento rilevanteIl tuo sistema può esporre un endpoint HTTPS pubblicoDa 1 a 5 secondi
Strumento richiamabile dal modelloL'assistente interroga il tuo sistema durante la conversazioneServe un dato aggiornato in tempo reale (stato ordine, saldo punti)Da 200 a 2000 ms
Polling delle APIIl tuo sistema interroga periodicamente Blu PantheonIl tuo sistema non può ricevere chiamate in ingressoPari all'intervallo di polling
Batch su fileScambio di file CSV o JSON su SFTP a orari prestabilitiVolumi elevati, sistemi legacy, allineamenti notturniDa 1 a 24 ore
MiddlewareUn livello intermedio (integration platform) media fra i due sistemiTrasformazioni complesse, più sistemi coinvoltiVariabile

Regola pratica

Usa i webhook per notificare, gli strumenti richiamabili per leggere durante la conversazione, il batch per l'allineamento massivo. La combinazione dei tre copre praticamente tutti gli scenari reali.

Webhook contro polling

CriterioWebhookPolling
LatenzaImmediataPari all'intervallo
Consumo di quota APINullo in ingressoElevato, anche a vuoto
Complessità di implementazioneEndpoint pubblico e verifica della firmaSolo un client HTTP
AffidabilitàRitentativi automatici con attesa crescenteDipende dal tuo scheduler
Requisito di reteEndpoint raggiungibile da InternetNessuno
Rischio di perdita eventiBasso, con coda di ritentativiAlto se lo scheduler si ferma

Se scegli il polling

Usa la paginazione a cursore e il parametro updatedSince, non scaricare l'intero elenco a ogni giro. Rispetta i limiti di frequenza e gestisci l'header Retry-After.

Mappatura dei campi cliente

Mappatura di riferimento fra l'anagrafica di Blu Pantheon e i sistemi più diffusi.

Blu PantheonSalesforceHubSpotDynamics 365SAPNote
contact.idContact.Idcontact.hs_object_idcontact.contactidBusinessPartnerIdentificativo interno, non usarlo come chiave condivisa
contact.externalIdContact.External_Id__ccontact.external_idcontact.new_externalidBusinessPartnerChiave di correlazione, campo personalizzato dedicato
contact.firstNameContact.FirstNamecontact.firstnamecontact.firstnameFirstName—
contact.lastNameContact.LastNamecontact.lastnamecontact.lastnameLastName—
contact.emailContact.Emailcontact.emailcontact.emailaddress1EmailAddressNormalizzare in minuscolo
contact.phoneContact.MobilePhonecontact.phonecontact.mobilephonePhoneNumberFormato E.164, es. +393401234567
contact.companyAccount.Namecompany.nameaccount.nameBusinessPartnerNameSu Salesforce serve la relazione con Account
contact.vatNumberAccount.VAT_Number__ccompany.vat_numberaccount.new_partitaivaTaxNumber1Con prefisso IT
contact.taxCodeAccount.Codice_Fiscale__ccompany.codice_fiscaleaccount.new_codicefiscaleTaxNumber2Specifico italiano, quasi sempre campo personalizzato
contact.sourceContact.LeadSourcecontact.hs_analytics_sourcecontact.leadsourcecode—Valorizzato a blupantheon
contact.consent.marketingContact.HasOptedOutOfEmailcontact.hs_email_optoutcontact.donotemail—Attenzione: logica invertita
contact.tagsContact.Topicscontact.hs_content_membership_notesCampo personalizzato—Elenco di etichette
contact.lastInteractionAtContact.LastActivityDatecontact.notes_last_updatedcontact.lastonholdtime—Sola scrittura da Blu Pantheon

Il consenso ha logica invertita

In Blu Pantheon consent.marketing = true significa consenso concesso. In Salesforce HasOptedOutOfEmail = true significa rinuncia. Una mappatura diretta senza inversione produce invii a persone che si sono opposte: è una violazione, non un semplice difetto. Verifica esplicitamente questa trasformazione in fase di collaudo.

Chiave di correlazione e duplicati

Definisci una sola chiave di correlazione

Deve essere stabile (non cambia nel tempo), univoca e presente su entrambi i lati. In ordine di preferenza: identificativo del CRM salvato in contact.externalId; in alternativa Codice Fiscale o Partita IVA per i contesti B2B italiani. L'email è la scelta peggiore: cambia, è condivisa in famiglia e in azienda, e viene scritta in modi diversi.

Normalizza i valori prima del confronto

Email in minuscolo, senza spazi. Telefono in formato E.164. Partita IVA senza spazi e con prefisso del Paese. Codice Fiscale in maiuscolo.

Definisci la strategia di deduplica

Confronto esatto sulla chiave primaria; in assenza, confronto su una chiave secondaria (email normalizzata più cognome). Non usare confronti approssimati per fondere automaticamente: generano fusioni errate difficili da annullare.

Stabilisci che cosa succede in caso di conflitto

Le opzioni sono: creare comunque un nuovo record e segnalarlo; aggiornare il record esistente; mettere in coda per revisione manuale. Per i dati anagrafici la revisione manuale è la scelta più prudente.

Attiva la deduplica in Console

ConsoleConfigurazioneIntegrazioniCRMCorrispondenza contatti
ScenarioComportamento consigliato
Nuovo contatto senza corrispondenzaCrea il record nel CRM e salva l'identificativo restituito in externalId
Corrispondenza univoca sulla chiave primariaAggiorna solo i campi vuoti nel CRM, non sovrascrivere quelli valorizzati
Corrispondenze multipleNon fondere: segnala per revisione manuale
Corrispondenza solo sull'emailAggiorna con cautela, mai fondere automaticamente
Contatto cancellato nel CRMInterrompi la sincronizzazione, non ricrearlo

Sincronizzazione bidirezionale e conflitti

ConsoleConfigurazioneIntegrazioniCRMDirezione della sincronizzazione
StrategiaDescrizioneQuando usarla
Il CRM è la fonte di veritàBlu Pantheon scrive solo i campi che il CRM non gestisceScelta consigliata nella maggior parte dei casi
Blu Pantheon è la fonte di veritàIl CRM riceve e non contraddiceQuando il primo contatto avviene sempre dal canale conversazionale
Ultima scrittura vincePrevale la modifica con timestamp più recenteSolo con orologi sincronizzati e campi non critici
Per campoOgni campo ha una propria fonte di veritàLa più corretta, la più laboriosa da configurare

Esempio di assegnazione per campo:

CampoFonte di veritàMotivo
Nome e cognomeCRMVerificati dal commerciale
Email e telefonoCRMVerificati in fase di contratto
ConsensiBlu PantheonRaccolti nel widget con prova e versione dell'informativa
Ultima interazioneBlu PantheonSolo la piattaforma conosce le conversazioni
Segmento commercialeCRMDeterminato dai processi di vendita
Etichette conversazionaliBlu PantheonDerivate dall'analisi delle sessioni

Evita i cicli di aggiornamento

Se entrambi i sistemi scrivono e notificano, una modifica può rimbalzare all'infinito. Marca sempre gli aggiornamenti con l'origine (source) e ignora gli eventi originati da te stesso. È il difetto più comune nelle integrazioni bidirezionali.

Eventi disponibili

ConsoleConfigurazioneWebhookNuovo endpoint
EventoQuando scattaUso tipico nel CRM
contact.createdNuovo contatto identificatoCreazione lead
contact.updatedModifica di dati anagraficiAggiornamento anagrafica
contact.optout.updatedModifica dei consensiAggiornamento preferenze di contatto
session.startedInizio di una conversazioneRegistrazione attività
session.endedChiusura della conversazioneAttività con riepilogo e sentiment
session.handover.requestedRichiesta di operatore umanoCreazione caso o ticket
lead.qualifiedIl flusso ha qualificato un leadCreazione opportunità
booking.confirmedPrenotazione confermataCreazione appuntamento
booking.cancelledDisdettaAnnullamento appuntamento
order.status.requestedL'utente chiede lo stato di un ordineInterrogazione ERP

Vedi il riferimento webhook per i payload completi.

Esempio end-to-end

Scenario: un visitatore chiede informazioni sul widget, viene qualificato come lead, il CRM crea l'opportunità e l'assistente conferma un appuntamento leggendo le disponibilità dell'ERP.

Il visitatore avvia la conversazione

Il widget apre una sessione. Blu Pantheon emette session.started con l'identificativo di sessione e l'origine (pagina, campagna, dispositivo).

Il flusso raccoglie i dati di qualificazione

Nome, azienda, email aziendale, esigenza, tempistica. Il consenso privacy è già stato raccolto all'apertura del widget.

Blu Pantheon notifica il lead qualificato

Payload di lead.qualified
{
  "event": "lead.qualified",
  "occurredAt": "2026-09-04T10:12:44Z",
  "tenant": "acme-srl",
  "data": {
    "sessionId": "ses_01JQ8M4Z5T",
    "contact": {
      "firstName": "Mario",
      "lastName": "Rossi",
      "email": "mario.rossi@acme.it",
      "phone": "+393401234567",
      "company": "ACME S.r.l.",
      "vatNumber": "IT01234567890"
    },
    "qualification": {
      "need": "Assistenza clienti automatizzata",
      "timeframe": "entro 3 mesi",
      "score": 78
    },
    "consent": { "marketing": true, "version": "2026-09" },
    "source": { "channel": "widget", "page": "https://www.acme.it/prezzi", "campaign": "ricerca-brand" }
  }
}

Il tuo middleware verifica la firma e deduplica

Verifica l'header di firma HMAC, poi cerca il contatto per email normalizzata. Se esiste, aggiorna; altrimenti crea il record e l'opportunità.

Verifica della ricezione dal tuo endpoint
curl -X POST "https://integrazioni.acme.it/blupantheon/eventi" \
  -H "Content-Type: application/json" \
  -H "X-BP-Signature: sha256=FIRMA_CALCOLATA" \
  -H "X-BP-Delivery: dlv_01JQ8M4Z5T7C" \
  -d @evento.json

Il middleware restituisce l'identificativo al contatto

Salvataggio della chiave di correlazione
curl -X PATCH "https://api.blupantheon.com/console/v1/contacts/cnt_01JQ8M4Z5T" \
  -H "Authorization: Bearer $BP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"externalId": "0035g00000ABCDEfgh", "source": "salesforce"}'

Da questo momento i due sistemi sono correlati in modo stabile.

L'assistente propone un appuntamento

Il modello richiama lo strumento disponibilita_consulenza, che interroga l'ERP e restituisce gli slot liberi. L'utente sceglie, il flusso conferma.

Blu Pantheon notifica la conferma

L'evento booking.confirmed alimenta l'appuntamento nel CRM e la conferma via email o WhatsApp parte automaticamente.

Integrazione con sistemi legacy

Per S/4HANA e Business One il percorso consigliato è l'esposizione di servizi OData tramite SAP Gateway, mediati da un livello di integrazione.

  • Lettura (stato ordine, saldo, anagrafica): strumento richiamabile dal modello che chiama il tuo middleware, che a sua volta interroga OData. Non esporre mai SAP direttamente su Internet.
  • Scrittura (creazione lead, attività): coda di messaggi alimentata dai webhook, consumata dal middleware con ritentativi.
  • Allineamento massivo: estrazione notturna in CSV su SFTP.
  • Prestazioni: prevedi una cache di 5 o 10 minuti sui dati poco volatili, altrimenti la latenza percepita in conversazione diventa inaccettabile.

Verifica e messa in produzione

Collauda in ambiente di prova

Usa la sandbox del CRM e un progetto di prova su Blu Pantheon. Non collaudare mai su dati reali.

Verifica i casi limite

Contatto senza email, nomi con apostrofi e accenti, numeri di telefono esteri, Partita IVA estera, contatto già esistente, contatto cancellato, campi obbligatori mancanti nel CRM.

Prova la resilienza

Simula il tuo endpoint non raggiungibile e verifica che i ritentativi funzionino e che nessun evento venga perso. Vedi Webhook non ricevuti.

Attiva il monitoraggio

Configura un alert sugli errori di consegna e verifica settimanalmente il registro delle sincronizzazioni.

Vai in produzione per gradi

Attiva prima un solo evento, verifica per qualche giorno, poi estendi agli altri.

Ricette pronte

Molte integrazioni sono già disponibili come modelli configurabili: vedi Ricette di automazione.

On this page