דלג לתוכן הראשי

מעקב ואנליטיקה ל-WhatsApp

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

סקירה כללית​

המעקב ב־WhatsApp מאפשר לכם:

  • לעקוב אחר מסירת הודעות - סטטוסים של נשלח, נמסר ונקרא
  • לנטר מעורבות - לחיצות על כפתורים ועל קישורים
  • לנתח קמפיינים - לייחס המרות לקמפיינים מסוימים
  • להפעיל תהליכים - להשתמש בהודעות WhatsApp נכנסות כטריגר למסעות

אירועים במעקב​

אירועי הודעות יוצאות​

כאשר שולחים הודעות WhatsApp דרך קמפיינים או מסעות, האירועים הבאים נרשמים:

שם האירועתיאורמאפיינים
message.sentההודעה התקבלה ב-WhatsApp APIchannel, messageId, messageType, templateName, to, campaignId, variantId, canvasId, nodeId, wabaId, senderId, contentSource, templateId, decisionId
message.deliveredההודעה הגיעה למכשיר הנמעןchannel, messageId, status, recipientPhone, conversationId, campaignId, variantId, canvasId, nodeId, templateName, contentSource, templateId, decisionId
message.openedהנמען קרא את ההודעה. אישור ה-read של WhatsApp נרשם כ-message.openedchannel, messageId, status, recipientPhone, campaignId, variantId, canvasId, nodeId, templateName, contentSource, templateId, decisionId
message.failedשליחת ההודעה נכשלהchannel, messageId, errorCode, errorMessage, reason, campaignId, variantId, canvasId, nodeId, contentSource, templateId, decisionId
message.clickedהמשתמש לחץ על כפתור בהודעהchannel, campaignId, variantId, canvasId, clickType, buttonId, buttonTitle, replyToMessageId, contentSource, templateId, decisionId
אלה אותם שמות אירועים שכל ערוץ משתמש בהם - אין אירוע יוצא עם קידומת whatsapp.. שורות של WhatsApp מזוהות לפי המאפיין channel, שערכו whatsapp בכל החמישה, ולכן דוח שמתייחס ל-WhatsApp בלבד הוא message.sent מסונן על channel = whatsapp.

כל שורה בטבלה נושאת גם את זהות השליחה: contentSource (template, campaign או canvas), templateId כאשר נעשה שימוש בתבנית שמורה, ו-decisionId כאשר צומת AI Decision, צומת Experiment או מודל וריאנט מותאם אישית בחרו את התוכן. הזהות מוטבעת פעם אחת ב-message.sent ומוחזרת באירועים המאוחרים, כך שמסירה או קליק מתחברים בדיוק לתוכן ולהחלטה שהפיקו אותם. שורת השליחה נושאת גם את הפניית התוכן: contentKind (סטטי או דינמי), contentHash (התוכן כפי שנשמר על ידי המשווק), ולתוכן דינמי contentTrace (אילו הסתעפויות, בלוקי תוכן, מודלי המלצה וטקסט שנוצר נפתרו ברינדור, כמזהים) ו-contentKey (מפתח הסיווג שנגזר מהם).

שתי התנהגויות שכדאי להכיר:

  • Meta שולחת גם webhook בסטטוס sent עבור הודעה ש-worker השליחה כבר רשם. הסטטוס הזה מדולג, ולכן שליחה אחת היא message.sent אחד.
  • אישור סטטוס להודעה שהפלטפורמה הזו לא שלחה - תשובה שנכתבה באפליקציית WhatsApp Business, או כלי אחר על אותו מספר - מתעלמים ממנו במקום לספור אותו כמסירה שלכם.

אירועי הודעות נכנסות​

כאשר משתמשים שולחים הודעות לחשבון WhatsApp Business שלכם:

שם האירועתיאורמאפיינים
whatsapp.message.receivedהתקבלה הודעה נכנסתchannel, messageType, type, content, contentType, contentText, profile, phoneNumber, messageId, wabaId, accountName, toNumber, replyToMessageId

זה כן ייחודי ל-WhatsApp: זה האירוע שטריגר WhatsApp נכנס מאזין לו, לצד sms.message.received ו-viber.message.received.

מעקב אחר לחיצות על כפתורים​

כאשר משתמשים לוחצים על כפתורים בהודעות תבנית WhatsApp, Joryio מבצעת אוטומטית:

  1. שיוך לחיצות לקמפיינים - שיוך הלחיצה על הכפתור להודעה היוצאת המקורית
  2. רישום האירוע - רישום אירוע message.clicked עם ההקשר המלא
  3. עדכון אנליטיקת קמפיינים - הגדלת מספר הלחיצות בדוחות הקמפיין

איך זה עובד​

