בקשת Webhook
הגדר את פרמטרי בקשת ה-webhook שלך
בדוק ותקן webhooks עם שיטות HTTP שונות, כותרות מותאמות ופרמטרי שאילתה. אידיאלי ל-Make.com, n8n ו-Zapier.
Webhook הוא מנגנון אוטומציה שמאפשר לשירות אחד לשלוח נתונים אוטומטית לשירות אחר בזמן אמת. בניגוד ל-polling (בדיקה תקופתית), webhooks חוסכים משאבים ומאיצים תהליכים.
למד עוד על מדריך webhooks מלא באתר Mavash.
הגדר את פרמטרי בקשת ה-webhook שלך
שלח בקשה כדי לראות את התגובה כאן
אין נתוני תגובה זמינים עדיין
קבל כתובת ייחודית לקבלת webhooks וראה אותם בזמן אמת
עדיין לא התקבלו webhooks
שלח בקשה לכתובת הייחודית שלך למעלה
Webhook הוא מנגנון תקשורת שמאפשר לשירות אחד לשלוח נתונים אוטומטית לשירות אחר — ברגע שמשהו קורה, בזמן אמת. בניגוד ל-API רגיל (שבו אתה שואל ומקבל תשובה), webhook "דוחף" מידע אליך בלי שתצטרך לבקש.
דוגמה מהחיים: כשלקוח משלם בחנות האונליין שלך, Stripe שולח webhook לאתר שלך עם פרטי התשלום. האתר שלך מקבל את ההודעה ומפעיל אוטומציה — שולח מייל אישור, מוסיף רשומה ב-CRM, ומעדכן מלאי — הכל בשנייה אחת.
Polling = לבדוק כל X שניות אם יש עדכון. כמו לרענן כל הזמן את תיבת המייל. Webhook = לקבל התראה ברגע שיש עדכון. כמו צלצול בטלפון. Webhooks חוסכים שרת, מהירים יותר, ומתאימים בדיוק לאוטומציות עם n8n, Make.com ו-Zapier.
n8n הוא כלי האוטומציה הפופולרי ביותר לטכנאים ועסקים שרוצים שליטה מלאה. כך מחברים webhook ב-n8n:
https://your-n8n.com/webhook/abc123)טיפ: ב-n8n יש שני סוגי URLs — Test URL ו-Production URL. בשלב הפיתוח השתמש ב-Test, ובפריסה עבור ל-Production.
Make.com הוא פלטפורמת האוטומציה הוויזואלית הנפוצה ביותר. הנה איך מגדירים webhook:
יתרון ב-Make.com: אחרי ששלחת בקשה אחת, Make.com מזהה אוטומטית את כל שדות ה-JSON ומאפשר לך למפות אותם בשאר הזרימה — בלי לכתוב שורת קוד.
Zapier הוא הפופולרי ביותר בקרב משתמשים לא טכניים. שימוש ב-Webhooks ב-Zapier דורש תוכנית Pro ומעלה:
הנתונים שנשלחו לא תואמים למה שהשרת מצפה. בדוק שה-Content-Type header מוגדר כ-application/json ושמבנה ה-JSON תקין.
חסר אימות. הוסף Authorization header עם ה-token הנכון. לדוגמה: Authorization: Bearer YOUR_TOKEN
השרת לא ענה תוך 30 שניות. בדוק שה-webhook URL נכון ושהשרת פעיל. ב-n8n — ודא שה-Workflow במצב Active.
בעיה בצד השרת. בדוק את הלוגים של ה-Workflow שלך ב-n8n או Make.com.
בעיה נפוצה בפרודקשן. הפתרון: הוסף Idempotency Key — שדה ייחודי בכל בקשה (למשל event_id). שמור ב-DB את ה-IDs שעובדו כבר ובדוק לפני עיבוד.
API הוא תקשורת "pull" — אתה מבקש ומקבל. Webhook הוא תקשורת "push" — השירות שולח אליך כשמשהו קורה. Webhook יעיל יותר לאירועים כי לא צריך לסקור כל הזמן.
לא בהכרח. כלים כמו n8n, Make.com, ו-Zapier מספקים webhook URLs מוכנים ללא שרת. לפיתוח מקומי אפשר להשתמש ב-ngrok שיוצר URL זמני לסביבה המקומית שלך.
לפני שמפרסמים אוטומציה, חשוב לבדוק שה-webhook מגיע נכון, עם המבנה הצפוי. הכלי שלנו מאפשר לשלח בקשות HTTP מותאמות אישית ולראות את התגובה — חוסך שעות debugging.
הכלי חינמי לחלוטין. אין צורך בהרשמה.
ב-Mavash אנחנו מתמחים בבניית אוטומציות עסקיות עם n8n, Make.com, ו-WhatsApp Business. אם אתה מתקשה לחבר webhook, לבנות זרימה, או לשלב מערכות — דבר איתנו.
💬 דבר עם ראובן ב-WhatsApp| תכונה | webhook.mavash.net ✅ | webhook.site | RequestBin |
|---|---|---|---|
| ממשק עברי | ✅ כן | ❌ לא | ❌ לא |
| שליחה + קבלה | ✅ שניהם | ⚠️ קבלה בלבד | ⚠️ קבלה בלבד |
| חינמי לחלוטין | ✅ כן | ⚠️ מוגבל | ⚠️ מוגבל |
| תמיכה בn8n/Make | ✅ מותאם | ⚠️ כללי | ⚠️ כללי |
| תמיכה בעברית | ✅ WhatsApp/טלפון | ❌ לא | ❌ לא |
שירותים כמו Stripe, GitHub, WooCommerce שולחים חתימה (HMAC-SHA256) עם כל webhook. חובה לאמת אותה – אחרת תקבל requests מזויפים!
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
// השוואה בטוחה מפני timing attacks
return crypto.timingSafeEqual(
Buffer.from(`sha256=${expected}`),
Buffer.from(signature)
);
}
app.post('/webhook', express.raw({type: 'application/json'}), (req, res) => {
const sig = req.headers['x-hub-signature-256'];
if (!verifyWebhookSignature(req.body, sig, process.env.WEBHOOK_SECRET)) {
return res.status(401).send('Unauthorized');
}
const event = JSON.parse(req.body);
console.log('Event type:', event.type);
res.json({ received: true });
});
import hmac, hashlib
from flask import Flask, request, abort
app = Flask(__name__)
WEBHOOK_SECRET = "your-secret-key"
def verify_signature(payload, signature):
expected = hmac.new(
WEBHOOK_SECRET.encode('utf-8'),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('X-Hub-Signature-256', '')
if not verify_signature(request.get_data(), signature):
abort(401)
data = request.get_json()
print(f"Received event: {data.get('type')}")
return {'received': True}, 200
| תכונה | webhook.mavash.net ✅ | webhook.site | RequestBin |
|---|---|---|---|
| ממשק עברי | ✅ כן | ❌ לא | ❌ לא |
| שליחה + קבלה | ✅ שניהם | ⚠️ קבלה בלבד | ⚠️ קבלה בלבד |
| חינמי לחלוטין | ✅ כן | ⚠️ מוגבל | ⚠️ מוגבל |
| תמיכה בn8n/Make | ✅ מותאם | ⚠️ כללי | ⚠️ כללי |
| תמיכה בעברית | ✅ WhatsApp/טלפון | ❌ לא | ❌ לא |
שירותים כמו Stripe, GitHub, WooCommerce שולחים חתימה (HMAC-SHA256) עם כל webhook. חובה לאמת אותה – אחרת תקבל requests מזויפים!
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
// השוואה בטוחה מפני timing attacks
return crypto.timingSafeEqual(
Buffer.from(`sha256=${expected}`),
Buffer.from(signature)
);
}
app.post('/webhook', express.raw({type: 'application/json'}), (req, res) => {
const sig = req.headers['x-hub-signature-256'];
if (!verifyWebhookSignature(req.body, sig, process.env.WEBHOOK_SECRET)) {
return res.status(401).send('Unauthorized');
}
const event = JSON.parse(req.body);
console.log('Event type:', event.type);
res.json({ received: true });
});
import hmac, hashlib
from flask import Flask, request, abort
app = Flask(__name__)
WEBHOOK_SECRET = "your-secret-key"
def verify_signature(payload, signature):
expected = hmac.new(
WEBHOOK_SECRET.encode('utf-8'),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('X-Hub-Signature-256', '')
if not verify_signature(request.get_data(), signature):
abort(401)
data = request.get_json()
print(f"Received event: {data.get('type')}")
return {'received': True}, 200