Skip to main content
Questa è la procedura tecnica da seguire per ogni nuovo cliente marketing, dopo che ha completato le fasi 1-5 dell’onboarding marketing. Copre il setup GHL + form + PIT + landing.
Dove stanno gli snapshot in GHL: vista agenzia → Account Snapshots (nel menu a sinistra dell’Agency View). Lì trovi lo snapshot da caricare, e lì si aggiorna e si fa il push.
Lo snapshot che diamo agli studenti si chiama «Mattone V2» ed è mantenuto da chi lavora in GHL per Mattone a partire dal sub-account Sandbox, dedicato solo a questo. Contiene la pipeline di acquisizione CRM [Nome Agenzia] (12 stadi) e la pipeline post-firma Proprietari [Nome Agenzia] (3 stadi): lo studente può sostituire “[Nome Agenzia]” con il nome della sua attività. «Mattone V2» non si ricrea mai da zero: si aggiorna solo con Refresh dal sub-account Sandbox. Come si mantiene: più sotto, nella sezione Come si mantiene lo snapshot «Mattone V2».
Il contratto vero non sono gli ID né i nomi delle pipeline: sono gli stadi. La piattaforma Mattone riconosce la pipeline di acquisizione guardando le parole chiave dentro il nome di ogni stadio (l’ID dello snapshot e della location cambia a ogni sub-account creato, e non ha nessuna importanza per la piattaforma). Vedi la sezione Il contratto reale: sono gli stadi, non i nomi più sotto prima di rinominare qualunque cosa.

Cosa fai, per ogni nuovo cliente

1

1. Carica lo snapshot «Mattone V2»

Due strade, a seconda che il sub-account esista già o no.
  • 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.
Contatti, appuntamenti e conversazioni non viaggiano con lo snapshot: nel sub-account del cliente arriva solo la configurazione.
2

2. Verifica le pipeline

Entra nel sub-account del cliente → Opportunities → Pipelines. Devono esserci:
  • 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
“[Nome Agenzia]” è un segnaposto: il nome della pipeline è libero, lo studente lo può sostituire con quello della sua attività (vedi Il contratto reale: sono gli stadi, non i nomi). Quello che deve restare identico sono gli stadi, con le loro parole chiave.Se le pipeline non ci sono, rifai il Load Snapshot (passo 1, seconda strada).
3

3. Crea il form GHL per la landing

Sub-account del cliente → Sites → Forms → + Add FormNome: 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
Checkbox privacy (obbligatoria):
  • Testo: “Acconsento al trattamento dati come da privacy policy”
  • Link a privacy policy del cliente (se ha) o placeholder generico
Submit button: “Richiedi la valutazione →”Actions on submit:
  • 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

4. Prendi il codice embed del form

Nella pagina del form appena creato → tab Integrate → Iframe embedCopia il tag <iframe src="..." ...></iframe> completo. È quello che va nella config della landing Vercel al passo 7.Il codice è tipo:
5

5. Prendi il PIT (Private Integration Token)

Il PIT è un token API del sub-account del cliente che serve alla piattaforma Mattone per leggere i lead.
  • Sub-account del cliente → Settings (in basso a sinistra)
  • Private Integrations
  • + Create New Integration
  • Nome: Mattone
  • Scopes: seleziona almeno
    • contacts.readonly
    • opportunities.readonly
    • locations.readonly
  • Click Create
  • Copia il token che appare UNA volta sola (non si può recuperare dopo)
Vedi anche PIT + Location GHL per il dettaglio scope.
6

6. Collega il PIT alla piattaforma Mattone

Il collegamento si fa dall’account Mattone del cliente, in Connessioni → GoHighLevel, e subito dopo si sceglie la pipeline di acquisizione (deve risultare in uso la pipeline nata da CRM [Nome Agenzia], o la pipeline che il cliente usa davvero). Procedura completa e verifica: Collegamento.
7

7. Prepara la landing su Vercel

Vedi guida dedicata Procedura marketing — Fase 7:Sinteticamente:
  1. Su GitHub: template repo mattone-landing-template → Use this template → nuovo repo nomeagenzia
  2. Modifica lib/config.ts sul web GitHub:
    • nomeAgenzia, città, nomeAgente
    • coloreAccent + 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
  3. https://vercel.com/new → import repo → Deploy
  4. Live su nomeagenzia.vercel.app in ~90 sec
8

8. ⚠️ Imposta il Redirect URL del form GHL sulla TYP

QUESTO PASSO È OBBLIGATORIO — senza, il cliente vede la thank you page nativa di GHL invece della nostra /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:
Sostituisci nomeagenzia con lo slug reale del progetto Vercel.
Ricordati /grazie in fondo — è la thank you page del template. Se metti solo il dominio nudo, l’utente torna sulla stessa landing e sembra che il form non abbia fatto nulla.
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

