Owner: Dev Team | Last Updated: 2026-02-21 | Status: Current
Managing potential customers (leads) -- Booking's CRM functionality.
A Lead is a potential customer who has shown interest in booking. The lead system provides a complete cycle from initial contact to closing a sale.
New (1) → In Progress (2) → Payment (4) → Closed (3)
↓
Closed (3) [if not converted]
| Status |
Value |
Description |
| New |
1 |
New lead, not yet processed |
| In Progress |
2 |
Manager is working on the lead |
| Closed |
3 |
Closed (successfully or unsuccessfully) |
| Payment |
4 |
Awaiting payment |
| Step |
Value |
Description |
| Payment |
1 |
Payment step |
| Passenger Detail |
2 |
Passenger details |
| Tour Selection |
3 |
Tour selection |
| Field |
Type |
Description |
lead_uuid |
string |
Unique UUID |
first_name |
string |
First name |
last_name |
string |
Last name |
phone |
string |
Phone |
email |
string |
Email |
status |
integer |
Status (1-4) |
step |
integer |
Current step (1-3) |
assigned_id |
integer |
Assigned manager |
source |
string |
Lead source |
abadon_reason |
string |
Abandonment reason |
note |
text |
Note |
is_ready |
boolean |
Ready for processing |
tags |
json |
Tags |
Each lead can be associated with multiple Experiences:
| Field |
Type |
Description |
lead_id |
integer |
Reference to lead |
experience_id |
integer |
Reference to Experience |
passengers |
json |
Passenger data |
experience_date |
date |
Desired date |
Full history of interactions with a lead:
| Type |
Value |
Description |
| System |
1 |
Automatic entries (creation, status changes) |
| Manager Comment |
2 |
Manager comments |
¶ Abandoned Leads Processing
# Hourly command
php artisan leads:process-abandoned
Automatically processes leads that have not received a response.
# Daily at 09:00
php artisan leads:digest
Sends a daily leads summary to assigned managers.
Each manager can configure the digest delivery frequency:
| Field |
Description |
schedule_period |
Delivery period (enum: LeadSchedulePeriod) |
last_sent_at |
Last sent time |
| Method |
Endpoint |
Description |
| PUT |
/api/v1/leads/{lead} |
Update lead (from embed) |
| Method |
Endpoint |
Description |
| GET |
/rest/leads |
List leads |
| POST |
/rest/leads |
Create lead |
| GET |
/rest/leads/{id} |
Lead details |
| PUT |
/rest/leads/{id} |
Update lead |
| DELETE |
/rest/leads/{id} |
Delete lead |
| File |
Purpose |
app/Models/Lead.php |
Lead model |
app/Models/LeadExperience.php |
Lead-Experience association |
app/Models/LeadHistory.php |
Lead history |
app/Models/LeadScheduleSetting.php |
Schedule settings |
app/Services/LeadService.php |
Business logic |
app/Observers/LeadObserver.php |
Model observer |
app/Console/Commands/ProcessAbandonedLeads.php |
Command |
app/Console/Commands/SendLeadsDigest.php |
Command |
app/Http/Controllers/Web/LeadController.php |
Web controller |
resources/js/pages/leads/ |
Frontend pages |
| Date |
Author |
Change |
| 2026-02-21 |
Documentation Team |
Initial creation |
Up: Guides