Cosa fai, per ogni nuovo cliente
1. Carica lo snapshot «Mattone V2»
- Sub-account da creare: Account Snapshots → trova «Mattone V2» → pulsante Create New Account (+) → compila i dati del sub-account → Add Sub-Account. Serve il ruolo Agency Admin.
- Sub-account già esistente e vuoto: Sub-Accounts → sul sub-account del cliente Actions → Load Snapshot → scegli «Mattone V2» → Select All → conferma scrivendo
confirm.
2. Verifica le pipeline
- CRM [Nome Agenzia], con 12 stadi: 🔵 Nuovo Lead · 🟢 Lead Qualificato / Analisi in corso · 🟡 Call Pitch Fissata · 🟠 Sopralluogo Effettuato / Trattativa Attiva · 🟤 Follow-Up Manuale · 🔴 Invio Form Dati Contratto · 🔴 Contratto Inviato - In Attesa di Firma · ⚪️ Lead Freddo / Futuro · ⚪️ Downsell Affitti Transitori · ⚫️ Lead Non Raggiunto · ⚫️ Lead KO · ⚫️ Lead Non Qualificato / KO
- Proprietari [Nome Agenzia], con 3 stadi: 🟣 Contratto Firmato - Onboarding Avviato · 🟣 Onboarding Completato · 🟣 Proprietari Attivi
3. Crea il form GHL per la landing
Landing - Valutazione ImmobileCampi (in questo ordine):- Nome e cognome — required, single line
- Telefono — required, phone field
- Email — required, email field
- Indirizzo immobile — required, single line
- Note aggiuntive — optional, multi-line
- Testo: “Acconsento al trattamento dati come da privacy policy”
- Link a privacy policy del cliente (se ha) o placeholder generico
- Contact → aggiungi alla pipeline di acquisizione del cliente (quella nata da CRM [Nome Agenzia]) → stadio 🔵 Nuovo Lead
- In Automation → Workflows controlla quale workflow parte sul nuovo lead e che il suo trigger comprenda questo form
- Redirect URL:
https://nomeagenzia.vercel.app/grazie(metterlo dopo aver deployato la landing)
4. Prendi il codice embed del form
<iframe src="..." ...></iframe> completo. È quello che va nella config della landing Vercel al passo 7.Il codice è tipo:5. Prendi il PIT (Private Integration Token)
- Sub-account del cliente → Settings (in basso a sinistra)
- Private Integrations
- + Create New Integration
- Nome:
Mattone - Scopes: seleziona almeno
contacts.readonlyopportunities.readonlylocations.readonly
- Click Create
- Copia il token che appare UNA volta sola (non si può recuperare dopo)
6. Collega il PIT alla piattaforma Mattone
7. Prepara la landing su Vercel
- Su GitHub: template repo
mattone-landing-template→ Use this template → nuovo reponomeagenzia - Modifica
lib/config.tssul web GitHub:nomeAgenzia,città,nomeAgentecoloreAccent+coloreAccentHover(hex del brand cliente)- Numeri stats reali (
ourImmobili,anniEsperienza,ratingMedio) - Testimonianze reali (min 3)
- Incolla il codice iframe form GHL del passo 4 in
ghlFormEmbedHtml - Incolla il codice iframe booking GHL/Calendly in
bookingEmbedHtml(per la thank you page — vedi §“Booking embed sulla TYP” sotto) - Contatti telefono/email
- https://vercel.com/new → import repo → Deploy
- Live su
nomeagenzia.vercel.appin ~90 sec
8. ⚠️ Imposta il Redirect URL del form GHL sulla TYP
/grazie brandata (con upsell booking, prova sociale, contatti).Torna al form GHL (passo 3) → Actions on submit → Redirect URL (o After Submit URL)Imposta esattamente:nomeagenzia con lo slug reale del progetto Vercel.Salva il form GHL (GHL a volte non salva al primo click — verifica sempre che il valore rimanga dopo il salvataggio).Da ora chi invia il form sulla landing atterra sulla nostra thank you page brandata /grazie (hero grazie, 3 step “cosa succede ora”, booking embed per prenotare subito, prova sociale, contatti veloci).9. Test end-to-end
- Apri
https://nomeagenzia.vercel.appin incognito - Compila il form con dati di test (usa email tua, telefono tuo)
- Submit → devi essere reindirizzato a
/grazie - Verifica nel sub-account del cliente → pipeline di acquisizione del cliente → deve esserci un nuovo contatto in 🔵 Nuovo Lead
- Verifica nella piattaforma Mattone del cliente → il lead deve apparire nella sezione Marketing
- Cancella il contatto di test da GHL
Booking embed sulla TYP (thank you page)
La landing template ha una thank you page brandata su/grazie che (oltre a ringraziare) può ospitare un calendario booking per far prenotare la call SUBITO al lead — senza aspettare il richiamo del team. Doppia opportunità di conversione: se il lead è caldo, si prenota da solo.
Come funziona
- Crei il calendario GHL del sub-account del cliente (o Calendly cliente): tipo “Consulenza gratuita 15 min”
- Prende il codice iframe embed del calendario (in GHL: Calendars → apri calendario → tab Integrate)
- Lo incolla nella config del template landing (
lib/config.ts→ campobookingEmbedHtml) - Deploy Vercel → la sezione ”💡 Vuoi saltare la fila?” sulla TYP mostra il calendario inline
Se il campo è vuoto
Il template mostra un placeholder graficato con avviso “⚠️ QUI VA MESSO IL BOOKING EMBED” + le istruzioni per chi la configura. È sicuro deployare la landing anche senza booking configurato — non rompe nulla, si vede solo il fallback fino a quando non si incolla l’iframe.Perché è importante
Il flusso è: ad → landing → form → TYP con booking. Nel 20-30% dei casi il lead prenota subito la call su TYP, saltando la queue di richiamo del team. Meno friction = più conversioni.Il contratto reale: sono gli stadi, non i nomi
Questa sezione conta più di tutte le altre: se non è chiara, prima o poi qualcuno rinomina la cosa sbagliata e Marketing smette di leggere i lead senza che compaia nessun errore. La piattaforma Mattone (src/lib/ghl/pipelines.ts, funzioni normalizeStageName e classifyStage, repo mattone-platform) non guarda l’ID dello snapshot, non guarda l’ID della location, e non guarda il nome della pipeline. Guarda solo i nomi degli stadi dentro ogni pipeline, li normalizza (via emoji, maiuscole e punteggiatura) e cerca una parola chiave. Se in una pipeline trova almeno 3 stadi che ricalcano la scala di acquisizione del Mattone 1, la riconosce come pipeline di acquisizione; se trova stadi post-firma (“contratto firmato”, “onboarding”, “proprietari attivi”) la riconosce come pipeline proprietari. Verificato sullo snapshot «Mattone V2»: 12 stadi di acquisizione su 12 e 3 stadi proprietari su 3 riconosciuti.
Da qui le conseguenze pratiche:
- Il nome della pipeline è libero. «CRM [Nome Agenzia]» e «Proprietari [Nome Agenzia]» sono solo i nomi di partenza: lo studente li può rinominare come vuole (es. col nome della sua agenzia), e la piattaforma continua a riconoscerli.
- Prima del collegamento, gli stadi devono avere la parola chiave (tabella qui sotto): è così che la piattaforma li riconosce la prima volta. Il resto del testo dello stadio (emoji, maiuscole, aggettivi) è libero.
- Dopo il collegamento, gli stadi si possono rinominare liberamente. Quando lo studente collega GoHighLevel (o sceglie la pipeline di acquisizione), la piattaforma memorizza ogni stadio per il suo ID interno: da quel momento «Nuovo Lead» può diventare «Da chiamare» e Marketing, lista chiamate e chiusure continuano a contarlo.
- Se si aggiunge uno stadio nuovo a una pipeline già collegata, la piattaforma lo riconosce dalla parola chiave; per memorizzarlo per ID si va in Connessioni → GoHighLevel e si preme «Aggiorna mappa stadi». Stesso bottone se si rifà la struttura della pipeline.
- L’ID cambia a ogni sub-account creato dallo snapshot, ed è normale: la piattaforma memorizza gli ID di quel sub-account al collegamento, non quelli dello snapshot.
Come si mantiene lo snapshot «Mattone V2»
«Mattone V2» esiste già: lo mantiene chi lavora in GHL per Mattone a partire dal sub-account Sandbox, dedicato solo a questo (non ci lavora nessuno, non ha contatti veri). Non si crea un nuovo snapshot: si aggiorna quello esistente con Refresh, che rilegge le modifiche fatte nel sub-account Sandbox. Cosa dice GHL sugli snapshot, in breve:- Uno snapshot copia gli asset così come sono. Non si rinominano i singoli asset al momento del load: si rinominano prima, nel sub-account di origine (qui, Sandbox).
- Caricato su un sub-account che ha già degli asset, GHL mostra i conflitti e per ciascuno si sceglie Override (sostituisce quello esistente) o Skip (tiene quello esistente). Gli asset senza conflitto vengono aggiunti.
- Refresh rilegge le modifiche dal sub-account di origine (Sandbox) nello snapshot; Push Update le manda ai sub-account che hanno già caricato lo snapshot, scegliendo quali sub-account e quali asset.
Chi la fa
Chi lavora in GHL per Mattone, se ha il permesso di agenzia giusto. In GHL i permessi sugli snapshot sono granulari e si impostano nella vista agenzia: Settings → Team → utente → Edit → Snapshot Scopes. Gli scope sono View, Create, Edit, Share/Import, Push, Refresh e Delete.Regola di manutenzione
Quando serve cambiare qualcosa nel CRM che diamo agli studenti (uno stadio, un workflow, un campo), sempre in quest’ordine:- Prima il sub-account Sandbox. Si fa la modifica dentro Sandbox — mai direttamente sullo snapshot, mai su un sub-account di uno studente.
- Prima del Refresh, l’audit. Chi lavora in GHL fa passare Sandbox dallo script di audit (vedi Troubleshooting → Verificare un nuovo Refresh dello snapshot): si procede solo con 0 residui dei nomi di clienti e modelli usati in passato per costruire il CRM (la lista esatta è nello script, non si scrive qui). Lo script legge solo i nomi degli asset via API: il contenuto di workflow, email/SMS e funnel page si controlla a mano, aprendo ognuno.
- Poi lo snapshot. Account Snapshots → «Mattone V2» → Refresh e si scelgono gli asset cambiati.
- Il push ai sub-account degli studenti è una scelta a parte. Push Update manda la modifica agli studenti che hanno già caricato lo snapshot, ma tocca CRM su cui lavorano ogni giorno: si fa solo su decisione esplicita del titolare. Dopo il push, apri la cronologia (View History nel menu a tre punti dello snapshot) e controlla, sub-account per sub-account, quali asset sono arrivati: GHL segnala che uno stato “Completed” può comparire anche se non tutti gli asset sono stati caricati.
Processo per un nuovo studente (in breve)
Il processo completo per attivare marketing a un cliente è nei 9 passi di “Cosa fai, per ogni nuovo cliente” più sopra. Il nucleo — dal sub-account GHL al collegamento in piattaforma — è questo:1. Crea il sub-account dello studente dallo snapshot «Mattone V2»
2. Crea il Private Integration Token dentro il sub-account dello studente
3. Collega in piattaforma
4. Verifica
5. Solo a questo punto lo studente può rinominare
Studenti già connessi con il vecchio snapshot (Cosmica CRM)
Gli studenti collegati prima dell’arrivo di «Mattone V2» hanno ricevuto il vecchio snapshot con le pipeline e i workflow di Cosmica così come sono. Oggi hanno due pipeline di acquisizione: quella ereditata Crm Cosmica Italia Affitti Brevi e la propria. Non si ricarica lo snapshot nuovo sopra: aggiungerebbe una terza pipeline con gli stessi stadi, e GHL non documenta come risolve i conflitti fra asset con nomi diversi.1. Scegli la pipeline di acquisizione in Connessioni
2. Sistema la pipeline ereditata
- Se ha 0 opportunità: cancellala.
- Se è quella che lo studente usa davvero: rinominala col nome della sua attività (solo il nome della pipeline, non gli stadi).
3. Rinomina o togli i workflow con «Cosmica»
4. Verifica
- In Marketing, sopra i numeri, la riga Numeri calcolati sulla pipeline di acquisizione … nomina la pipeline dello studente
- Non compare l’avviso rinomina la pipeline
- Il numero di lead in Marketing corrisponde a quello della pipeline in GHL
Errori comuni + fix
Tempo stimato
- Passo 1-2 (snapshot): 3 min
- Passo 3 (form): 10 min
- Passo 4 (embed): 1 min
- Passo 5-6 (PIT): 3 min
- Passo 7 (landing Vercel): 5 min
- Passo 8-9 (redirect + test): 3 min
Fonti ufficiali GoHighLevel
- Snapshots — panoramica
- Creare uno snapshot — cosa è incluso ed escluso; si nomina lo snapshot, non i singoli asset
- Creare un sub-account da uno snapshot — solo Agency Admin; funnel e siti in bozza
- Caricare uno snapshot su un sub-account esistente — conflitti, Override e Skip
- Refresh e push di uno snapshot
- Cronologia dei push
- Permessi granulari sugli snapshot
Riferimenti
- Procedura marketing completa — flusso 7 fasi
- Template Ads Mattone — script da lanciare dopo che la landing è live
- PIT + Location GHL — approfondimento sul token
- Collegamento — collegare il PIT e scegliere la pipeline di acquisizione
- Template landing: repo
mattone-landing-template(URL esatto nel repo interno)