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

וריאנטים וקבוצת ביקורת

וריאנטים של מסע שלם מאפשרים לבחון מסעות שלמים זה מול זה (A/B/n), וקבוצת ביקורת מחריגה חלק מהקהל כדי שתוכלו למדוד עד כמה המסע באמת מגדיל המרות - ולא רק כמה אנשים המירו.

זה שונה מצומת הניסוי (Experiment), שמפצל מסלול המשך באמצע המסע. וריאנטים מפצלים כבר בכניסה: יש טריגר משותף אחד, והמסע מתפצל ממנו לענף לכל וריאנט.

מתי להשתמש במה

מה רוצים לבחוןבמה משתמשים
שני מסעות שונים במבנה זה מול זה (סדרה של שלושה אימיילים מול הודעת WhatsApp אחת)וריאנטים של מסע
צעד אחד בתוך מסע שזהה בכל השאר (שורת נושא A מול B באימייל השני)צומת הניסוי
האם בכלל שווה להריץ את המסע (השפעה תוספתית לעומת אי-שליחה)קבוצת ביקורת

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

איך וריאנטים עובדים

  • יש טריגר משותף אחד (כניסת המסע הרגילה). הפיצול קורה שם - אתם לא מוסיפים טריגר לכל וריאנט. אחרי השמירה, צומת הטריגר מציג פלט אחד לכל וריאנט ניסוי - עם שם הווריאנט ואחוז התעבורה שלו - ואתם מחברים כל פלט לצומת הראשון במסלול של אותו וריאנט. אם קיימת קבוצת ביקורת, הטריגר מציג גם שורה מקווקוות Held out עם החלק שלה (אין לה פלט).
  • כל נכנס משויך לווריאנט אחד בדיוק, באופן דטרמיניסטי: השיוך הוא גיבוב יציב של המשתמש והמסע, כך שאותו משתמש תמיד משויך לאותו וריאנט באותו מסע. כניסה חוזרת לעולם לא מעבירה משתמש בין זרועות באמצע הבדיקה.
  • האחוזים של כל הווריאנטים (כולל קבוצת הביקורת) חייבים להסתכם ב־100%. בדרך כלל אינכם קובעים אותם ידנית - העורך מפצל את התעבורה אוטומטית ככל שאתם מוסיפים ומסירים וריאנטים (ראו בהמשך) - והוא חוסם שמירה עד שהם מסתכמים ב־100%.
  • השיוך מתבצע פעם אחת, בכניסה. משתמשים שכבר מתקדמים במסע נשארים משויכים לווריאנט שאיתו נכנסו - עריכת הפיצול מאוחר יותר משפיעה רק על נכנסים חדשים.

אם וריאנט עדיין לא מחובר

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

יצירת וריאנטים

  1. בנו את המסע עם הטריגר היחיד שלו כרגיל.
  2. פתחו Variants מסרגל הכלים של המסע. כל מסע נפתח כוריאנט A יחיד עם 100% - המסע כולו הוא וריאנט A עד שמפצלים אותו.
  3. לחצו Add variant כדי לפצל. כל וריאנט חדש מקבל אוטומטית שם Variant A, Variant B וכן הלאה, והאחוזים מתחלקים מחדש באופן שווה עבורכם - שני וריאנטים הופכים ל־50/50, שלושה ל־34/33/33 וכן הלאה. עדיין אפשר לדרוס כל ערך על ידי הקלדה בתיבת ה**%** שלו; מחוון Total בתחתית חייב להגיע ל־100%.
  4. אפשר ללחוץ על Add control group כדי להוסיף קבוצת ביקורת (ראו בהמשך). היא נפתחת עם 20% והווריאנטים מתחלקים מחדש על יתרת ה־80%. למסע יכולה להיות קבוצת ביקורת אחת לכל היותר - הכפתור נעלם ברגע שיש אחת.
  5. שמרו. השמירה חסומה כל עוד האחוזים אינם מסתכמים ב־100%. הטריגר תמיד מציג לפחות את Variant A - בשמירה הראשונה מסלול המסע הקיים מחווט אוטומטית לפלט של Variant A, כך שאף פעם לא צריך לחבר מחדש את בסיס המסע.
  6. צומת הטריגר מציג כעת פלט אחד לכל וריאנט, כשכל אחד מתויג באחוז שלו - גררו מכל פלט אל הצומת הראשון במסלול של אותו וריאנט. קבוצת הביקורת לא מקבלת פלט; אין לה מסלול בכוונה.