1. You send a WhatsApp template with buttons
2. We store the message with campaign attribution (whatsapp_messages table)
3. User clicks a button → WhatsApp sends webhook
4. We look up the original message to get campaign context
5. We track message.clicked event with campaignId, variantId, buttonId

נתוני כפתור במעקב​

  • buttonId - המזהה או הערך של הכפתור
  • buttonTitle - טקסט הכפתור
  • campaignId - קמפיין משויך
  • variantId - וריאנט A/B (אם רלוונטי)
  • messageId - מזהה הודעת WhatsApp

מעקב אחר לחיצות על קישורים​

מעקב אחר לחיצות על קישורים ב-WhatsApp משתמש בסיומת ה-URL הדינמית של כפתור URL בתבנית - שדה ה-URL היחיד ש-Meta מתירה לשנות לכל נמען. Joryio ממלאת את הסיומת בטוקן חתום שמצביע אל דומיין המעקב שלכם; הלחיצה נרשמת ולאחר מכן מתבצעת הפניה אל היעד האמיתי. מכיוון שכתובת הבסיס של הכפתור היא חלק מהתבנית המאושרת, דבר בהודעה אינו נכתב מחדש בזמן השליחה - התבנית נשארת תקפה.

הגדרה​

1. הגדירו דומיין מעקב. הגדירו אותו פעם אחת תחת Settings → Tracking domain (לדוגמה track.yourbrand.com). ראו דומיין מעקב.

2. צרו את התבנית ב-Meta עם כפתור URL בדומיין המעקב. הגדירו לכפתור כתובת דינמית שכתובת הבסיס שלה היא דומיין המעקב שלכם:

Button URL: https://track.yourbrand.com/wa/{{1}}

הגישו את התבנית לאישור כרגיל. Meta מאשרת אותה יחד עם דומיין המעקב - הסיומת הדינמית {{1}} היא החלק היחיד שמותר להשתנות.

3. מפו את היעד בקמפיין. כשבוחרים את התבנית בעורך הקמפיין, כל כפתור URL בעל סיומת דינמית מציג שדה Button link - שמסומן tracked כאשר הבסיס שלו הוא כתובת מעקב מסוג …/wa/{{1}}. הזינו את היעד האמיתי, בין אם כתובת קבועה ובין אם ביטוי Liquid:

{{ user.custom.offerUrl }}

זהו - ללא קוד. בעת השליחה, Joryio:

  1. מעבדת את היעד לכל נמען (Liquid, הזנות קטלוג ובלוקי תוכן - הכול נתמך).
  2. יוצרת טוקן מעקב חתום שמכיל את היעד ואת נתוני השיוך (קמפיין או מסע, וריאנט ומשתמש).
  3. שולחת את הטוקן כסיומת הדינמית, כך שהנמען מקבל https://track.yourbrand.com/wa/<token>.

זרימת המעקב​

1. כפתור התבנית (מאושר): https://track.yourbrand.com/wa/{{1}}
2. שליחה: סיומת ← טוקן חתום { יעד, ארגון, משתמש, קמפיין/מסע, וריאנט }
3. הנמען מקליק → GET /wa/:token בדומיין המעקב שלכם
4. הטוקן מאומת (HMAC) → message.clicked נרשם (channel = whatsapp) → 302 אל היעד

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

כפתורים שאינם בדומיין המעקב שלכם

