שילוב 1C-Bitrix עם YCLIENTS הזמנות אונליין
השקתם אתר על 1C-Bitrix וחיברתם את YCLIENTS להזמנות אונליין. לקוחות משאירים בקשות דרך הווידג'ט, אבל נתוני ההזמנות נשארים ב-YCLIENTS—הם לא מגיעים ל-CRM של Bitrix. מנהלים מעבירים מידע ידנית, מבזבזים עד 10 דקות לכל הזמנה ומאבדים עד 30% מהלידים. עם 50 הזמנות ביום, מדובר ב-500 דקות—מעל 8 שעות עבודה לעובד אחד. עם ערך עסקה ממוצע, זה אומר הכנסות משמעותיות שאבדו מדי יום. התוצאה: המרה נמוכה יותר ולקוחות לא מרוצים.
הצוות שלנו יישם אינטגרציה לרשת של 12 מכוני יופי: לאחר האוטומציה, זמן הטיפול בהזמנה אחת ירד מ-8 דקות ל-2 שניות—פי 240 מהר יותר מהזנה ידנית—וההמרה למכירה עלתה ב-22%. זה חסך לרשת 8 שעות עבודה ידנית מדי יום. כפי שצוין ב-ויקיפדיה, אינטגרציית CRM עוזרת לנהל נתוני לקוחות ביעילות.
למה סנכרון YCLIENTS ו-Bitrix חשוב
CRM מאוחד הוא לא רק נוחות; זה בסיס לשיווק ואנליטיקה. אתם רואים איזה מקור הביא את הלקוח, אילו שירותים פופולריים, איפה בקשות אובדות. ללא אינטגרציה, הנתונים מפוצלים, ותהליכים עסקיים סובלים מהזנה ידנית. עיבוד Webhook מאפשר תגובה מיידית: לקוח מזמין—ליד כבר ב-CRM.
מה אנחנו משלבים: תרחישים מרכזיים
YCLIENTS מספק REST API v2. ישויות עיקריות: records, clients, services, staff, bookforms. אנחנו נותנים עדיפות להזמנות ולקוחות.
תרחישים:
- הזמנה חדשה ב-YCLIENTS → ליד ב-CRM (יצירה או עדכון)
- לקוח מ-CRM → כרטיס לקוח ב-YCLIENTS (סנכרון דו-כיווני)
- ביטול הזמנה → עדכון סטטוס עסקה (JUNK)
- הצגת שירותי YCLIENTS באתר דרך וידג'ט
YCLIENTS API: אימות
YCLIENTS משתמש ב-Bearer token שמתקבל תמורת שם משתמש וסיסמה. ה-token חי זמן רב (מספר חודשים); אנחנו שומרים אותו בהגדרות המודול.
namespace Local\YClients;
class ApiClient
{
private string $baseUrl = 'https://api.yclients.com/api/v1';
private string $partnerToken;
private string $userToken;
public function __construct()
{
$this->partnerToken = \Bitrix\Main\Config\Option::get('local.yclients', 'partner_token');
$this->userToken = \Bitrix\Main\Config\Option::get('local.yclients', 'user_token');
}
public function request(string $method, string $path, array $data = []): array
{
$url = $this->baseUrl . $path;
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $this->partnerToken . ', User ' . $this->userToken,
'Accept: application/vnd.yclients.v2+json',
'Content-Type: application/json',
],
]);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
} elseif ($method === 'PUT') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = json_decode(curl_exec($ch), true);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode >= 400) {
throw new \RuntimeException("YCLIENTS API error {$httpCode}: " . ($response['meta']['message'] ?? 'unknown'));
}
return $response['data'] ?? $response;
}
} הגדרת Webhook ליצירת לידים
YCLIENTS תומך באירועים: namespace Local\YClients; class ApiClient { private string $baseUrl = 'https://api.yclients.com/api/v1'; private string $partnerToken; private string $userToken; public function __construct() { $this->partnerToken = \Bitrix\Main\Config\Option::get('local.yclients', 'partner_token'); $this->userToken = \Bitrix\Main\Config\Option::get('local.yclients', 'user_token'); } public function request(string $method, string $path, array $data = []): array { $url = $this->baseUrl . $path; $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $this->partnerToken . ', User ' . $this->userToken, 'Accept: application/vnd.yclients.v2+json', 'Content-Type: application/json', ], ]); if ($method === 'POST') { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); } elseif ($method === 'PUT') { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); } $response = json_decode(curl_exec($ch), true); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode >= 400) { throw new \RuntimeException("YCLIENTS API error {$httpCode}: " . ($response['meta']['message'] ?? 'unknown')); } return $response['data'] ?? $response; } } , record_created, record_updated, record_cancelled. הגדירו ב-admin של YCLIENTS: אינטגרציות → Webhook.
// /local/api/yclients-webhook.php
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
$payload = json_decode(file_get_contents('php://input'), true);
$signature = $_SERVER['HTTP_X_YCLIENTS_HOOK_SIGNATURE'] ?? '';
$body = file_get_contents('php://input');
$secret = \Bitrix\Main\Config\Option::get('local.yclients', 'webhook_secret');
if (hash_hmac('sha256', $body, $secret) !== $signature) {
http_response_code(403);
exit;
}
$eventType = $payload['resource'] ?? '';
$data = $payload['data'] ?? [];
match ($eventType) {
'record_created' => (new \Local\YClients\RecordHandler())->onCreate($data),
'record_cancelled' => (new \Local\YClients\RecordHandler())->onCancel($data),
'record_updated' => (new \Local\YClients\RecordHandler())->onUpdate($data),
default => null,
};
http_response_code(200);
מטפל ההזמנות יוצר ליד עם שדות: שם שירות, טלפון, שם לקוח, הערה עם פרטים, ושדות מותאמים אישית לזיהוי ההזמנה ב-YCLIENTS. בביטול, סטטוס העסקה משתנה ל-JUNK.
סנכרון לקוחות מ-Bitrix ל-YCLIENTS
כאשר נוצרת עסקה ב-Bitrix (לקוח מתעניין בשירות), נוצר אוטומטית לקוח ב-YCLIENTS. חיפוש לפי טלפון—אם נמצא, עדכון הכרטיס; אם לא, יצירת חדש. מזהה הלקוח נשמר בשדה עסקה מותאם אישית.
אפשרויות אינטגרציה: טבלת השוואה
| שיטה | מתי להשתמש | מורכבות | לוח זמנים |
|---|---|---|---|
| Webhooks | צורך בתגובה מיידית לאירועים ב-YCLIENTS | נמוכה | 1–2 שבועות |
| Pull API | צורך בייצוא נתונים תקופתי (פעם בשעה) | בינונית | 2–3 שבועות |
| סנכרון דו-כיווני | עקביות נתונים מלאה | גבוהה | 3–5 שבועות |
מה כלול בעבודה (תוצרים)
- תיעוד אינטגרציה מפורט (סכמות נתונים, תצורות)
- קוד מקור של המודול עם הערות
- הגדרת Webhook ו-token
- יצירת שדות מותאמים אישית ב-CRM
- בדיקות בסביבת staging
- הדרכת מנהלים (שעה)
- אחריות על קוד ל-6 חודשים ותמיכה לאחר השקה
מדריך הגדרת webhook שלב-אחר-שלב (למנהלים)
- קבלו partner token ב-admin של YCLIENTS (הגדרות → API).
- שמרו את ה-token ואת סוד ה-webhook בהגדרות המודול.
- הציבו את קובץ המטפל בכתובת
client_created. - ב-admin של YCLIENTS, הוסיפו את כתובת ה-webhook (אינטגרציות → Webhook → הוספה).
- בדקו על ידי יצירת הזמנה—ליד חדש אמור להופיע ב-CRM.
שלבים אופייניים באינטגרציה
| שלב | מה אנחנו עושים | לוח זמנים |
|---|---|---|
| ניתוח | סקירת האתר הנוכחי, YCLIENTS, תרחישים | 1–2 ימים |
| עיצוב | יצירת סכמת נתונים, הגדרת שדות מותאמים אישית | יום אחד |
| פיתוח | כתיבת API client, מטפל webhook, סנכרון | 5–10 ימים |
| בדיקות | אימות כל התרחישים, טיפול במקרי קצה | 2–3 ימים |
| פריסה | פריסה לסביבת production, הגדרת ניטור | יום אחד |
לוחות זמנים ואיך להזמין
אינטגרציה בסיסית (webhook → ליד) אורכת 1–2 שבועות. סנכרון דו-כיווני עם תצוגת שירותים אורך 3–5 שבועות. עלות הפרויקט מחושבת באופן אישי לפי מורכבות. המחיר הסופי נקבע לאחר הערכה מפורטת.
יש לנו ניסיון של מעל 7 שנים באינטגרציות Bitrix ו-YCLIENTS, עם 40+ פרויקטים למכוני יופי, מרפאות ומרכזי כושר.
קבלו ייעוץ להערכת לוח הזמנים והמורכבות לפרויקט שלכם. הזמינו אינטגרציה ונכין תוכנית אוטומציה מפורטת.