אפשר להסיר וריאנט מאותו חלון בכל רגע - האחוזים שנותרו מתאזנים מחדש ל־100% אוטומטית. אי אפשר להסיר את וריאנט הניסוי האחרון שנותר; מסע תמיד שומר לפחות וריאנט אחד.

שכפול וריאנט

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

בחלון Variants, לכל שורת וריאנט ניסוי יש אייקון Clone (העתקה). לחיצה עליו:

  • מוסיפה וריאנט חדש הנקרא על שם המקור עם התוספת "(copy)", כשהאחוזים מתחלקים מחדש בדיוק כמו בAdd variant, וכן
  • בעת שמירה, משכפלת את כל מסלול ההמשך של אותו וריאנט - כל צומת שניתן להגיע אליו מפלט הטריגר שלו, יחד עם החיווט ביניהם - ומחברת את ההעתקים לפלט הטריגר של הווריאנט החדש.

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

קביעת חלוקת התעבורה

העורך שומר על הפיצול ב־100% עבורכם (גם בהוספה/הסרה), אך תמיד אפשר להקליד ערכים מדויקים. כמה כללי אצבע מעשיים:

  • פיצולים שווים מגיעים להכרעה במהירות הרבה ביותר. בדיקה עם שני וריאנטים בחלוקה של 50/50 (או 45/45/10 עם קבוצת ביקורת) צוברת נתונים בשתי הזרועות באותו קצב.
  • קבוצות ביקורת הן בדרך כלל 5%–20%. גדולות מספיק כדי למדוד מולן, וקטנות מספיק כדי שלא תמנעו את המסע מנתח גדול של הקהל. מסעות עתירי תעבורה יכולים להסתפק בקבוצות ביקורת קטנות יותר.
  • הימנעו מחלקים קטנים מדי. וריאנט ניסוי של 5% במסע עם תעבורה נמוכה עלול להידרש לחודשים כדי להניב מסקנה חד-משמעית.

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

קבוצת ביקורת

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

כדי להוסיף אחת, פתחו Variants ולחצו Add control group, ואז הקצו לה אחוז (למשל 10%). אין לה פלט מהטריגר ואין לה מסלול - זו קבוצת ביקורת בלבד, המסומנת Held out ברשימת הווריאנטים.

מאחורי הקלעים, קבוצת הביקורת היא פשוט וריאנט עם דגל ה־control, ולכן היא נמצאת באותו עורך Variants כמו כל השאר - מקום אחד ל־A/B/n ולקבוצות ביקורת. כשמשתמש משויך לקבוצת הביקורת, Joryio עדיין:

  • סופרת אותו ב־Total entries של המסע, ובנפרד ב־Control entries, וכן
  • רושמת עבורו אירוע שמסמן את זרוע הביקורת, כך שרכישות מאוחרות שלו יוכלו להימדד באותו חלון המרה כמו רכישות הקהל שקיבל את המסע.

התיעוד הזה הוא שהופך את קבוצת הביקורת למדידה, ולא לקבוצה שפשוט מדלגים עליה.

איך המספרים מוצגים

מסע עם וריאנטים מדווח על הכניסות שלו בשני מונים:

  • Total entries - כל מי שנכנס למסע, כולל משתמשים שהוחזקו בצד בקבוצת הביקורת.
  • Control entries - תת-הקבוצה שהוחזקה בצד, נספרת בנפרד.

קהל הניסוי הוא כל מי שנכלל ב־Total entries ואינו נכלל ב־Control entries. זכרו זאת כשמסתכלים על מספרי שליחה: מסע עם קבוצת ביקורת של 10% תמיד יציג בערך 10% פחות שליחות מכניסות - בכוונה.

קריאת אריח ה־Uplift

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

