חיפוש

הפניה לאחר שליחת טופס Contact Form 7 ושליחת Event לאנליטיקס

התוסף Contact Form 7 הוא אחד מהתוספים הנפוצים ביותר ליצירת טפסים בוורדפרס. אחד הפיצ׳רים שמשתמשים מחפשים ולא קיים בתוסף כברירת מחדל הוא הפניה לעמוד תודה לאחר שליחת טופס.

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

במדריך זה אסביר כיצד לבצע הפניה לעמוד תודה לאחר שליחת טופס ב Contact Form 7, וגם כיצד לשלוח event ל Google Analytics 4 ללא הפניה.

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

הפניה לכתובת אחרת לאחר שליחת טופס ב CF7

הדרך הפשוטה ביותר היא להשתמש ב DOM events של התוסף Contact Form 7 בכדי להריץ JavaScript. כאשר טופס נשלח בהצלחה, התוסף מפעיל event בשם wpcf7mailsent.

הקוד הבא מדגים כיצד לבצע הפניה לכתובת אחרת לאחר שליחה מוצלחת:

<?php
function redirect_cf7_after_submission() { ?>

    <script>
        document.addEventListener( 'wpcf7mailsent', function( event ) {
            window.location.href = 'https://example.com/thank-you/';
        }, false );
    </script>

<?php }

add_action( 'wp_footer', 'redirect_cf7_after_submission' );

הוסיפו את הפונקציה הזו לקובץ functions.php בתבנית הבת שלכם. שנו את הכתובת לכתובת אליה אתם מעוניינים להפנות את המשתמש.

אם יש לכם מספר טפסים באתר ואתם רוצים להפנות כל טופס לכתובת אחרת, השתמשו ב event.detail.contactFormId בכדי לזהות את הטופס ולבצע הפניה מותאמת.

אם יש לכם מספר טפסים, הנה דוגמה לקוד שמבצע הפניה שונה לכל טופס:

document.addEventListener( 'wpcf7mailsent', function( event ) {
    if ( event.detail.contactFormId === '123' ) {
        window.location.href = 'https://example.com/thank-you-contact/';
    } else if ( event.detail.contactFormId === '456' ) {
        window.location.href = 'https://example.com/thank-you-quote/';
    }
}, false );

החליפו את 123 ו 456 ב ID של הטפסים שלכם.

מעקב אחר שליחת טופס ב Google Analytics 4

אם אתם משתמשים ב Google Analytics 4 (GA4) בכדי לנטר את התנועה באתר, כנראה שתרצו לעקוב אחר שליחת טפסים ולקבל events עבור כל שליחה מוצלחת.

שימו לב – Universal Analytics (analytics.js ו UA-XXXXX) הפסיקה לפעול ביולי 2023. אם הקוד שלכם עדיין משתמש ב ga('send', ...), עליכם לעבור ל GA4.

דרך א׳ – שליחת event ישירות עם gtag.js

אם אתם משתמשים ב gtag.js ישירות (ולא דרך Google Tag Manager), הוסיפו את הקוד הבא לקובץ functions.php בתבנית הבת:

<?php
function send_ga4_event_cf7() { ?>

    <script>
        document.addEventListener( 'wpcf7mailsent', function( event ) {
            gtag( 'event', 'generate_lead', {
                event_category: 'Contact Form',
                event_label: 'CF7 Submit',
                contact_form_id: event.detail.contactFormId
            });
        }, false );
    </script>

<?php }

add_action( 'wp_footer', 'send_ga4_event_cf7' );

שם ה event – generate_lead – הוא אחד מה events המומלצים של GA4 למעקב אחר המרות.

דרך ב׳ – שליחת event דרך Google Tag Manager

אם אתם משתמשים ב Google Tag Manager, הגישה היא לדחוף event ל dataLayer ולטפל בו דרך GTM.

הוסיפו את הקוד הבא לקובץ functions.php בתבנית הבת:

<?php
function push_cf7_to_datalayer() { ?>

    <script>
        document.addEventListener( 'wpcf7mailsent', function( event ) {
            window.dataLayer = window.dataLayer || [];
            window.dataLayer.push({
                event: 'cf7_submission',
                formId: event.detail.contactFormId
            });
        }, false );
    </script>

<?php }

add_action( 'wp_footer', 'push_cf7_to_datalayer' );

לאחר מכן, ב GTM צרו Trigger מסוג Custom Event עם שם ה event – cf7_submission וחברו אותו ל Tag מסוג GA4 Event.

אם גם הפניה וגם שליחת event נדרשים, שלחו קודם את ה event ורק אחר כך בצעו הפניה באמצעות setTimeout עם עיכוב של 1-2 שניות.

DOM Events נוספים של Contact Form 7

מלבד wpcf7mailsent, התוסף מספק events נוספים שכדאי להכיר:

Eventמתי מופעל
wpcf7submitאחרי כל שליחה, ללא קשר לתוצאה
wpcf7mailsentאחרי שליחה מוצלחת של המייל
wpcf7mailfailedכשהשליחה הצליחה אך המייל נכשל
wpcf7invalidכשיש שדות עם קלט לא תקין
wpcf7spamכשזוהה ספאם

כל event מכיל אובייקט event.detail עם מידע שימושי כמו contactFormId, inputs (ערכי השדות) ו unitTag.

שאלות נפוצות

