Docs / Quoting & booking requests / Customer-initiated booking requests

Customer-initiated booking requests

The portal flow where a client asks for an extra visit or service change, and how you approve or decline.

Booking requests are how existing clients request additional service from within their portal. Instead of calling or texting, they fill a short form; you approve or decline; approved requests auto-schedule.

Client side: requesting a visit

  1. Client logs into the portal and clicks "+ Request a visit."
  2. Picks a request kind: one-time, recurring, or issue report.
  3. Picks a service (from your catalog) and a preferred date window.
  4. Optional notes and photo attachment.
  5. Submits. Request is queued as pending.

Owner side: the queue

The nav shows a Requests link with a badge showing the number of pending requests. Click to see the queue:

  • Each request shows the client, kind, requested service, preferred window, and any notes.
  • Two action buttons: Approve and Decline.

Approving a request

Click Approve. The system:

  1. Looks for an existing active ClientService matching the request's service.
  2. If found, schedules a new Visit against that ClientService on the preferred date.
  3. If not found, creates a one-time ClientService (so the visit has a parent) and a scheduled Visit.
  4. Fires the booking.approved template to the client in their preferred language.

Declining a request

Click Decline. An optional reason textarea opens. Submit to dismiss the request. The booking.declined template fires to the client with the reason visible.

💡
Decline with a reason even if the reason feels awkward. "We don't have capacity that week — can we do the following week?" reads better than silence. Clients appreciate specificity.
Approval of a booking request does not go through quoting. The price comes from the ClientService. If the client is requesting something non-standard (a one-time big cleanup), consider sending a quote instead of auto-approving — the quote gives you price flexibility.

Was this article helpful?

Contact support