ניהול לידים, הצעות מחיר והסכמים
הפיכת ליד ללקוח פעיל בלי לעזוב את Shipnest: הצעת מחיר מעוצבת עם PDF, חתימה דיגיטלית עם תוקף משפטי (חוק חתימה אלקטרונית, תשס״א-2001), הקמת לקוח אטומית עם מחירון ופורטל — וגם השעיה אם צריך.
עודכן: 10 ביולי 2026
מה זה כולל
מודול ה-CRM של Shipnest מקים זרימה רציפה בין 4 ישויות חדשות — ליד, הצעת מחיר, הסכם ו-לקוח — ומחבר ביניהן כך שאינך צריך להעתיק נתונים ידנית.
הזרימה בקצרה
הפעלת המודולים
המודולים מוצגים פר-טננט. מנהל הפלטפורמה מפעיל אותם דרך /admin/tenants/[id] בעריכת הטננט:
- מודול הצעות מחיר — מציג את התפריט "הצעות מחיר" תחת קבוצת הלקוחות בסיידבר, ומאפשר ל-API של
/api/quotesלעבוד. - מודול הסכמים וחתימה דיגיטלית — תלוי בהפעלת הצעות מחיר. מציג את התפריט "הסכמים" ומאפשר את
/api/contracts. - ספק חתימה דיגיטלית — דרופדאון שמופיע כש-הסכמים פעיל. כרגע זמין רק חתימה פנימית (Shipnest); אינטגרציה עם חשבונית ירוקה מסומנת "בקרוב".
לידים
לידים נשמרים ב-/leads עם שם, אימייל, טלפון, מקור, סכום צפוי, מועד מעקב הבא, וסוכן מטפל (אופציונלי). הסטטוס נע על הסקלה:
NEW → IN_TREATMENT → QUOTED → CONTRACT_SENT → CONTRACT_SIGNED → CONVERTED
↑ ↑
ידנית/מהפעלה אוטומטית מהזרימהכשליד מקבל הצעת מחיר/הסכם/חתימה — הסטטוס שלו מתקדם אוטומטית ופעולה נוצרת ב-LeadActivity. אין צורך לעדכן ידנית.
הצעות מחיר
יצירת הצעת מחיר מ-/quotes או מתוך כפתור "צור הצעת מחיר" בפעולות שורת הליד. ההצעה כוללת תעריפי בסיס (מסירה / איסוף / החזרה / חבילה נוספת / תוספת גוביינא / תוספת יעד חריג), הערות חופשיות, ותנאי שירות שיוצגו ללקוח.
זרימת חיים של הצעה
- DRAFT — נוצרת ועריכה חופשית. עוד לא ראתה אור.
- לחיצה על "שלח ללקוח" פותחת דיאלוג עם בחירת ערוצים: אימייל ו/או WhatsApp (דרך חיבור ה-Green API של העסק). המערכת מפיקה PDF בעברית RTL (פונט Rubik, תעריפים בש״ח, תנאי שירות, מספור עמודים), מעלה ל-Supabase Storage, יוצרת טוקן צפייה ציבורי של 32 בייטים, ושולחת ללקוח קישור.
- SENT — ההצעה אינה ניתנת יותר לעריכה. הלקוח מגיע לעמוד ציבורי
/q/[token]שמציג את ההצעה ממותגת עם לוגו הטננט. - VIEWED — ברגע שהלקוח פותח את הקישור בפעם הראשונה, הסטטוס מתקדם אוטומטית ו-
viewedAtמסומן. - ACCEPTED / REJECTED — הלקוח מאשר או דוחה את ההצעה ישירות מהעמוד הציבורי (בדחייה — עם סיבה חופשית). יוצר ההצעה מקבל מייל התראה מיידי, והסטטוס והסיבה מוצגים בעמוד ההצעה.
- EXPIRED — הצעה שחלף תאריך התוקף שלה מסומנת אוטומטית (קרון יומי).
- WITHDRAWN — "משוך הצעה" מבטל הצעה שנשלחה ומכבה את הקישור הציבורי מיידית (למשל אחרי טעות במחיר).
מספור הצעות ושכפול
QUO-YYYY-NNNN פר טננט ופר שנה (לדוגמה QUO-2026-0001). פעולת "שכפל הצעה" יוצרת טיוטה חדשה עם מספר חדש ואותו תוכן — הדרך לעדכן הצעה שכבר נשלחה, נדחתה או פגה.הסכם ניתן ליצור משלושה מקורות:
- מהצעת מחיר — הדרך המומלצת. בעמוד ההצעה (כשסטטוס ≠ DRAFT) יש כפתור "צור הסכם". התעריפים ותנאי השירות מועתקים אוטומטית מההצעה.
- מליד — לקפיצה מעל שלב הצעת המחיר.
- מלקוח קיים — לעדכון מחירון של לקוח שכבר אצלך במערכת.
זרימת חיים של הסכם
- DRAFT — עריכה חופשית של תעריפים, תקופת תוקף, חידוש אוטומטי, ותנאי שירות.
- SENT_FOR_SIGNATURE — בלחיצה על "שלח לחתימה" נפתח דיאלוג השליחה: נושא וגוף מייל מותאמים, CC לעותק החתום, התראת צפייה, תזכורות אוטומטיות, נעילת קישור, ואפשרות לשלוח את קישור החתימה גם ב-WhatsApp. המערכת מפיקה PDF טיוטה, שולחת ללקוח לינק לעמוד החתימה
/contracts/[token]/sign, וסוגרת את ההסכם לעריכה. - VIEWED — מסומן אוטומטית בכניסה הראשונה של הלקוח (ומפעיל התראת צפייה לסוכן אם הופעלה).
- SIGNED — אחרי שהלקוח (וכל הערבים, אם הוגדרו) חותמים, המערכת:
- שומרת את תמונות החתימה (PNG) ב-Supabase — חותם + כל ערב בנפרד
- מפיקה PDF חתום סופי עם החתימות משובצות + פרטי החותם + IP + UA + הצהרה משפטית
- שומרת טביעת אצבע SHA-256 של ה-PDF החתום ושל נוסח התנאים — הוכחת שלמות ראייתית
- שולחת מייל אישור ללקוח עם קישור הורדה מאובטח, ומייל התראה לסוכן ששלח
- כותבת רשומת ContractEvent מלאה (כולל נוסח ההסכמה שאושר) ל-audit log
- ACTIVE — לאחר ההמרה ללקוח (שלב 4).
- CANCELLED / TERMINATED / EXPIRED — "בטל הסכם" עוצר הסכם שנשלח בטעות ומכבה את קישור החתימה מיידית; "סיים הסכם" סוגר הסכם חתום/פעיל; וקרון יומי מפקיע אוטומטית הסכמים שקישורם ננעל או שתקופתם הסתיימה ללא חידוש אוטומטי.
חתימת המוביל (חתימת נגד)
ב-/settings/contracts ("הסכמים וחתימה" בתפריט ההגדרות) ניתן להגדיר את חתימת המוביל — ציור על המסך או העלאת קובץ, עם שם החותם. מרגע ההגדרה, כל הסכם שנשלח לחתימה יוצא כשהוא כבר חתום בצד המוביל: החתימה מוטבעת בשדה "חתימת המוביל" בדף החתימה הציבורי וב-PDF, עם מועד החתימה (מועד השליחה). כך ההסכם הסופי חתום דו-צדדית.
מה הלקוח רואה בעמוד החתימה
העמוד הציבורי ב-/contracts/[token]/sign ממותג עם לוגו הטננט, מציג את מסמך ההסכם המלא — צדדים ("בין / לבין"), פתיח "הואיל", סעיפים ממוספרים, נספח תעריפים, נספח ערבות אישית ונספח אחריות מורחבת לחבילות — ודורש מהלקוח:
- שם מלא (חובה)
- אימייל (חובה)
- תעודת זהות / ח.פ. (חובה — מאומת באלגוריתם ספרת הביקורת הישראלי הרשמי, 9 ספרות)
- טלפון (אופציונלי)
- חתימה — שדה ציורי (signature pad) שתומך בעכבר ובמסך מגע
- חתימת כל ערב — אם ההסכם כולל ערבים (נספח ב׳), כל ערב חותם בשדה נפרד. לא ניתן לחתום על ההסכם בלי חתימות כל הערבים — ערבות ללא חתימת הערב אינה אכיפה.
- אישור קריאה — checkbox עם נוסח הסכמה מנוסח ומתועד (versioned)
המערכת לוכדת אוטומטית את כתובת ה-IP וה-User Agent ושומרת אותם ב-Contract וב-ContractEvent לצרכי תיעוד משפטי. ההורדה של ה-PDF החתום מתבצעת בקישורים מאובטחים קצובי-זמן — לא ב-URL ציבורי קבוע.
חתימה אלקטרונית רגילה — תקפה משפטית
ל-3 רמות חתימה דיגיטלית בחוק (רגילה / מאובטחת / מאושרת), הזרימה הזו מתאימה לחוזי שירות מסחריים סטנדרטיים. למצבים שדורשים חתימה מאושרת (למשל מקרקעין או צוואות) — נדרשת אינטגרציה עם גורם מאשר רשמי, ולא נתמכת כיום.
המרה ללקוח פעיל
לאחר חתימת ההסכם — בעמוד /contracts/[id] מופיע כפתור "המר ללקוח פעיל". הוא פותח דיאלוג עם:
- פרטי הלקוח — שם, אימייל, טלפון, כתובת, ולקוח אב (אופציונלי). הכל ממולא אוטומטית מנתוני החתימה.
- גישה לפורטל — checkbox שאם מסומן, יוצר משתמש פורטל ראשון (Owner) ושולח לו מייל הזמנה.
בלחיצה על "צור לקוח והפעל" — הכל קורה בטרנזקציה אחת אטומית:
- יוצר/מעדכן
Customerעם status=ACTIVE - יוצר
CustomerPricingProfileעם תעריפי ההסכם (באגורות) - יוצר
CustomerPricingRuleלכל כלל מותאם בהסכם - מעדכן
Contract.status=ACTIVEומקשר לסטומר - מעדכן
Lead.status=CONVERTEDו-convertedCustomerId - שולח invite לפורטל (אם נבחר) — מחוץ לטרנזקציה, כדי שכשלון מייל לא יבטל את ההמרה
ההמרה אטומית
השעיית לקוחות
כשיש בעיה עם לקוח (חוב פתוח, הפרת תנאים) — בעמוד הלקוח יש כפתור "השעה" שפותח דיאלוג עם שדה סיבה חובה (לפחות 5 תווים). ההשעיה:
- מסמנת
status=SUSPENDEDו-isActive=false - שומרת את הסיבה, מי השעה ומתי
- שולחת מייל ללקוח עם הסיבה (ניתן לדלג עם checkbox)
- מציגה באנר אדום בולט בראש כרטיס הלקוח
מאותו רגע — יצירת משלוחים חדשים חסומה:
- במסך יצירת משלוח (admin + portal) — הלקוח לא מופיע בדרופדאון, וגם אם מנסים לעקוף → 403 עם הודעה ברורה.
- ב-API ציבורי
POST /api/v1/shipments— מחזיר 403. - משלוחים קיימים ממשיכים להיות מטופלים כרגיל.
ביטול השעיה — בלחיצה אחת. הלקוח חוזר למצב ACTIVE ושדות ההשעיה מתאפסים.
יומן אירועים
כל פעולה משמעותית על הסכם נכתבת כ-ContractEvent immutable עם:
- סוג האירוע (
CREATED/SENT/VIEWED/SIGNED/ACTIVATED/REMINDER_SENT/CANCELLED/TERMINATED/EXPIRED) - סוג הפועל (
STAFF/CUSTOMER/SYSTEM/PROVIDER) - מזהה הפועל, IP, User Agent, ו-metadata חופשי
- timestamp
היומן מוצג בכרטיס "יומן אירועים" בעמוד ההסכם.
תכניות עתידיות
- אינטגרציה עם חשבונית ירוקה — Proposals Plus כספק חתימה. ממתין לבירור API איתם.
- תבניות הסכמים — ContractTemplate CRUD ב-/settings/contracts/templates (כרגע יש default terms קבועים בקוד).
- בחירת ספק חתימה per-contract — override של ברירת מחדל של הטננט.
- Addendum / חוזה משנה — קישור הסכם לאב.