כפתור URL שכתובת הבסיס שלו אינה דומיין המעקב שלכם (לדוגמה https://shop.com/{{1}}) מטופל כסיומת דינמית רגילה של Meta: הערך שמיפיתם נשלח כפי שהוא, והלחיצה אינה עוברת דרך מנגנון המעקב. רק כפתורים בדומיין המעקב הופכים לקישורים במעקב - Joryio לעולם אינה כותבת מחדש כתובת ש-Meta לא אישרה.

טריגרים של הודעות WhatsApp במסעות​

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

הגדרה​

בעת יצירת מסע, בחרו "WhatsApp Message" כסוג טריגר הכניסה.

אפשרויות טריגר​

אפשרותתיאור
WhatsApp Accountחשבון WABA מסוים שממנו יתקבלו הודעות (או כל החשבונות)
Message Typesסינון לפי סוג הודעה (text, image, button_reply וכו')
Conditionsתנאים על בסיס תוכן (מכיל, שווה, regex)

סוגי תנאים​

מאפייןתיאורדוגמה
content.textתוכן הטקסט של ההודעהContains "support"
messageTypeסוג ההודעהEquals "button_reply"
phoneNumberמספר הטלפון של השולחStarts with "+1"

אופרטורים​

  • equals - התאמה מלאה
  • not equals - אינו שווה בדיוק
  • contains - הטקסט מכיל ערך
  • starts with - הטקסט מתחיל בערך
  • ends with - הטקסט מסתיים בערך
  • matches regex - התאמה לביטוי רגולרי

משתני תבנית במסע​

כאשר הודעת WhatsApp מפעילה מסע, ניתן להשתמש במשתנים הבאים בצמתים שבהמשך:

{{ trigger.messageType }} # 'text', 'image', 'button_reply', etc.
{{ trigger.content.text }} # Message text content
{{ trigger.content.type }} # Content type
{{ trigger.phoneNumber }} # Sender's phone number
{{ trigger.messageId }} # WhatsApp message ID
{{ trigger.timestamp }} # When message was received
{{ trigger.wabaId }} # WhatsApp Business Account ID
{{ trigger.context }} # Reply context (if replying to a message)

דוגמה: מסע לבוט תמיכה ב-WhatsApp​

Entry Trigger: WhatsApp Message
- Message Type: text
- Condition: content.text contains "help" OR "support"

Flow:
→ Send WhatsApp Reply: "Hi {{ user.firstName }}, how can we help?"
→ Behavior Split: Wait for response (24h)
→ Responded: Route to support agent
→ No response: Send follow-up message

לוח הבקרה של האנליטיקה​

ניתן לצפות באנליטיקה של WhatsApp במקומות הבאים:

  1. Campaign Analytics - מדדים לכל קמפיין

    • הודעות שנשלחו, נמסרו, נקראו
    • שיעורי לחיצה על כפתורים
    • שיעורי המרה
  2. Canvas Analytics - מדדים ברמת המסע

    • משתמשים שנכנסו למסע בעקבות הודעת WhatsApp
    • שיעורי השלמת מסלולים
    • שיעורי תגובה
  3. ייצוא אירועים / אנליטיקה מותאמת - בניית דוחות משלכם

    • עיינו באירועים הגולמיים (message.sent, message.delivered, message.opened, message.clicked, מסוננים על channel = whatsapp) ב-Event Explorer
    • השתמשו ב-API כדי לייצא אירועים ולהזין לוחות בקרה מותאמים

שיטות עבודה מומלצות​

1. שימוש בתבניות עם כפתורים​

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

2. הפעלת מעקב אחר קישורים​

  • העבירו כתובות URL דרך דומיין המעקב שלכם
  • קבלו שיוך מלא ללחיצות על קישורים חיצוניים
  • מדדו שיעורי המרה אמיתיים

3. הגדרת טריגרים למסעות​

  • הגדירו תגובות אוטומטיות לפניות נפוצות
  • נתבו משתמשים לפי תוכן ההודעה
  • השתמשו בביטויי regex לדפוסי התאמה גמישים

4. ניטור שיעורי מסירה​

  • עקבו אחר היחס בין delivered ל-sent. כל אישור נספר פעם אחת, לא משנה כמה פעמים הספק שולח מחדש את ה-webhook, ולכן היחס אינו יכול לעבור 100%
  • שימו לב ששיעור הכישלון מחושב מתוך הניסיונות (נשלחו + נכשלו): שליחה ש-WhatsApp דוחה על הסף אינה פולטת sent לחלק בו
  • זהו בעיות באיכות מספרי הטלפון
  • נטרו הודעות שנכשלו

5. ניתוח דפוסי תגובה​

  • מדדו את הזמן בין השליחה לפעולת המשתמש
  • זהו את זמני השליחה המיטביים
  • מדדו את השימוש בחלון הפעילות בן 24 השעות

פתרון בעיות​

לחיצות על כפתורים אינן נרשמות​

  1. בדיקת הגדרות Webhook - ודאו ש־Webhooks של WhatsApp מוגדרים כראוי
  2. בדיקת אחסון הודעות - ההודעה המקורית חייבת להיות בטבלת whatsapp_messages
  3. בדיקת שיוך לקמפיין - ההודעה חייבת לכלול campaignId לצורך מעקב מלא

הודעות נכנסות אינן מפעילות מסע​

  1. בדיקת סטטוס המסע - המסע חייב להיות במצב "active"
  2. בדיקת תנאי טריגר - ודאו שההודעה תואמת את התנאים שהוגדרו
  3. בדיקת חיבור WABA - החשבון חייב להיות פעיל ומחובר

נתוני אנליטיקה חסרים​

  1. בדיקת Event Explorer - ודאו שאירועי WhatsApp עדיין מגיעים; אם האירועים הפסיקו להגיע לחלוטין, פנו לתמיכה
  2. בדיקת יצירת אירועים - בדקו ביומני צד השרת אם אירועי המעקב אכן נרשמים
  3. בדיקת טווח זמן - קיים עיכוב בעיבוד נתוני האנליטיקה

תיעוד קשור​