Guides
Client Management
Manage your client base — profiles, notes, history, and communication.
Overview
Clients are the end customers who book appointments. Bronjoy maintains a client base per organization — the same person may be a client in multiple organizations with separate profiles.
Creating Clients
Clients are created automatically when they book their first appointment. You can also create them manually:
POST /api/org/clients
Authorization: Bearer your-token
Content-Type: application/json
{
"name": "Maria Garcia",
"phone": "+998901234567",
"email": "[email protected]",
"notes": "New client, referred by Alex"
}
Listing Clients
GET /api/org/clients
Authorization: Bearer your-token
Search and filter:
GET /api/org/clients?search=maria&sort=last_appointment_at&direction=desc
Client Profile
GET /api/org/clients/{client}
The client profile includes:
- Contact information
- Appointment statistics (total, completed, cancelled, no-show)
- Last appointment date
- Notes
Appointment History
View a client's full appointment history with your organization:
GET /api/org/clients/{client}/history
Use this when:
- A client calls to ask about a past appointment
- You're checking a client's cancellation/no-show pattern
- You want to understand a client's preferences
Client Notes
Internal notes are visible only to staff — clients never see them. Use notes to record:
- Preferences and sensitivities ("prefers morning appointments")
- Medical considerations ("allergic to latex")
- Communication notes ("always call, never texts back")
# Add a note
POST /api/org/clients/{client}/notes
Content-Type: application/json
{ "note": "Prefers stylist Alex. Very particular about fringe length." }
# View notes
GET /api/org/clients/{client}/notes
Updating a Client
PUT /api/org/clients/{client}
Content-Type: application/json
{
"phone": "+998909876543",
"email": "[email protected]"
}
Batch Operations
POST /api/org/clients/batch-update
Content-Type: application/json
{
"ids": [10, 11, 12],
"data": { "is_vip": true }
}
Reviews
Clients leave a review after a completed appointment:
GET /api/client/reviews/reviewable
Authorization: Bearer client-token
POST /api/client/reviews
Authorization: Bearer client-token
Content-Type: application/json
{
"appointment_id": 101,
"rating": 5,
"comment": "Great service, will book again!"
}
View and respond to client reviews (staff side):
GET /api/org/reviews
GET /api/org/reviews/stats
GET /api/org/reviews/trend
Respond to a review:
POST /api/org/reviews/{review}/reply
Content-Type: application/json
{
"reply": "Thank you for your feedback! We're so glad you enjoyed the experience."
}
Tips:
- Respond to all reviews, especially negative ones — it shows professionalism
- Keep responses short and personal
- Don't argue with negative reviews; acknowledge and offer a remedy offline
Best Practices
- Never delete clients — deactivate them if needed. Deletion removes appointment history.
- Keep notes up to date — stale notes are misleading. If something changes, update the note.
- Merge duplicates manually — if a client books with different contact info, you may get duplicates. Identify them by name and consolidate via the update endpoint.
- Review the no-show list — clients with repeated no-shows can be flagged. Consider requiring prepayment for known no-shows.