ישנן מערכות CRM רבות שיודעות לקבל את הנתונים מהטפסים האלה אבל למי שאין מערכת CRM משלו עלול להיווצר חוסר סדר והנורא מכל, איבוד של לידים טובים..
תוכלו לקרוא על זה עוד במדריך הבא: איך לשמור לידים מטפסי אלמנטור במסמך Google Sheets (באמצעות Zapier)
מעבר לשמירת הלידים בטבלת אקסל מסודרת, יתרון נוסף של החיבור הידני הוא האפשרות לחבר את המסמך לידים החדש שלנו לZapier בתוכנית החינמית ולא דרך Webhooks.
מה צריך:
- אתר עם טופס אלמנטור
- חשבון גוגל (Gmail)
- גישה לGoogle Sheets
- 15דק' וסבלנות
אז איך שומרים לידים מטפסי אלמנטור למסמך Google Sheets?
1. פתחו מסמך חדש בGoogle Sheets
כנסו לחשבון גוגל שלכם, לGoogle Sheets ופתחו מסמך גוגל שיטס חדש.
2. תנו שם למסמך החדש שלכם כך שתדעו לזהות אותו
3. לחצו על סרגל הכלים, "תוספים" ואז על "Apps Script"
במידה וזה מעביר אתכם לעמוד שבו רשומה שגיאה או שאין לכם גישה, נסו לעשות זאת מחשבון גוגל אחר.
4. בחירת שם לפרויקט
לחצו על שם הפרויקט והכניסו את שם הפרויקט ככה שתדעו לזהות את זה בעתיד (לדוגמה: "משיכת לידים מהאתר")
אחרי שרשמתם את השם, לחצו על "שינוי השם"
5. תמחקו את כל מה שרשום בתיבת הטקסט והכניסו את הקוד הבא:
/* Google app-script to utilise Elementor Pro Forms webhook
* From : https://github.com/pojome/elementor/issues/5894
*/
var emailNotification = false; /* Change to true to enable email notifications */
var emailAddress = "youremail@email.com"; /* EDIT this to your email */
// DO NOT EDIT THESE NEXT PARAMS
var isNewSheet = false;
var receivedData = [];
/**
* this is a function that fires when the webapp receives a GET request
* Not used but required.
*/
function doGet( e ) {
return HtmlService.createHtmlOutput( "Yep this is the webhook URL, request received" );
}
// Webhook Receiver - triggered with form webhook to published App URL.
function doPost( e ) {
var params = JSON.stringify(e.parameter);
params = JSON.parse(params);
insertToSheet(params);
// HTTP Response
return HtmlService.createHtmlOutput( "post request received" );
}
// Flattens a nested object for easier use with a spreadsheet
function flattenObject( ob ) {
var toReturn = {};
for ( var i in ob ) {
if ( ! ob.hasOwnProperty( i ) ) continue;
if ( ( typeof ob[ i ] ) == 'object' ) {
var flatObject = flattenObject( ob[ i ] );
for ( var x in flatObject ) {
if ( ! flatObject.hasOwnProperty( x ) ) continue;
toReturn[ i + '.' + x ] = flatObject[ x ];
}
} else {
toReturn[ i ] = ob[ i ];
}
}
return toReturn;
}
// normalize headers
function getHeaders( formSheet, keys ) {
var headers = [];
// retrieve existing headers
if ( ! isNewSheet ) {
headers = formSheet.getRange( 1, 1, 1, formSheet.getLastColumn() ).getValues()[0];
}
// add any additional headers
var newHeaders = [];
newHeaders = keys.filter( function( k ) {
return headers.indexOf( k ) > -1 ? false : k;
} );
newHeaders.forEach( function( h ) {
headers.push( h );
} );
return headers;
}
// normalize values
function getValues( headers, flat ) {
var values = [];
// push values based on headers
headers.forEach( function( h ){
values.push( flat[ h ] );
});
return values;
}
// Insert headers
function setHeaders( sheet, values ) {
var headerRow = sheet.getRange( 1, 1, 1, values.length )
headerRow.setValues( [ values ] );
headerRow.setFontWeight( "bold" ).setHorizontalAlignment( "center" );
}
// Insert Data into Sheet
function setValues( sheet, values ) {
var lastRow = Math.max( sheet.getLastRow(),1 );
sheet.insertRowAfter( lastRow );
sheet.getRange( lastRow + 1, 1, 1, values.length ).setValues( [ values ] ).setFontWeight( "normal" ).setHorizontalAlignment( "center" );
}
// Find or create sheet for form
function getFormSheet( formName ) {
var formSheet;
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
// create sheet if needed
if ( activeSheet.getSheetByName( formName ) == null ) {
formSheet = activeSheet.insertSheet();
formSheet.setName( formName );
isNewSheet = true;
}
return activeSheet.getSheetByName( formName );
}
// key function where it all happens
function insertToSheet( data ){
var flat = flattenObject( data );
var keys = Object.keys( flat );
var formName = data["form_name"];
var formSheet = getFormSheet( formName );
var headers = getHeaders( formSheet, keys );
var values = getValues( headers, flat );
setHeaders( formSheet, headers );
setValues( formSheet, values );
if ( emailNotification ) {
sendNotification( data, getSeetURL() );
}
}
function getSeetURL() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
return spreadsheet.getUrl();
}
function sendNotification( data, url ) {
var subject = "A new Elementor Pro Forms submission has been inserted to your sheet";
var message = "A new submission has been received via " + data['form_name'] + " form and inserted into your Google sheet at: " + url;
MailApp.sendEmail( emailAddress, subject, message, {
name: 'Automatic Emailer Script'
} );
}
6. לאחר מכן, לחצו על "לפריסה"
7. בחרו ב-"פריסה חדשה"
8. לחצו על גלגל השיניים ובחרו ב- "אפליקציית אינטרנט"
9. בחרו שם לפריסה
גם כאן, שווה לתת שם הגיוני שבעתיד יהיה ניתן לזהות את השימוש (לדוגמה: "חיבור גוגל שיטס לטפסי אלמנטור")
10. לחצו על "למי יש גישה"
11. בחרו באפשרות "כולם"
12. אחרי שסיימתם, לחצו "לפריסה"
לבעלי חשבון גוגל עסקי
13. הרשאת גישה
אם אתם בעלי חשבון גוגל עסקי, כנראה תצטרכו לתת גישה, לחצו על "הרשאת גישה"
14. בחרו את החשבון שבו השתמשתם כדי לתת גישה
15. וכמובן, לחצו על אפשר או "allow"
16. העתקת הקוד לאתר
אחרי מספר שניות יופיעו לכם שני שורות קוד שאת התחתונה יש להעתיק כי נצטרך אותו עוד רגע
17. עכשיו, כנסו לאתר שלכם.
18. עברו לטופס שאותו אתם רוצים לחבר
כמובן שאפשר לחבר כמה טפסים למסמך Google sheets אחד.
כל טופס יוצג בגיליון נפרד ואין בעיה של בלאגן.
19. לחצו על "פעולות אחרי שליחה"
והוסיפו "Webhook"
20. לכו ללשונית Webhuk החדשה
אחרי שהוספתם, תופיע לשונית חדשה בשם "Webhook"
21. הדביקו את שורת הקוד שהעתקנו בסעיף 16
22. לחצו על "עדכן"
23. נקו את זיכרון המטמון באתר (במידה ויש)
24. עכשיו נבדוק שהחיבור שלנו אכן עובד
מלאו את הטופס אותו חיברתי ושלחו אותו!
25. עברו חזרה למסמך Google Sheets שחיברנו
אם זה עבד, תוכלו לראות למטה גיליון חדש בשם של הטופס שחיברתם!
תוכלו לראות שיש לנו עכשיו עמודה לכל שדה של הטופס ומעכשיו כל ליד שיכנס מהטופס הזה ירשם במסמך שלנו.
זהו, סיימנו!
26. חיבור טפסים נוספים
אין הגבלה על כמות הטפסים מהאתר שאפשר לחבר.
בשביל לחבר טפסים נוספים, אתם יכולים להדביק את שורת הקוד שייצרנו בסעיף 16 ולהדביק אותה גם בטפסים אחרים.
כל טופס יופיע בגיליון נפרד ככה שזה יהיה לכם מסודר.