איך לשמור לידים מטפסי אלמנטור ישירות במסמך Google Sheets

מדריכים חדשים
כמעט בכל אתר היום קיימים טפסי לידים, טפסי ניוזלטר, יצירת קשר, הרשמות או טפסי אחרים וכל יום שעובר יותר ויותר טפסי כאלה נוצרים באמצעות טפסי אלמנטור (Elementor Forms).
ישנן מערכות CRM רבות שיודעות לקבל את הנתונים מהטפסים האלה אבל למי שאין מערכת CRM משלו עלול להיווצר חוסר סדר והנורא מכל, איבוד של לידים טובים..

 

בין טפסי אלמנטור לגוגל שיטס (Google Sheets) אין חיבור מובנה ולכן צריך לחבר אותם באמצעות שירות צד שלישי כמו Zapier.
תוכלו לקרוא על זה עוד במדריך הבא: איך לשמור לידים מטפסי אלמנטור במסמך Google Sheets (באמצעות Zapier)

 

מה שכן, שירותים כמו Zapier אינם חינמים וחיבור של טפסי אלמנטור באמצעות Zapier דורש לפחות את החבילת הStarter שעולה 70ש”ח או 20$. (מכיוון שחייב את האפשרות של Webhooks ב- Zapier)
מעבר לשמירת הלידים בטבלת אקסל מסודרת, יתרון נוסף של החיבור הידני הוא האפשרות לחבר את המסמך לידים החדש שלנו לZapier בתוכנית החינמית ולא דרך Webhooks.
(על האפשרויות שאפשר לעשות עם המסמך האקסל נפרט במדריך נוסף)

מה צריך:

  1. אתר עם טופס אלמנטור
  2. חשבון גוגל (Gmail)
  3. גישה לGoogle Sheets
  4. 15דק’ וסבלנות

אז איך שומרים לידים מטפסי אלמנטור למסמך Google Sheets?

1. פתחו מסמך חדש בGoogle Sheets

כנסו לחשבון גוגל שלכם, לGoogle Sheets ופתחו מסמך גוגל שיטס חדש.

2. תנו שם למסמך החדש שלכם כך שתדעו לזהות אותו

תנו שם למסמך החדש שלכם כך שתדעו לזהות אותו

3. לחצו על סרגל הכלים, “תוספים” ואז על “Apps Script”

במידה וזה מעביר אתכם לעמוד שבו רשומה שגיאה או שאין לכם גישה, נסו לעשות זאת מחשבון גוגל אחר.

לחצו על תוספים ואז על 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 = "[email protected]"; /* 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”

וכמובן, לחצו על אפשר או "allow"

16. העתקת הקוד לאתר

אחרי מספר שניות יופיעו לכם שני שורות קוד שאת התחתונה יש להעתיק כי נצטרך אותו עוד רגע

העתקת הקוד לאתר

 

17. עכשיו, כנסו לאתר שלכם.

18. עברו לטופס שאותו אתם רוצים לחבר

כמובן שאפשר לחבר כמה טפסים למסמך Google sheets אחד.
כל טופס יוצג בגיליון נפרד ואין בעיה של בלאגן.

עברו לטופס שאותו אתם רוצים לחבר

19. לחצו על “פעולות אחרי שליחה”

והוסיפו “Webhook”

לחצו על "פעולות אחרי שליחה"

20. לכו ללשונית Webhuk החדשה

אחרי שהוספתם, תופיע לשונית חדשה בשם “Webhook”

לכו ללשונית Webhuk החדשה

21. הדביקו את שורת הקוד שהעתקנו בסעיף 16

הדביקו את שורת הקוד שהעתקנו בסעיף הקודם

22. לחצו על “עדכן”

לחצו על "עדכן"

23. נקו את זיכרון המטמון באתר (במידה ויש)

נקו את זיכרון המטמון באתר (במידה ויש)

24. עכשיו נבדוק שהחיבור שלנו אכן עובד

מלאו את הטופס אותו חיברתי ושלחו אותו!

עכשיו נבדוק שהחיבור שלנו אכן עובד

25. עברו חזרה למסמך Google Sheets שחיברנו

אם זה עבד, תוכלו לראות למטה גיליון חדש בשם של הטופס שחיברתם!

עברו חזרה למסמך Google Sheets שחיברנו

 

תוכלו לראות שיש לנו עכשיו עמודה לכל שדה של הטופס ומעכשיו כל ליד שיכנס מהטופס הזה ירשם במסמך שלנו.

תוצאות

זהו, סיימנו!

26. חיבור טפסים נוספים

אין הגבלה על כמות הטפסים מהאתר שאפשר לחבר.
בשביל לחבר טפסים נוספים, אתם יכולים להדביק את שורת הקוד שייצרנו בסעיף 16 ולהדביק אותה גם בטפסים אחרים.
כל טופס יופיע בגיליון נפרד ככה שזה יהיה לכם מסודר.

בקשת מדריכים

יש לכם רעיון למדריך שעדיין לא קיים? אתם מוזמנים לכתוב לנו ונדאג להוסיף אותו לאתר (:

הרשמה לניוזלטר

רוצים לקבל התראות למייל ברגע שעולה מדריך חדש?

אהבת את המדריך? עזר לך?
אולי שיתוף יעזור לעוד אנשים (:
ווטסאפ
פייסבוק
אימייל
טוויטר
לינקדאין
לא הסתדרת עם המדריך? משהו לא עובד?
אנחנו כאן לעזור! ;)
אולי יעניין אותך לקרוא גם...
כל מה שצריך לדעת על חנויות דיגיטליות
 אבטחת אתר וורדפרס – מה זה ואיך לשפר? 
קידום ממומן בגוגל ושיווק במנועי חיפוש
קידום אורגני בגוגל ושיווק במנועי חיפוש
פרסום ממומן בסושיאל – פייסבוק ואינסטגרם
קידום אורגני בסושיאל – פייסבוק ואינסטגרם
אפיון אתרים, עיצוב אתרים והמסביב
אופטימיזציה ומיטוב למהירות האתר
ניהול חנויות דיגיטליות
דומיין – איך לרכוש ומה חשוב לדעת?
אחסון אתר, תחזוקה שוטפת ומסביב
אופטימיזציית SEO לאתרים
צילום קטלוג לחנות דיגיטלית
כתיבת תוכן לאתרים וקידום אורגני
בניית פלטפורמה ואתרים חברתיים
אתר קטלוגי וקטלוג מוצרים
עמוד נחיתה ואתרי עמוד
אתר תדמית לעסקים
בואו נדבר!

יש לכם רעיון למדריך שעדיין לא קיים?
אתם מוזמנים לכתוב לנו ונדאג להוסיף אותו לאתר (:

רוצים עדכונים למייל כאשר עולה מידע חדש?
מוזמנים להשאיר פרטים ונדאג לעדכן אתכם (:

דילוג לתוכן