איך לקרוא אותו:

  • Uplift חיובי - המסע מייצר הכנסה שלא הייתה קורית מעצמה. זה המספר שכדאי לדווח, לא הכנסה משויכת גולמית.
  • בערך אפס - ה"המרות" של המסע הן בעיקר רכישות שהיו קורות בכל מקרה. שקלו לשנות את ההצעה, התזמון או הקהל.
  • Uplift שלילי - קבוצת הניסוי הציגה ביצועים גרועים יותר מקבוצת הביקורת. זה נדיר, אך אמיתי (עודף הודעות יכול לדכא רכישות). בדקו את הסיבה לפני שמרחיבים.

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

מתי לסיים

אל תכריזו על מנצח בעקבות אחר צהריים מוצלח אחד. אותם עקרונות סטטיסטיים שחלים על בדיקות A/B של קמפיינים חלים גם כאן - ראו מובהקות סטטיסטית להסבר על רווחי סמך ובדיקות מובהקות ב-Joryio.

הנחיות פרקטיות:

  • הריצו לפחות מחזור עסקי מלא אחד (בדרך כלל שבוע ומעלה), כך שהתנהגות בימי חול ובסופי שבוע תיוצג בכל זרוע.
  • החליטו על המדד לפני שמתחילים - הכנסה לנכנס, שיעור המרה, או אירוע המרה ראשי - ושפטו רק לפיו.
  • אל תעצרו מוקדם על סמך הצצה בנתונים. אפשר לבדוק בכל יום, אבל עצירה ברגע שזרוע אחת מקדימה כמעט מבטיחה מסקנה שגויה. חכו עד שההפרש יציב ומספרי הנכנסים משמעותיים.
  • סיימו באיזון מחדש. כשיש הכרעה, פתחו Variants ונתבו נכנסים חדשים אל המנצח - הגדירו אותו ל־100% והסירו את הווריאנטים המפסידים (או השאירו קבוצת ביקורת קטנה כדי להמשיך למדוד השפעה תוספתית).

דוגמה: בדיקת מסע קבלת פנים חדש

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

  1. פתחו Variants ולחצו Clone על הווריאנט של המסלול הנוכחי - כעת יש לכם Current (A) ו־Current (copy), כשלכל אחד סדרת האימיילים המלאה מחווטת. שנו את שם ההעתק ל־Email+WhatsApp (B), ועל הקנבס החליפו את אימייל מספר 2 שלו בהודעת WhatsApp.
  2. חזרה ב־Variants, הוסיפו קבוצת ביקורת והתאימו את הפיצול ל־Current (A) 45%, Email+WhatsApp (B) 45%, ביקורת 10%. שמרו.
  3. חברו את פלט A של הטריגר לאימייל הראשון של הסדרה הישנה, ואת פלט B לצומת הראשון של השילוב החדש. קבוצת הביקורת אינה זקוקה לחיבור.
  4. הפעילו את המסע והניחו לו לפעול במשך שבועיים מלאים.
  5. קראו את התוצאות: תגית ה-uplift מציגה כמה המסע כולו מניב לעומת אי-שליחה; השוואת מספרי ההמרה וההכנסה של A ו-B (תוך התחשבות במובהקות סטטיסטית) מראה איזה וריאנט כדאי להשאיר.
  6. סיימו את הבדיקה: הגדירו את המנצח ל־90% והשאירו קבוצת ביקורת של 10% אם אתם רוצים מדד קבוע להשפעה התוספתית - או צרפו אותה מחדש לקהל והגדירו את המנצח ל־100%.

שאלות נפוצות

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

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

האם חייבים קבוצת ביקורת כדי להריץ וריאנטים? לא - וריאנטים לבדם נותנים לכם A/B/n. קבוצת הביקורת נדרשת רק אם רוצים למדוד השפעה תוספתית ולא רק להשוות וריאנטים זה לזה.

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

וריאנטים מותאמים אישית (ML)

אם אתם רוצים שהמערכת תלמד איזה וריאנט עובד הכי טוב לכל משתמש במקום לקבע את הפיצול בעצמכם, ראו Personalized Variants בצומת הניסוי - הוא מאמן מודל אחרי שלב בדיקה ומנתב כל משתמש לנתיב שנחזה כטוב ביותר עבורו, עם קבוצת ביקורת למדידת ה-uplift של ה־ML.