9. Test end-to-end

  • Apri https://nomeagenzia.vercel.app in 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

  1. Crei il calendario GHL del sub-account del cliente (o Calendly cliente): tipo “Consulenza gratuita 15 min”
  2. Prende il codice iframe embed del calendario (in GHL: Calendars → apri calendario → tab Integrate)
  3. Lo incolla nella config del template landing (lib/config.ts → campo bookingEmbedHtml)
  4. 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.
Esempio di rinomina sbagliata prima del collegamento: «Nuovo Lead» → «New lead» o «Da chiamare». La parola chiave “nuovo lead” sparisce, la piattaforma non riconosce lo stadio, e Marketing e la lista chiamate dello studente mostrano 0 lead, senza nessun errore a video. Per questo si collega prima e si rinomina dopo.

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. Un utente che vede solo i sub-account (utente di sub-account) non ha Account Snapshots e non può fare questa procedura.

Regola di manutenzione

Quando serve cambiare qualcosa nel CRM che diamo agli studenti (uno stadio, un workflow, un campo), sempre in quest’ordine:
  1. Prima il sub-account Sandbox. Si fa la modifica dentro Sandbox — mai direttamente sullo snapshot, mai su un sub-account di uno studente.
  2. 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.
  3. Poi lo snapshot. Account Snapshots → «Mattone V2» → Refresh e si scelgono gli asset cambiati.
  4. 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.
Non si crea mai un nuovo snapshot al posto del Refresh. Un nuovo snapshot ha un ID diverso: chi lo carica su un sub-account nuovo prende una configurazione scollegata dalla cronologia di «Mattone V2», e il Push Update dei sub-account già esistenti resta legato allo snapshot vecchio.

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

1. Crea il sub-account dello studente dallo snapshot «Mattone V2»

Chi: il team (serve Agency Admin). Account Snapshots → «Mattone V2» → Create New Account (+).
2

2. Crea il Private Integration Token dentro il sub-account dello studente

Chi: il team. Nel sub-account appena creato → Settings → Private Integrations → nuovo token con gli scope di lettura (vedi PIT + Location GHL).
3

3. Collega in piattaforma

Chi: il team, con lo studente loggato sul suo account. Connessioni → GoHighLevel → incolla PIT + Location ID.
4

4. Verifica

In Connessioni la pipeline di acquisizione riconosciuta deve essere quella nata da CRM [Nome Agenzia]; in Marketing e nella lista chiamate compaiono i lead.
5

5. Solo a questo punto lo studente può rinominare

Pipeline libere, stadi solo mantenendo la parola chiave (vedi tabella sopra).

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

1. Scegli la pipeline di acquisizione in Connessioni

Sulla piattaforma, dall’account dello studente: Connessioni → GoHighLevel → Pipeline di acquisizione, scelta manuale fra le pipeline che ricalcano gli stadi del Mattone 1, con il numero di opportunità di ciascuna — segna in uso quella con le opportunità vere dello studente.
La scelta manuale è disponibile in piattaforma dal 15/09/2026. Se nessuno la fa, la piattaforma sceglie da sola: scarta la pipeline con “Cosmica” nel nome e preferisce quella con più opportunità. Dopo la scelta, la piattaforma memorizza anche gli stadi di quella pipeline per ID (vedi Il contratto reale).
2

2. Sistema la pipeline ereditata

Nel sub-account dello studente → Opportunities → Pipelines → «Crm Cosmica Italia Affitti Brevi»:
  • 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

3. Rinomina o togli i workflow con «Cosmica»

Automation → Workflows, cerca “Cosmica”. I workflow degli ospiti delle prenotazioni dirette e il kit contratto di Cosmica, se lo studente non li usa, si tolgono (o si mettono in bozza); gli altri si rinominano. Se c’è la pipeline Direct Booking Guests e non ha opportunità, si toglie.
4

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

Form iframe non appare nella landing → il codice embed copiato è tagliato. Verifica di aver preso il <iframe> completo, con src e chiusura </iframe>. Copia direttamente dalla tab Integrate di GHL, non da altre fonti.
PIT test fallisce con 401 in piattaforma → verifica che gli scope siano stati abilitati sul PIT (contacts.readonly è quello minimo). Se hai creato il PIT senza scope, cancellalo e creane uno nuovo — gli scope non si possono aggiungere dopo.
Redirect form non funziona (rimane su GHL) → l’URL nel campo “Redirect URL” deve essere completo con https:// all’inizio. Controlla anche che sia salvato (GHL a volte non fa save al primo click).
Marketing vuoto con il CRM pieno → quasi sempre gli stadi della pipeline sono stati rinominati e la piattaforma non la riconosce più, oppure in Connessioni è in uso un’altra pipeline. Vedi Troubleshooting.

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
Totale: ~25 min per un nuovo cliente end-to-end.

Fonti ufficiali GoHighLevel

Riferimenti