מפת הטבלאות המרכזיות
השאלה הראשונה של כל אינטגרציה היא לא “איך כותבים” אלא “לאן כותבים”. העמוד הזה עונה עליה.
הטופולוגיה בשורה אחת
Section titled “הטופולוגיה בשורה אחת”Accounts היא הרכזת. כמעט כל טבלה עסקית אחרת מקושרת אליה בשדה Pointer בשם AccountId, וטבלאות “פריט העבודה” (Tasks, Activities, Notes, Emails, SMS, Conversations) נושאות את אותה חבילת הקשר: AccountId · ContactId · SaleId · CaseId. כך אפשר לתלות כל משימה או תקשורת בכל רמה.
├─ Contacts.AccountId
├─ Sales.AccountId ──> SaleRows.SaleId
├─ Cases.AccountId ──> Tasks.CaseId
├─ Tasks.AccountId
└─ Activities.AccountId
וכל אחת מטבלאות פריט העבודה נושאת גם ContactId ו‑SaleId, כך שאותה משימה יכולה להיתלות בלקוח, באיש הקשר ובעסקה בו־זמנית.
1 · Accounts — לקוחות וגם לידים
Section titled “1 · Accounts — לקוחות וגם לידים”הטבלה המרכזית. אין טבלת “לידים” נפרדת: שדה בוליאני יחיד מפריד ביניהם.
IsAccount |
המשמעות |
|---|---|
false |
ליד — פנייה שעדיין לא הפכה ללקוח |
true |
לקוח |
המרה של ליד ללקוח = הפיכת הדגל + חותמת ב‑LeadConversionDate (שם השדה בבסיס המוצר; אצל חלק מהלקוחות קיים גם ConversionDate).
השדות שאינטגרציה נוגעת בהם בפועל
Section titled “השדות שאינטגרציה נוגעת בהם בפועל”| שדה | טיפוס | לְמה |
|---|---|---|
Name |
String | שם תצוגה (חברה או אדם) |
F_name · L_name |
String | שם פרטי / משפחה, ברשומות מסוג אדם |
PhoneNumber |
String | הטלפון הקנוני — מנועי זיהוי הכפילויות ושיוך שיחות עובדים מולו |
Phone |
String | טלפון נוסף. קיים בחלק מהמערכות בלבד |
Email |
String | |
CompanyId |
String | ח.פ / ע.מ — גם מפתח הזיהוי idnum ב‑web2table |
Address · City · State · Country · PostalCode |
String | City הוא String בבסיס אבל Pointer→CityList אצל חלק מהלקוחות |
IsAccount |
Boolean | ליד מול לקוח |
StatusId |
Pointer→AccountStatuses |
סטטוס לקוח |
LeadStatusId |
Pointer→LeadStatuses |
סטטוס ליד |
LeadSourceId |
Pointer→LeadSource |
מקור הליד |
TypeId |
Pointer→AccountTypes |
סוג לקוח |
OwnerId · LeadOwnerId |
Pointer→_User |
אחראי לקוח / אחראי ליד |
ExternalId |
String | מפתח המערכת שלכם — השדה המיועד לשמור מזהה זר |
Comment |
HTML/XML | הערות טקסט עשיר |
dontSendSms · dontSendEmail · dontSendWhatsApp |
Boolean | הסרה מדיוור לפי ערוץ — כבדו אותם בכל שליחה |
updatedByTrigger |
String | שומר הלולאה של הטריגרים; לא לכתוב |
2 · Contacts — אנשי קשר
Section titled “2 · Contacts — אנשי קשר”אנשים המשויכים ללקוח (דפוס B2B). במערכות B2C הטבלה לרוב אינה בשימוש — האדם יושב ישירות על Accounts.
שדות מפתח: FirstName · LastName · Name · Email · PhoneNumber · CellPhone · Position · AccountId (הקישור המגדיר) · OwnerId · אותם דגלי הסרה מדיוור.
3 · Sales — מכירות, ו‑SaleRows — שורות
Section titled “3 · Sales — מכירות, ו‑SaleRows — שורות”הטבלה המותאמת ביותר במוצר. במערכת חדשה ונקייה נמדדו 25 שדות (כולל שישה שדות מערכת); בסביבת ייחוס מותאמת — 133. אל תניחו כלום.
| שדה | טיפוס | לְמה |
|---|---|---|
Name |
String | שם העסקה |
SaleStatusId |
Pointer→SaleStatuses |
שלב בפייפליין. ב‑SaleStatuses יש Probability:Number לכל שלב |
Total |
Number | הסכום הסופי (אחרי הנחה) |
TotalBeforeDiscount · Discount · DiscountValue · DiscountType |
Number / String | בלוק ההנחה. DiscountType הוא "%" או סכום |
ClosingDate |
Date | תאריך סגירה צפוי/בפועל |
CloseDate |
Date | קיים במקביל ל‑ClosingDate בחלק מהמערכות — בררו איזה מהם הטופס בפועל משתמש בו |
AccountId · ContactId · OwnerId |
Pointer | לקוח · איש קשר · איש מכירות |
ReasonForLost |
String | סיבת ההפסד. IsWon / IsLost אינם בבסיס המוצר — אם קיימים אצלכם, הם תוספת של הלקוח |
Probability |
Number | הסתברות הסגירה — קיים גם על העסקה עצמה, לא רק על השלב |
SaleRows הן שורות הפריטים: SaleId · ProductId · Description · Quantity · PricePerUnit · Discount · Total · AccountId (מפתח מנורמל לאחור).
4 · Cases — פניות / קריאות שירות
Section titled “4 · Cases — פניות / קריאות שירות”| שדה | טיפוס | לְמה |
|---|---|---|
Name |
String | נושא הפנייה. בבסיס המוצר זה השדה היחיד; אם במערכת שלכם קיימים גם Title / Subject — בררו איזה מהם הטופס מציג |
Description |
String | גוף הפנייה |
Number |
AutoIncrement | מספר הפנייה. התייחסו אליו כלקריאה בלבד — אין אכיפה, וכתיבה מפורשת תשבש את המונה. בחלק מהמערכות השדה נקרא CaseNum |
StatusId |
Pointer→CaseStatuses |
הסטטוס. ל‑CaseStatuses יש StateId→CaseStates שנותן סמנטיקת פתוח/סגור, ו‑Cases עצמה נושאת עותק StateId→CaseStates |
PriorityId |
Pointer→CasePriorities |
דחיפות |
CaseTypeId · SubTypeId |
Pointer | סוג ותת‑סוג (זוג אב‑בן) |
AccountId · ContactId |
Pointer | |
OwnerId · CurrentUserId |
Pointer→_User |
אחראי / מטפל נוכחי |
Email · PhoneNumber |
String | תמונת מצב של פרטי הפונה (טפסי web2case) |
מודול ה‑SLA מוסיף טבלאות הגדרה (SLASettings, BusinessHours) ושדות מעקב; הם מנוהלים בטריגרים ולא נכתבים ישירות מאינטגרציה.
5 · Tasks — משימות
Section titled “5 · Tasks — משימות”Name · Description · Date (תאריך היעד בבסיס) · ReminderDateTime · PriorityId→TaskPriorities · StatusId→TaskStatuses · TypeId→TaskTypes · OwnerId→_User · חבילת ההקשר AccountId / ContactId / SaleId / CaseId / ActivityId.
בחלק מהמערכות שדה היעד נקרא DueDate והנושא Subject. שלפו סכימה.
6 · Activities — פעילויות ופגישות
Section titled “6 · Activities — פעילויות ופגישות”Name · StartTime · EndTime · Location · StatusId→ActivityStatuses · TypeId→ActivityTypes · OwnerId · Users:Array (מזהי המשתתפים) · UserNames:Array · חבילת ההקשר המלאה.
בבסיס המוצר קיים StatusId→ActivityStatuses בלבד, אבל אצל חלק מהלקוחות קיים גם שדה Status במקביל. שלפו סכימה ובררו איזה מהם הטופס משתמש בו לפני שאתם כותבים.
7 · Products — מוצרים
Section titled “7 · Products — מוצרים”Name · Price:Number · OriginalPrice · CatalogNumber · Active:Boolean · Inventory:Number · Category→ProductCategories (שימו לב — בלי סיומת Id) · תמונות ותיאורים (PreviewImage:File, ProductDescription:HTML/XML).
משמשת גם את שורות המכירה, גם את שורות החשבונית, וגם את הקורסים ב‑MyCollege.
8 · טבלאות lookup — כל dropdown הוא טבלה
Section titled “8 · טבלאות lookup — כל dropdown הוא טבלה”זו אולי ההפתעה הגדולה ביותר למי שבא מ‑CRM אחר: אין enum. כל רשימה נפתחת היא טבלה בת 6 שדות מערכת + Name:String.
| הטבלה | מה בה | ניואנס |
|---|---|---|
LeadStatuses |
סטטוסי ליד | נושאת StateId→AccountStatusesStates למצב פתוח/סגור. ברירות מחדל: ליד חדש · ליד בטיפול · ליד כפול · … |
AccountStatuses |
סטטוסי לקוח | ברירות מחדל: פעיל · נכשל/מאגר · לקוח · ליד |
SaleStatuses |
שלבי הפייפליין | Probability:Number לכל שלב מזין את התחזית |
CaseStatuses |
סטטוסי פנייה | StateId→CaseStates — עליו נשענת שעון ה‑SLA |
TaskStatuses · TaskPriorities · TaskTypes |
משימות | |
ActivityStatuses · ActivityTypes |
פעילויות | |
LeadSource · AccountTypes · CasePriorities · CaseTypes · CaseSubTypes |
מקורות וסוגים | CaseSubTypes.TypeId הופך אותה לרשימה תלויה |
שלוש השלכות מעשיות:
- הוספת ערך לרשימה = יצירת שורה (
POST /parse/classes/LeadStatuses), לא עריכת enum. - סינון לפי ערך דורש את ה‑objectId, לא את התווית. שלפו קודם את טבלת ה‑lookup ובנו מיפוי.
- ה‑objectId של סטטוס אינו נייד בין מערכות. מזהה שעבד במערכת אחת יחזיר רשומה אחרת — או כלום — במערכת אחרת.
# בניית מיפוי "תווית → objectId" פעם אחת, בתחילת האינטגרציהcurl -sS -G "https://api.mbapps.co.il/parse/classes/LeadStatuses" \ -H "X-Parse-Application-Id: $APP_ID" \ -H "X-Parse-API-Key: $API_KEY" \ --data-urlencode 'keys=Name' \ --data-urlencode 'limit=200'const APP_ID = "הדביקו-כאן";const API_KEY = "הדביקו-כאן";
// בניית מיפוי "תווית → objectId" פעם אחת, בתחילת האינטגרציהconst params = new URLSearchParams({ keys: "Name", limit: "200" });const res = await fetch(`https://api.mbapps.co.il/parse/classes/LeadStatuses?${params}`, { headers: { "X-Parse-Application-Id": APP_ID, "X-Parse-API-Key": API_KEY, },});const data = await res.json();import requests
# בניית מיפוי "תווית → objectId" פעם אחת, בתחילת האינטגרציהAPP_ID = "הדביקו-כאן"API_KEY = "הדביקו-כאן"
res = requests.get( "https://api.mbapps.co.il/parse/classes/LeadStatuses", headers={ "X-Parse-Application-Id": APP_ID, "X-Parse-API-Key": API_KEY, }, params={"keys": "Name", "limit": 200},)data = res.json()$appId = "הדביקו-כאן";$apiKey = "הדביקו-כאן";
// בניית מיפוי "תווית → objectId" פעם אחת, בתחילת האינטגרציה$query = http_build_query(["keys" => "Name", "limit" => 200]);$ch = curl_init();curl_setopt_array($ch, [ CURLOPT_URL => "https://api.mbapps.co.il/parse/classes/LeadStatuses?" . $query, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-Parse-Application-Id: $appId", "X-Parse-API-Key: $apiKey", ],]);$response = curl_exec($ch);curl_close($ch);9 · טבלאות המערכת שמפתח פוגש
Section titled “9 · טבלאות המערכת שמפתח פוגש”| הטבלה | מה יש בה | הערה |
|---|---|---|
_User |
משתמשים. בבסיס: name, status→UserStatuses, profile_image, last_success_login, emailVerified, language. השדות phone, extension, job, active ו‑isPortalUser נוצרים ברגע שכותבים אליהם |
ראו משתמשים |
_Role |
תפקידים. שני שדות Relation: users→_User ו‑roles→_Role (תפקיד בתוך תפקיד) — היחידים במוצר |
Get-Schema {"className":"_Role"} מחזיר {} עליה; דורש REST עם Master Key |
_Session |
סשנים פעילים: sessionToken, user, expiresAt, createdWith, loginWithMasterKey, restricted |
Master Key בלבד |
_Timeline |
יומן שינויי הרשומות. שאילתה לפי objectIdValue + objectClass |
הרישום הוא opt‑in לכל טבלה, וMaster Key כותב בה בחופשיות — ראו יומנים וראיות |
_syslogTriggers |
יומן ריצת הטריגרים — כולל error |
התחנה הראשונה כש“האוטומציה לא רצה” |
_syslogSMS |
יומן ספק ה‑SMS | ריק במערכת חדשה — השדות נוצרים עם ההודעה הראשונה |
_syslogCampaignSMS · _syslogCampaignWA · _syslogCampaignEmails |
יומני שליחה של MyCampaigns לכל ערוץ | |
SMS |
הודעות SMS יוצאות עם ההקשר העסקי (AccountId, CaseId…) |
טבלה עסקית, לא _‑מערכת |
CallRecords |
CDR מהמרכזייה: time, caller, duration, record (URL הקלטה), AccountId |
שיוך לפי 7 הספרות האחרונות של הטלפון |
_Notification |
פעמון ההתראות בממשק | טריגרים מסוג notification כותבים לכאן |
_AutoIncrementValues |
מצב המונים של שדות AutoIncrement — שורה לכל שדה (objectId: "Cases_Number", Table, Field, Count) |
אל תערכו — יוצר מספרים כפולים. נשלפת ב‑GET /parse/classes/_AutoIncrementValues. המונה מתקדם רק כשהשרת מקצה מספר; כתיבה מפורשת לשדה אינה מעדכנת אותו |
Config |
הגדרות אינטגרציה לכל מערכת — כולל AcceptWebLeads ו‑AcceptWebToTable |
הייתה חסומה מ‑MCP בגרסאות שרת ישנות — עכשיו נגישה גם משם (Master Key); ב‑REST נגישה לכל אישור עם הרשאת קריאה |
מה לא יושב ב‑Parse בכלל
Section titled “מה לא יושב ב‑Parse בכלל”עמודים, תוכן עמודים ותפריטים מאוחסנים בצד ה‑site ולא כטבלאות Parse. לכן המזהים שלהם הם 24‑hex של MongoDB ולא objectId בן 10 תווים, והגישה אליהם היא רק דרך כלי ה‑MCP הייעודיים.
10 · איך בוחרים טבלה — טבלת החלטה
Section titled “10 · איך בוחרים טבלה — טבלת החלטה”| מה קרה בעולם | הטבלה | הערה |
|---|---|---|
| מישהו השאיר פרטים בדף נחיתה | Accounts עם IsAccount:false |
דרך getlead או web2table — לא ב‑REST |
| נפתחה הזדמנות מכירה | Sales + SaleRows |
חובה AccountId |
| לקוח דיווח על תקלה | Cases |
Number נקבע בשרת כשלא שולחים אותו — אל תשלחו |
| צריך לזכור להתקשר | Tasks |
|
| נקבעה פגישה | Activities |
StartTime + EndTime |
| הגיעה שיחה למרכזייה | CallRecords |
נכתב בדרך כלל על ידי אינטגרציית המרכזייה |
| נשלחה הודעה ללקוח | SMS / ConversationMessages / Emails |
אין יומן הודעות מאוחד — ראו יומנים |
המשך מכאן
Section titled “המשך מכאן”- סכימות — לשלוף את הרשימה האמיתית של המערכת שמולה אתם עובדים
- סוגי נתונים — באיזה פורמט לכתוב לכל שדה
- מילון מונחים — איך הלקוח קורא לטבלה שאתם מחפשים
- עבודה עם רשומות — ה‑CRUD עצמו
- יומנים וראיות — איפה מסתכלים כשצריך להוכיח מה קרה