נתקלנו שוב ושוב במצבים שבהם לקוח השיק אתר ב-Wix, אבל התהליכים העסקיים נתקעו מול בעיות סנכרון: לידים אבדו ידנית, הזמנות נפלו, חוסר התאמה בשער התשלום. Wix היא פלטפורמה סגורה — אי אפשר להוסיף קוד שרת שרירותי או לשנות את התשתית. אינטגרציות נבנות באמצעות שני מנגנונים: Velo (לשעבר Corvid) — סביבת JavaScript מובנית המבוססת על Node.js, ו-Wix Headless API — ממשקי REST/GraphQL לעבודה עם נתונים מבחוץ. Wix מספקת את כל הכלים הדרושים להגדרת חיבורים עם כל שירות חיצוני: מ-webhook פשוט ועד פתרון headless מלא. אנו מתקינים אותם במפתח מלא עם אחריות יציבות ותיעוד. למעלה מ-50 אינטגרציות מוצלחות של Wix עם מערכות CRM, מערכות תשלום ומערכות ERP מאשרות את המומחיות שלנו.
אילו בעיות פותר שילוב Wix עם ממשקי API חיצוניים?
- אובדן לידים — נתוני טפסים לא מגיעים ל-CRM, ומנהלים מבזבזים זמן על הזנה ידנית.
- חוסר סנכרון בקטלוג — מוצרים ב-Wix Store לא מתעדכנים מול מערכת החשבונאות.
- היעדר התראות — אף אחד לא יודע על הזמנות חדשות או הרשמות בזמן.
- מגבלות Velo — זמן ביצוע פונקציות עד 14 שניות, לא ניתן להתקין חבילות npm כלשהן.
- סיבוכי Webhook — אימות חתימת JWT, טיפול בשגיאות, ניסיונות חוזרים.
הניסיון שלנו מאפשר לנו להימנע מהמלכודות האלה: ביצענו עשרות אינטגרציות לאתרי Wix בקנה מידה שונים — מטפסים פשוטים ועד סנכרון דו-כיווני עם ERP.
כיצד אנו מתקינים שילוב Wix עם שירות חיצוני
אנו בוחרים את המנגנון לפי המשימה. להלן השוואה בין הגישות המרכזיות.
| מנגנון | מתי להשתמש | נדרש קוד | ביצועים | מורכבות |
|---|---|---|---|---|
| Velo (jsw) | כל לוגיקה מותאמת אישית: עיבוד טפסים, סנכרון, קריאות API חיצוניות. | כן (JavaScript) | בינוני: 14 שניות, 256 MB | גבוהה |
| Wix Automations | תרחישים פשוטים: שליחת נתונים באירוע, קריאה ל-Zapier. | לא (zero-code) | נמוך: אין טיפול בתגובה | נמוכה |
| Wix Headless API | קריאה/כתיבה של נתוני אתר מבחוץ (CRM, ERP, אפליקציה ניידת). | כן (כל שפה) | גבוה: מגבלת 1000 בקשות לדקה | בינונית |
| Webhooks | הודעה למערכת חיצונית על אירועים (הזמנה חדשה, איש קשר). | בצד המקבל | גבוה: אסינכרוני | בינונית |
Velo: קוד צד שרת בתוך Wix
לפי תיעוד Wix, פונקציות פועלות לא יותר מ-14 שניות. Velo מאפשר כתיבת פונקציות שרת (קבצי jsw) שמבוצעות על שרתי Wix ויכולות לקרוא לממשקי API חיצוניים. מפתחות נשמרים ב-wix-secrets-backend — אחסון מובנה, לא בקוד.
// backend/crmIntegration.jsw
import { fetch } from 'wix-fetch';
import { getSecret } from 'wix-secrets-backend';
export async function syncContactToCRM(contactData) {
const apiKey = await getSecret('CRM_API_KEY');
const response = await fetch('https://api.yourcrm.com/v1/contacts', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: contactData.email,
name: contactData.name,
phone: contactData.phone,
source: 'wix_website',
}),
});
if (!response.ok) {
throw new Error(`CRM sync failed: ${response.status}`);
}
return response.json();
}פונקציות // backend/crmIntegration.jsw import { fetch } from 'wix-fetch'; import { getSecret } from 'wix-secrets-backend'; export async function syncContactToCRM(contactData) { const apiKey = await getSecret('CRM_API_KEY'); const response = await fetch('https://api.yourcrm.com/v1/contacts', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ email: contactData.email, name: contactData.name, phone: contactData.phone, source: 'wix_website', }), }); if (!response.ok) { throw new Error(`CRM sync failed: ${response.status}`); } return response.json(); } נקראות מהצד הקדמי באמצעות jsw:
// Клиентский код страницы
import { syncContactToCRM } from 'backend/crmIntegration';
$w('#submitButton').onClick(async () => {
try {
await syncContactToCRM({
email: $w('#emailInput').value,
name: $w('#nameInput').value,
phone: $w('#phoneInput').value,
});
$w('#successMessage').show();
} catch (err) {
console.error('Sync error:', err);
}
});אנו ממליצים על גישה זו כאשר נדרשת גמישות מלאה: טיפול בשגיאות, ניסיונות חוזרים, עיבוד נתונים. Velo מהיר פי 3 עבור תרחישים מותאמים אישית מאשר Automations עם בקשות HTTP, מכיוון שאינו דורש קריאות נוספות.
Wix Automations + בקשות HTTP
לתרחישי no-code פשוטים: Wix Automations (טריגרים על אירועי טפסים, הזמנות, הרשמות) תומכים בפעולת "בקשת HTTP". מאפשר שליחת POST/GET לכתובת URL חיצונית. זוהי אפשרות zero-code לשליחה ל-CRM, Zapier או n8n.
מגבלות: אין טיפול בתגובה, אין לוגיקה מותנית, אין ניסיונות חוזרים בשגיאה. אם נדרשת אמינות — בחרו ב-Velo.
Wix Headless API: עבודה עם נתוני אתר מבחוץ
Wix מספקת REST API לגישה לאוספי נתונים, הזמנות, אנשי קשר. אימות באמצעות OAuth 2.0:
# Получение токена curl -X POST https://www.wixapis.com/oauth2/token \ -H "Content-Type: application/json" \ -d '{ "clientId": "YOUR_CLIENT_ID", "clientSecret": "YOUR_CLIENT_SECRET", "grantType": "client_credentials" }' // Чтение коллекции данных через API
$response = Http::withToken($accessToken)
->post('https://www.wixapis.com/wix-data/v2/items/query', [
'dataCollectionId' => 'Products',
'query' => [
'filter' => ['active' => true],
'sort' => [['fieldName' => 'createdDate', 'order' => 'DESC']],
'paging' => ['limit' => 50],
],
]);
$items = $response->json('dataItems');
מקרה שימוש טיפוסי: CRM או ERP חיצוני קוראים הזמנות מ-Wix לעיבוד, או כותבים נתונים לאוספים מותאמים אישית באתר.
Webhooks מ-Wix
Wix תומכת ב-webhooks יוצאים לאירועים: איש קשר חדש, הזמנה חדשה, שינוי סטטוס הזמנה. הגדרה בלוח המפתחים (Wix Developers → Webhooks). כאשר מתרחש אירוע, Wix שולחת POST לכתובת ה-URL שצוינה.
אימות חתימה — באמצעות JWT עם המפתח הציבורי של Wix:
import { verify } from 'jsonwebtoken';
import jwksClient from 'jwks-rsa';
const client = jwksClient({
jwksUri: 'https://www.wix.com/.well-known/jwks.json',
});
async function verifyWixWebhook(token) {
const decoded = verify(token, async (header, cb) => {
const key = await client.getSigningKey(header.kid);
cb(null, key.getPublicKey());
});
return decoded;
}ללא אימות, ניתן לקבל בקשות מזויפות — אנו תמיד מיישמים בדיקת חתימה.
כיצד למנוע אובדן לידים במהלך שילוב Wix?
הסיבה העיקרית — היעדר העברה אוטומטית של נתונים. לידים נשארים ב-Wix, ומנהלים מעתיקים אותם ידנית. פתרון: הגדרת פונקציית Velo שבשליחת טופס שולחת נתונים ל-CRM. בנוסף, אנו מוסיפים webhook על איש קשר חדש — אם Velo נכשל, הנתונים עוברים דרך ה-webhook. זה מבטיח 99.9% אספקה.
מדוע Velo לא תמיד מספיק?
Velo חזק, אבל יש לו מגבלות: זמן ביצוע של 14 שניות, זיכרון של 256 MB, אין מודולים חיצוניים. אם צריך לעבד ייבוא המוני או לוגיקה כבדה, עדיף להשתמש ב-Wix Headless API: שירות חיצוני קורא נתונים מ-Wix ומסנכרן אותם. לדוגמה, בסנכרון קטלוג של 1000 מוצרים, Velo עלול לא לעמוד במגבלת הזמן, בעוד ש-Headless API מטפל בזה בכמה בקשות.
תהליך העבודה: ממשימה ועד פריסה
- ניתוח — אנו מפרקים תהליכים עסקיים קיימים, נקודות אינטגרציה, נפח נתונים. אנו יוצרים דיאגרמת זרימה.
- עיצוב — אנו בוחרים את המנגנון (Velo, Automations, Headless, webhook), מתכננים טיפול בשגיאות ומכסות.
- יישום — אנו כותבים קוד, מגדירים סודות, בודקים בסביבת ה-sandbox של Wix.
- בדיקות — אנו בודקים תרחישים: הצלחה, timeout, כפילויות, ניתוק חיבור.
- פריסה — אנו מפרסמים את האתר, מנטרים סנכרון ב-24 השעות הראשונות.
לוח זמנים ממוצע: משעתיים עד 3 ימים תלוי במורכבות.
מה כלול בעבודה שלנו
- תיעוד — תיאור האינטגרציה שהוגדרה, סכימת נתונים, הוראות לצוות שלך.
- קוד — פונקציות jsw, הגדרת מקלט webhook, דוגמאות קריאה.
- גישה — יצירה והעברה של מפתחות API, הגדרת סודות ב-Wix.
- הדרכה — הדגמה קצרה של האינטגרציה למנהלים שלך.
- תמיכה — 14 ימים לאחר ההשקה: אנו מתקנים תקלות, עונים על שאלות.
טעויות נפוצות ופתרונות
| טעות | פתרון |
|---|---|
| אחסון מפתחות בקוד | השתמשו ב-import |
| התעלמות ממגבלות | Velo 14 שניות, Headless API 1000 בקשות/דקה. תכננו עם מרווח ביטחון. |
| דילוג על אימות webhook | ללא בדיקת JWT, תוקף יכול להתחזות ל-Wix. |
| סנכרון ללא idempotency | בקשות חוזרות יוצרות כפילויות. הוסיפו בדיקה מבוססת מזהה. |
עלות ולוח זמנים
העלות מחושבת באופן אישי לאחר ניתוח המשימה. קווים מנחים:
- אינטגרציה פשוטה (טופס → CRM) — משעתיים.
- סנכרון קטלוג דו-כיווני — מיום אחד.
- פתרון מורכב עם מספר שירותים — עד 5 ימים.
אנו מבטיחים פעולה יציבה והשקה בזמן. מאחורינו למעלה מ-50 אינטגרציות של Wix עם מערכות CRM, מערכות תשלום ופלטפורמות שיווק.
צרו קשר — נדון במשימה שלכם ונבחר את הפתרון האופטימלי. קבלו ייעוץ.







