שליחת עדכוני הזמנות מ-WooCommerce ב-WhatsApp
יוצרים ב-WooCommerce וובהוק (Webhook) לאירועי הזמנה, שמצביע על מקלט, למשל תהליך ב-n8n או נתיב PHP קטן. המקלט מאמת את החתימה של WooCommerce, בודק שהלקוח הסכים לקבל הודעות ב-WhatsApp, ושולח תבנית מאושרת דרך Cloud API, עם מזהה המספר המחובר ועם אסימון גישה (Access Token) שלו.
WooCommerce מנטרלת וובהוק אחרי יותר מחמישה כשלי שליחה רצופים.
כותרת שנושאת HMAC-SHA256 של ה-payload בקידוד base64, שנוצר באמצעות הסוד של הוובהוק.
מחוץ לחלון שירות הלקוחות אפשר לשלוח רק הודעות מתבנית שאושרה מראש.
איך הזמנה ב-WooCommerce מפעילה הודעת WhatsApp?
דרך וובהוק של WooCommerce ומקלט. ב-WooCommerce נכנסים אל הגדרות, מתקדם, Webhooks, ומוסיפים וובהוק עם נושא הזמנה, כמו יצירת הזמנה או עדכון הזמנה, כתובת URL למסירה וסוד. מאותו רגע WooCommerce שולחת את ההזמנה כ-JSON לכתובת הזו בכל פעם שהאירוע מתרחש.
ה-payload קבוע, ולכן אי אפשר לכוון אותו ישירות אל Cloud API. בין השניים עומד מקלט: הצומת Webhook של n8n, נתיב ב-PHP של החנות או כל שירות קטן. הוא קורא את ההזמנה, בוחר את מספר הטלפון של הלקוח ואת הפרטים שההודעה צריכה, ושולח בקשת HTTPS אחת אל נקודת הקצה של ההודעות ב-Cloud API עבור המספר המחובר, כשאסימון הגישה של המספר משמש כ-bearer token.
הנושא order.updated אינו קשור לסטטוס אחד, ולכן המקלט צריך לקרוא את השדה status של ההזמנה ולשלוח פעם אחת לכל מעבר שמעניין אתכם. כברירת מחדל WooCommerce שולחת ברקע דרך wp-cron, כך שההודעה עשויה להגיע בהשהיה קלה אחרי ההזמנה.
איך המקלט יודע שהבקשה הגיעה מהחנות?
מהחתימה של WooCommerce. כל משלוח נושא את הכותרת X-WC-Webhook-Signature, שהיא HMAC-SHA256 בקידוד base64 של ה-payload הגולמי, שחושב עם הסוד שהגדרתם בוובהוק. המקלט מחשב את אותו hash על הגוף שקיבל, משווה, ודוחה כל בקשה שלא תואמת.
זה הסוד של החנות עצמה, ולכן בניגוד לחתימה של Meta על הודעות WhatsApp נכנסות, אפשר לאמת אותו. משווים בזמן קבוע, ומחשבים את ה-hash על הגוף הגולמי לפני שה-framework מפענח אותו, כי JSON שקודד מחדש מפיק hash אחר.
עונים מהר עם קוד 2xx. WooCommerce סופרת כל תגובה שאינה 2xx, 301 או 302 ככישלון, ואחרי יותר מחמישה כשלים ברצף היא מנטרלת את הוובהוק. מקלט שנפל בזמן פריסה, או שאיטי כי הוא מחכה ל-Meta לפני שהוא עונה, יכול לכבות את הודעות החנות בלי שאף אחד ישים לב.
מה החנות יכולה לשלוח, ומתי?
תבנית מאושרת, בכל פעם שהחנות פותחת בשיחה. חלון שירות הלקוחות של Meta, בן 24 שעות, נפתח רק כשהלקוח שולח הודעה למספר. לכן אישור הזמנה או עדכון משלוח הם הודעותביוזמת העסק, וטקסט חופשי נדחה. יוצרים תבנית שירות (utility) לכל עדכון, ממתינים לאישור, ושולחים אותה לפי שם ושפה, כשמספר ההזמנה ושאר הפרטים עוברים כפרמטרים.
Meta דורשת גם הסכמה מראש: הלקוח מסר את המספר שלו והסכים לשמוע מהעסק ב-WhatsApp. תיבת סימון בקופה, ששמורה בהזמנה, היא הדרך הפשוטה ביותר לתעד זאת, והמקלט צריך לבדוק אותה לפני השליחה.
ברגע שהלקוח משיב, השיחה היא Coexistence רגילה. התשובה מופיעה באפליקציית WhatsApp Business בטלפון של החנות, החלון פתוח לטקסט חופשי, והצוות עונה מהאפליקציה כמו תמיד.
טעויות נפוצות
- לבצע את הקריאה ל-Cloud API לפני שעונים ל-WooCommerce. שליחה איטית או כושלת נספרת לחובת הוובהוק, שמנוטרל אחרי יותר מחמישה כשלים.
- לחשב hash על JSON מפוענח במקום על הגוף הגולמי. החתימה אף פעם לא תתאים, וכל משלוח אמיתי יידחה.
- לשלוח בכל משלוח של order.updated. הנושא אינו קשור לסטטוס אחד, ובלי מעקב אחרי המעבר שכבר נשלח, הלקוחות יקבלו הודעות כפולות.
מחברים את מספר החנות באתר easycoexistence.com, ומעבירים למקלט את מזהה המספר ואת האסימון מלוח הבקרה. המחיר מ-US$ 9 לכל מספר בחודש, ויורד עד US$ 1 ככל שמוסיפים מספרים, עם תקופת ניסיון של 3 ימים.
שאלות נפוצות
צריך תוסף של WordPress בשביל זה?
לא. הוובהוקים המובנים של WooCommerce ומקלט מספיקים, והמקלט יכול להיות נתיב באותה אפליקציית PHP.
מי משלם על הודעות ההזמנות?
Meta מחייבת על ההודעות ישירות את העסק, בחשבון WhatsApp Business של העסק עצמו, ו-EasyCoexistence לא מוסיפה עליהן רווח.
הצוות עדיין יכול להשתמש בטלפון?
כן. Coexistence משאירה את אפליקציית WhatsApp Business פעילה במספר החנות, והתבנית שהחנות שלחה מופיעה בשיחה.
מה עושים אם וובהוק נוטרל?
מתקנים את המקלט, ואז מחזירים את הסטטוס של הוובהוק לפעיל ב-WooCommerce. הזמנות שנוצרו בזמן שהוא היה כבוי לא הפעילו הודעה.
המשיכו לקרוא
מוכנים להתחיל?
מגדירים WhatsApp Coexistence בתוך דקות, לא חודשים. האפליקציה ממשיכה לעבוד בטלפון.
התחילו תקופת ניסיון בחינםנבדק ב-