שאלות נפוצות לגבי הפניה ומעקב אחר שליחת טפסים ב Contact Form 7:

למה ההפניה לא עובדת אחרי שליחת הטופס?
ודאו שהקוד נטען ב footer (באמצעות ההוק wp_footer) ולא ב header. בנוסף, ודאו שאין שגיאות JavaScript בקונסולה של הדפדפן ושהתוסף CF7 עדכני.
איך מבצעים הפניה שונה לכל טופס?
השתמשו ב event.detail.contactFormId בכדי לזהות את הטופס הספציפי שנשלח ולבצע הפניה מותאמת לכל טופס לפי ה ID שלו.
האם חייבים עמוד תודה בכדי לעקוב אחר המרות?
לא. ב Google Analytics 4 ניתן לשלוח event ישירות לאחר שליחת הטופס באמצעות gtag() או דרך Google Tag Manager, ללא צורך בהפניה לעמוד תודה.
מה ההבדל בין wpcf7submit ל wpcf7mailsent?
ה event wpcf7submit מופעל אחרי כל שליחה - גם אם יש שגיאת ולידציה או ספאם. wpcf7mailsent מופעל רק כשהמייל נשלח בהצלחה, ולכן הוא המתאים למעקב אחר המרות ולהפניה.
האם הקוד on_sent_ok עדיין עובד?
לא. ההגדרה on_sent_ok הוסרה מ Contact Form 7 בגרסה 5.0. הדרך הנכונה כיום היא להשתמש ב DOM events כמו wpcf7mailsent כפי שמתואר במדריך זה.
איזה שם event מומלץ לשלוח ל GA4?
גוגל ממליצה להשתמש ב events מומלצים (recommended events) כמו generate_lead לטפסי יצירת קשר. זה מאפשר ל GA4 לזהות את סוג ההמרה ולהציג נתונים מותאמים בדוחות.

לסיכום

ראינו במדריך כיצד להפנות משתמשים לכתובת חדשה לאחר שליחת טופס ב Contact Form 7, וכיצד לשלוח events ל Google Analytics 4 ללא צורך בהפניה לעמוד תודה.

כל הדוגמאות משתמשות ב DOM event בשם wpcf7mailsent – אם אתם חובבים של התוסף, מוזמנים לתת מבט במאמר משחקים עם עיצוב התוסף Contact Form 7.

פוסטים נוספים שיכולים לעזור לכם: אופטימיזציה של CF7 לביצועים, מניעת ספאם עם Akismet ו-הוספת reCAPTCHA v3. להעמקה ב-GA4, בדקו את המדריכים על events בגוגל אנליטיקס והגדרת מעקב המרות ב-GA4.

דיון ותגובות
10 תגובות  ]
  • אורי 15 אוקטובר 2017, 9:47

    היי רועי,
    כיצד ניתן לשלב את ה ID של הטופס כדי שההפניה תתבצע לטופס ספציפי בלבד?

    • רועי יוסף 15 אוקטובר 2017, 13:47

      היי אורי,

      האם הטופס המדובר הוא הטופס היחיד בעמוד שלך או שישנם עוד טפסים באותו עמוד?

      • אורי 15 אוקטובר 2017, 14:36

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

        • רועי יוסף 15 אוקטובר 2017, 20:36

          כן אתה בהחלט יכול!

          הנה דוגמא לכיצד אתה מקבל את ה ID של הטופס (javascript) – אשתדל לעדכן את המאמר בקרוב עם אפשרות זו:

          document.addEventListener( 'wpcf7mailsent', function( event ) {
                     if ( '1561' === event.detail.contactFormId ) {
                          console.log('form ID is: ' + event.detail.contactFormId )
                      }
                      if ( '5678' === event.detail.contactFormId ) {
                          console.log('form ID is: ' + event.detail.contactFormId )
                      }
          }, false );
  • רוב 7 אוקטובר 2018, 13:48

    נהדר, המאמר שלך תיקן בעיה שהייתה בהפניה שהחליטה להפסיק לעבוד.אני קורא לקובץ של JS ושם יש את ההפניה שהפסידה לעבוד.

    טוב שעכשיו זה עובד..

  • מרינה 3 דצמבר 2018, 23:24

    תודה רבה על המאמר! יש רק משהו קטן שרציתי לחדד- למה אתה בעצם קורא ל –

    document.addEventListener( 'wpcf7mailsent', function( event )

    פעמיים, גם מההאדר וגם מ – functions.php?

    תודה.

    • רועי יוסף 4 דצמבר 2018, 0:06

      היי מרינה, על לא דבר 🙂

      לא כ״כ רלוונטי, אלי שתי פונקציות שונות לגמרי. פעם אחת קראתי לפונקציה בהאדר ופעם בפוטר אך באותה מידה שניהם יכולים (ואולי אף רצוי) שיהיו ב Footer… ז״א שתי הפונקציות צריכות להיות ב functions.php, ואת יכולה להשתמש ב wp_footer בשניהם במקום wp_head….

  • אלירן 27 מאי 2019, 18:10

    היי,

    אני מנסה להוסיף את הפונקציה הראשונה לתבנית בת של OCEAN ומשום מה זה לא עובד.
    משהו לא מסתדר עם ה SYNTAX של ה PHP…

השאירו תגובה

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

Savvy WordPress Development official logo