Articoli:
- Esportazione dei dati su Google Sheets
- Collegare il FB Pixel a un progetto su Kwiga
- Invio di un webhook per trasferire i dati a un altro servizio
- Essenziali dell'integrazione e dell'uso di Zoom
- Generazione di link di pagamento con dati precompilati
- Gestione dei clic sui pulsanti nel widget e nozioni essenziali sull'uso
- Invio di un webhook a KeyCRM con separazione della domanda e del pagamento
Ti mostreremo come configurare l'esportazione automatica dei dati da Kwiga su Google Sheets.
Puoi configurare l'esportazione dei dati per vari eventi utilizzando l'automazione (puoi specificare come evento contatto aggiunto, tag aggiunto, acquisto riuscito o non riuscito, ecc.; l'elenco completo degli eventi è disponibile nell'articolo).
Inoltre, puoi utilizzare l'opzione per inviare un webhook quando usi i widget; il flusso di lavoro rimane lo stesso.
Passaggi principali:
-
Crea un file e aggiungi lo script al suo interno
-
Crea una web app e ottieni il link per inviare il webhook
-
Configura l'invio del webhook utilizzando l'automazione in Kwiga o l'invio del modulo nel widget.
L'intero processo è mostrato nel video e non richiede conoscenze di programmazione. Segui semplicemente i passaggi indicati e, se qualcosa non funziona, contatta il supporto.
Passaggio 1: Crea un file in cui verranno inviati i dati da Kwiga
Apri Google Sheets e crea un nuovo file, quindi apri l'editor di script.
Si aprirà una nuova finestra e dovrai incollare lo script nel suo editor. Puoi scaricare lo script tramite il link (oppure copiare il testo in fondo all'articolo). Devi eliminare tutto il testo già presente nell'editor.
Risultato finale:
Passaggio 2: Crea una web app e ottieni il link per inviare il webhook
Nello stesso editor di script, trova il pulsante Deploy e seleziona New deployment
Seleziona Web app come tipo e, nel menu a discesa Who has access, impostalo su Everyone, quindi fai clic su Deploy.
Di conseguenza, otterrai il Web App URL, che dovrai poi aggiungere in Kwiga.
Passaggio 3: Configura l'invio dei dati in Kwiga
Fai clic sul pulsante All solutions nel menu in alto e seleziona Automation. Crea un nuovo trigger e scegli l'evento che avvierà l'automazione. Può trattarsi di contatto aggiunto, tag aggiunto, pagamento o qualsiasi altro evento.
Dopo di che, scorri verso il basso e seleziona Webhook - Send data nelle azioni. Nel campo del link, specifica il Web App URL, il tipo di richiesta POST e seleziona i campi che devono essere esportati nella tabella.
Salvalo e tutti i passaggi saranno completati.
In alternativa, puoi configurare l'invio del webhook dal widget; questa opzione è disponibile quando utilizzi l'elemento Form. Seleziona l'opzione Additionally send to a third-party service, quindi nel modulo che si apre aggiungi il link, il tipo di richiesta POST e seleziona i parametri da inviare. In questo elenco saranno disponibili solo i parametri presenti nel modulo (questo widget).
Come funziona lo script di Google Sheets per i webhook
- Al primo accesso del webhook, le intestazioni della tabella vengono create automaticamente in base alle chiavi dei dati in entrata
- Se la tabella ha già intestazioni e si desidera iniziare a ricevere nuovi campi dati, aggiungere manualmente queste intestazioni alla tabella
- Le intestazioni possono essere scambiate nella tabella - lo script determinerà automaticamente le loro posizioni
- Per impostazione predefinita, lo script aggiunge nuovi record ogni volta che riceve un webhook
- Se si specificano i campi in keyColumns, lo script aggiornerà i record esistenti o aggiungerà nuovi se non trova corrispondenze
- ⚠️ Importante: Dopo aver modificato lo script, è necessario effettuare un nuovo deployment in Google Apps Script e aggiornare il link al webhook
Selezione del foglio di lavoro:
- Per impostazione predefinita, viene utilizzato il foglio attivo
- Può essere ridefinito tramite i parametri del webhook:
- "sheet_name": "Nome del foglio" - per selezionare il foglio per nome
- "sheet_index": 2 - per selezionare il foglio per numero (a partire da 1)
// ============================================================
// IMPOSTAZIONI SCRIPT
// ============================================================
// Verifica duplicati - specifica i campi per cercare i record esistenti
// Esempi di utilizzo:
// var keyColumns = ["email"]; - verifica per email
// var keyColumns = ["order_id"]; - verifica per ID ordine
// var keyColumns = ["email", "order_id"]; - verifica per più campi
var keyColumns = []; // Verifica duplicati disattivata
// ============================================================
// Funzione per inviare la risposta
function sendResponse(success, message) {
var response = {
"status": success ? "success" : "error",
"message": message
};
return ContentService.createTextOutput(JSON.stringify(response))
.setMimeType(ContentService.MimeType.JSON);
}
// Ottenere la pagina di destinazione per registrare i dati
function getTargetSheet(hook_data) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Verifica se il nome della pagina è specificato
if (hook_data && hook_data.sheet_name) {
try {
var sheet = spreadsheet.getSheetByName(hook_data.sheet_name);
if (sheet) {
return sheet;
}
} catch (error) {
// Pagina non trovata
}
}
// Verifica se il numero di pagina è specificato
if (hook_data && hook_data.sheet_index && !isNaN(hook_data.sheet_index)) {
try {
var sheets = spreadsheet.getSheets();
var index = parseInt(hook_data.sheet_index) - 1; // Converti in indice da 0
if (index >= 0 && index < sheets.length) {
return sheets[index];
}
} catch (error) {
// Indice pagina non valido
}
}
// Per impostazione predefinita, utilizza la pagina attiva
return SpreadsheetApp.getActiveSheet();
}
// Crea intestazioni nella tabella in base ai dati forniti
function populateHeaders(hook_data, sheet) {
if (!hook_data || typeof hook_data !== 'object') {
return false;
}
if (!sheet) {
sheet = getTargetSheet(hook_data);
}
var last_row = Math.max(sheet.getLastRow(), 1);
sheet.insertRowAfter(last_row);
var headers_row = ['timestamp'];
var hook_data_keys = Object.keys(hook_data);
for (var i = 0; i < hook_data_keys.length; i++) {
headers_row.push(hook_data_keys[i]);
}
sheet.appendRow(headers_row);
SpreadsheetApp.flush();
return true;
}
// Elaborazione del webhook in entrata
function doPost(e) {
var hook_load = null;
// Verifica la presenza di dati POST
if (!e || !e.postData || !e.postData.contents) {
return sendResponse(false, "Nessun dato da elaborare");
}
// Analisi dei dati JSON
try {
hook_load = JSON.parse(e.postData.contents);
} catch (error) {
return sendResponse(false, "Errore nell'analisi dei dati JSON");
}
// Validazione dei dati ricevuti
if (!hook_load || typeof hook_load !== 'object' || Object.keys(hook_load).length === 0) {
return sendResponse(false, "Dati ricevuti non corretti o vuoti");
}
try {
// Ottenere la pagina di destinazione
var sheet = getTargetSheet(hook_load);
if (!sheet) {
return sendResponse(false, "Impossibile trovare la pagina specificata");
}
// Creazione di intestazioni se la tabella è vuota
if (sheet.getLastColumn() === 0) {
populateHeaders(hook_load, sheet);
}
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
if (headers.length === 0 || headers[0] === "") {
populateHeaders(hook_load, sheet);
headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
}
// Verifica duplicati
var data = [];
var targetRow = -1;
var numRows = sheet.getLastRow() - 1;
if (keyColumns.length > 0 && numRows > 0) {
data = sheet.getRange(2, 1, numRows, sheet.getLastColumn()).getValues();
for (var r = 0; r < data.length; r++) {
var row = data[r];
var match = true;
for (var k = 0; k < keyColumns.length; k++) {
var key = keyColumns[k];
var idx = headers.indexOf(key);
if (idx === -1 || row[idx] != hook_load[key]) {
match = false;
break;
}
}
if (match) {
targetRow = r + 2; // gestione delle intestazioni
break;
}
}
}
// Preparazione dei dati per la registrazione
var new_sheet_row = new Array(headers.length).fill('');
for (var h = 0; h < headers.length; h++) {
var key = headers[h];
if (key === 'timestamp') {
new_sheet_row[h] = new Date();
} else if (hook_load.hasOwnProperty(key)) {
new_sheet_row[h] = hook_load[key];
}
}
// Salvataggio dei dati nella tabella
if (targetRow > -1) {
sheet.getRange(targetRow, 1, 1, new_sheet_row.length).setValues([new_sheet_row]);
} else {
sheet.appendRow(new_sheet_row);
}
SpreadsheetApp.flush();
return sendResponse(true, "Dati salvati con successo");
} catch (error) {
return sendResponse(false, "Errore durante il salvataggio dei dati: " + error.message);
}
}
Non hai trovato la risposta? Contattare il servizio di supporto tramite chat online or Telegram