Back to the build library
Legal
Standard

Consultation Booking with Deposit

Paid consultations booked online, conflict-checked before payment is taken, with reminders that cut no-shows and a credit that converts.

Industry
Legal
Build effort
Standard
Typical time to launch
1–2 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

A free consultation calendar fills up and then empties out. Roughly a third of the people who book one do not turn up, and a good share of those who do turn up were never going to retain anyone. They wanted a second opinion, or a sanity check, or forty-five minutes of free advice they could act on themselves. The lawyer gives it, because that is the instinct, and then the slot is gone. Partner time is the only inventory a small firm has, and a free calendar gives it away to whoever clicks first.

The usual response is to stop offering consultations, or to make them so hard to book that only the determined get through. Both lose good clients. The person with a genuine, urgent, well-funded matter is often the busiest person in the queue, and if booking requires three phone calls during business hours they will go elsewhere.

Charging for the consultation solves both problems at once and introduces a third. A fee filters out the casual inquiry and makes the appointment real enough to keep, and crediting the fee against the engagement means a serious client pays nothing extra. But the moment money changes hands the firm has taken a payment from someone it has not conflict-checked, may not be able to represent, and may have to refund. A deposit workflow built in the wrong order creates a problem bigger than the one it solved.

This build takes the fee, but only after the conflict check clears, with a written fee and refund policy the prospect has seen and agreed to before the card is charged.

02

What gets built

Pipeline and stages

One consultation pipeline. The order of the stages is the design: screening and conflict clearance both sit before payment.

  • Inquiry - captured and acknowledged
  • Screened - practice area, jurisdiction and basic fit confirmed
  • Conflict Cleared - the gate; nothing downstream can run without it
  • Slot Held - a time is reserved, payment not yet taken, hold expires automatically
  • Paid - consultation fee received, appointment confirmed
  • Consultation Held
  • Engagement Offered
  • Engaged - fee credited against the retainer
  • Declined by Firm - with a required reason
  • Abandoned at Payment - held a slot, never paid, slot released
  • Refunded - with a required refund reason

Calendars

  • Paid Consultation - 45 minutes, per-lawyer availability, 24-hour minimum notice, 15-minute buffer after each slot. Configured so that booking creates a hold rather than a confirmed appointment, and the hold converts only on successful payment.
  • Short Paid Consultation - 20 minutes, a lower-fee option for narrow questions, so the firm has an answer other than no for the small matter
  • Video Consultation - same durations, auto-generating a meeting link, used for out-of-town prospects within the firm licensed jurisdictions
  • Engagement Signing - 20 minutes, optional
  • Hold duration is 30 minutes. A held slot that is not paid for within 30 minutes returns to availability automatically, so the calendar cannot be blocked by abandoned checkouts.

Custom fields

  • practice_area, jurisdiction_state, matter_summary (prospect own words, verbatim), opposing_party_names, related_party_names, prior_counsel
  • conflict_status - not started, pending, cleared, blocked, waiver required - and conflict_checked_by, conflict_checked_at
  • consultation_type - standard, short, video
  • fee_tier - an option field naming the tier (standard, short, complex), never an amount written into automation copy
  • payment_status - unpaid, authorized, paid, failed, refunded, waived
  • payment_reference, payment_taken_at, invoice_number
  • fee_policy_accepted and fee_policy_accepted_at - a hard requirement before any charge; the checkout cannot proceed without it
  • fee_waived_by and fee_waiver_reason - because every firm needs a documented way to waive, and an undocumented waiver is where disputes start
  • slot_hold_expires_at, consultation_datetime, attended (yes, no-show, canceled, rescheduled)
  • reschedule_count, canceled_within_policy (yes, no)
  • fee_credited (yes, no), credit_applied_at
  • refund_reason - conflict blocked, firm canceled, firm declined before consultation, prospect canceled within policy, duplicate charge, goodwill
  • inquiry_source, campaign_id, referral_source_name

Tags

  • Gate and money: conflict-cleared, conflict-blocked, slot-held, paid, payment-failed, refunded, fee-waived, fee-credited
  • Behavior: abandoned-checkout, consult-noshow, consult-attended, rescheduled-twice
  • Routing: one pa- tag per practice area, plus needs-interpreter and video-preferred
  • Operational: optout-sms, optout-email, do-not-contact
  • As in any legal build, no tag encodes a view on the merits or on the prospect means. No can-afford, no good-case.

Forms, funnels and checkout

  • Consultation landing page - explains plainly what the consultation is, how long it lasts, who they will speak to, that a fee applies, that the fee is credited against the engagement if the firm is retained, and what the cancellation and refund policy is. The fee and the policy are on the page, not hidden in a confirmation email. The page also carries the notice that booking a consultation does not create an attorney-client relationship.
  • Screening form - practice area, jurisdiction, one sentence on the matter, all opposing and related parties, prior counsel, and preferred consultation type. Short, because this is a pre-payment step and every field loses bookings - but the parties question is mandatory, because the conflict check depends on it.
  • Checkout step - a hosted payment page via the connected processor, requiring an explicit tick on the fee and refund policy before the pay button enables. The tick writes fee_policy_accepted and its timestamp.
  • Pre-consultation questionnaire - sent after payment, collecting the detail the lawyer wants in front of them, plus a document upload that is only enabled post-clearance and post-payment.
  • Post-consultation feedback and review request - two questions and a link to the firm review profile, sent only to attendees who were not blocked or refunded.

BO role and guardrails

BO sells the slot and handles the money logistics. BO does not practice law, and in this build BO also never negotiates the fee.

  • BO explains what the consultation includes, how long it is, who the prospect will meet, how the fee and the credit work, and what the refund policy says - reading from the published policy and never improvising a variation.
  • BO collects the screening information, books the hold, sends the payment link, chases an abandoned checkout, confirms payment, and runs the reminder and reschedule logic.
  • BO never gives legal advice. No view on the merits, no assessment of strength or outcome, no interpretation of a document, no comment on deadlines or limitation periods, no recommended course of action - even when asked directly, hypothetically, or in the middle of a payment conversation.
  • BO never creates or implies an attorney-client relationship. It states in its first message that it is an automated assistant, not a lawyer, that nothing in the conversation is legal advice, and that paying for a consultation does not mean the firm has agreed to represent anyone. It never says your lawyer, our client, or we are handling this.
  • No payment link is ever issued before conflict_status is cleared. This is enforced by the automation, not by training. A prospect who asks to pay immediately is told: I cannot take payment yet - we run a conflict check first so we are not charging you for time we might not be able to give you. It is usually clear within one business day.
  • BO never varies, discounts or waives the fee. Any request for a reduction, a payment plan or a free consultation is routed to the practice manager. BO says only: That is not something I can decide - let me put it to [manager] and they will come back to you today.
  • BO never discusses hourly rates, retainer sizes or case costs. Those are a lawyer conversation.
  • Any mention of a deadline, hearing, arrest, detention, custody, threat of harm, or an existing lawyer on the matter hands off to a named human immediately and BO stops replying in that thread.
  • BO never pressures. No countdown language beyond the honest statement that a held slot expires, no claims about demand that are not true, and no urgency framing around a legal situation.

Numbers and channels

  • One intake number with voice and SMS. In hours, calls ring the practice manager then a second staff member, then a voice agent that captures name, number, practice area and one sentence and texts the consultation page link.
  • Missed call text back within 60 seconds, carrying the consultation page link rather than a promise of a call back.
  • Website chat, the intake inbox and social messages all route into one conversation inbox so the sequence is identical whatever channel the prospect used.
  • An internal channel for conflict clearances, payment failures, refund approvals and no-show alerts.

Payments

  • Stripe, or the processor the firm already uses, connected to the platform so the payment event updates payment_status and the appointment confirmation fires from the payment rather than from the booking.
  • Receipts issued automatically with the firm trading name and invoice_number, described as a consultation fee, not as a retainer or a trust deposit.
  • Refunds processed from the same record, with refund_reason required.
  • Where the firm handles client funds, the consultation fee is treated as an earned fee for services, not client money held on account - but how that is characterized and which account it belongs in is a question for the firm own counsel and accountant before launch.
03

How it runs, step by step

One prospect, from a Thursday night search to a credited fee and a signed engagement.

  1. She lands on the consultation page at 10:20pm. The page says what the consultation is, how long it runs, who she will speak to, that a fee applies and is credited against the engagement if the firm is retained, what the cancellation policy is, and that booking does not create an attorney-client relationship. Nothing about the fee is a surprise later, because it is on the page she is reading.
  2. She completes the screening form. Practice area, state, one sentence on the matter, the other side named, no prior counsel, standard consultation preferred. A contact is created and the opportunity opens in Inquiry, then immediately moves to Screened because the practice area and jurisdiction both match.
  3. BO confirms, and tells her what happens next. Thanks - got everything I need to get this moving. I am an automated assistant, not a lawyer, so I cannot advise on your situation. Before I can book and take payment, we run a quick conflict check to make sure the firm is not already acting for anyone involved. That is usually done by the end of the next business day and I will come straight back to you. The opportunity moves to Conflict Check Pending.
  4. She asks to pay now to lock a time. BO declines: I cannot take payment yet - we run the check first so we are not charging you for time we might not be able to give you. Worth the wait, I promise. This is the behavior the whole build exists to produce.
  5. Friday 9:15am: the check clears. The practice manager works the conflicts queue, searches each captured name against the firm client and matter list, finds nothing, sets conflict_status to cleared and initials the worksheet. conflict_checked_by and conflict_checked_at stamp automatically.
  6. The gate opens and the booking link is issued. The opportunity moves to Conflict Cleared and BO sends the booking link, routed to the practice area lawyer on rotation. Check is clear. [Lawyer] has these times open - pick one and you will go straight to payment to confirm it: [link] No comment on her matter, because nothing has been assessed.
  7. She picks Tuesday 11am and the slot goes on hold. The opportunity moves to Slot Held, slot_hold_expires_at is set 30 minutes out, and the calendar shows the time as provisionally blocked rather than booked.
  8. Checkout. She reaches the hosted payment page. The fee, what it covers and the refund policy are restated, and the pay button stays disabled until she ticks the policy acceptance, which writes fee_policy_accepted and its timestamp. She pays by card.
  9. Payment, not booking, triggers the confirmation. The processor webhook sets payment_status to paid, stamps payment_taken_at and payment_reference, converts the hold to a confirmed appointment, and the opportunity moves to Paid. A receipt describing the charge as a consultation fee goes out with invoice_number. BO sends the confirmation with the office address, parking, the lawyer name and the reschedule link.
  10. The pre-consultation questionnaire arrives one hour later. Now that payment has cleared and conflicts are clear, document upload is enabled. She uploads two emails and the contract in question. The lawyer gets them in the matter record, not in a chat thread.
  11. Reminders at 48 hours, 24 hours and two hours. Each carries the address, the lawyer name, the document list and a reschedule link. The 24-hour reminder also states the cancellation policy, so the policy is in front of her while canceling is still free.
  12. Tuesday 11am: she attends. She reschedules nothing, because she has paid and been reminded three times. The lawyer has her uploaded documents and her verbatim summary on the calendar event and starts the conversation already informed. attended is set to yes.
  13. The lawyer records an outcome. One tap: offer engagement. The opportunity moves to Engagement Offered, the engagement letter and fee agreement generate and go out for signature, and the letter states the consultation fee already paid and credits it against the retainer.
  14. She signs on Wednesday. The opportunity moves to Engaged, fee_credited is set to yes, credit_applied_at stamps, the credit is recorded against the matter in the accounting system, and every intake and marketing sequence for her is suppressed. The consultation pipeline hands off to client onboarding.
  15. The alternative ending. Had the conflict check come back blocked, no payment link would ever have been generated, so there would be nothing to refund. Had the block been discovered after payment - which can happen when a party surfaces later - the refund workflow fires automatically within one business day with refund_reason set to conflict blocked, and the prospect receives a neutral note confirming the refund and recommending they seek other counsel promptly, with no explanation of why.
04

Automations in detail

1. Inquiry Screening and Routing

Trigger: Screening form submitted, inbound SMS or call to the intake number, website chat started, or email to the intake inbox.

Conditions and branches: If practice_area is outside the firm list or jurisdiction_state is outside the licensed states, branch to referral out. If the contact matches an existing client, route to their relationship lawyer and exit. If the contact is tagged do-not-contact, stop and notify the practice manager.

  1. Create or match the contact, open the opportunity in Inquiry, stamp inquiry_source, campaign_id and referral_source_name.
  2. Within 60 seconds, acknowledge with the disclosure first: Thanks for getting in touch with [Firm]. I am an automated assistant, not a lawyer, so I cannot advise on your situation and nothing here creates an attorney-client relationship. What I can do is get you in front of [Lawyer]. Reply STOP to opt out.
  3. If any mandatory screening field is missing - especially the other parties - ask for it conversationally before progressing. The parties question is the one that cannot be skipped.
  4. Move to Screened, apply the practice area tag, and hand to the conflict workflow.
  5. Explain the sequence honestly so the fee is never a surprise: Two steps from here. First a conflict check, usually done by the end of the next business day. Then I will send you [Lawyer] available times and the payment link to confirm the slot - the consultation fee and the policy are both on [link], have a read while you wait.
  6. No reply, no form completion: one nudge at 4 hours, one at 24 hours, one at 72 hours, then stop and close the opportunity as unreachable. Retain the record.
  7. Referral out branch: send the counsel-approved template stating only that the matter falls outside the firm practice areas or licensed jurisdictions, recommending they seek other counsel promptly, with the firm standing referral resources. No comment on the matter, and no payment link, ever.

Exit: Screened and handed to the conflict check, referred out, opted out, or unreachable.

2. Conflict Check Before Payment

Trigger: Opportunity enters Screened.

Conditions: No bypass exists. There is no path in this build by which a payment link is generated while conflict_status is anything other than cleared, and no urgency or after-hours exception is coded.

  1. Set conflict_status to pending, generate the conflict worksheet pre-populated with the prospect name, any other names given, opposing_party_names, related_party_names and prior_counsel, and run each against the firm client and matter list.
  2. Post to the internal conflicts channel and task the practice manager, due within one business day.
  3. Send the prospect the holding message: Your details are in. We are running the conflict check now - that is us confirming the firm is not already acting for anyone involved. I will come back either way, usually by end of next business day.
  4. Wait 4 business hours unworked: remind. A further 4: escalate to the responsible lawyer. A further 8: escalate to the managing partner.
  5. Cleared: stamp conflict_checked_by and conflict_checked_at, tag conflict-cleared, move to Conflict Cleared, and hand to workflow 3.
  6. Blocked: tag conflict-blocked, move to Declined by Firm, and send the counsel-approved decline that states the firm is unable to assist with this matter and recommends seeking other counsel promptly, with no reason given. Because no payment was taken, there is nothing to refund - which is the entire reason the gate sits here.
  7. Waiver required: hold the opportunity, task the responsible partner, and send no automated message at all. The lawyer handles it personally.
  8. Guard rule as a separate always-on automation: if any opportunity reaches Slot Held or beyond while conflict_status is not cleared, void the booking link, release the slot, and alert the practice manager and responsible lawyer. If a payment has somehow been taken, trigger the refund workflow immediately.

Exit: cleared, blocked, or held for waiver with a human owner.

3. Slot Hold and Payment Capture

Trigger: Opportunity enters Conflict Cleared.

Conditions: Route by practice_area to that area lawyer rota and by jurisdiction_state to a lawyer licensed there. consultation_type selects which calendar and which fee_tier applies. needs-interpreter restricts to interpreter-supported slots.

  1. Generate the booking link, bound to this opportunity and expiring after 7 days so a stale link cannot be used or forwarded.
  2. Send it: Check is clear. [Lawyer] has these times open - pick one and you will go straight to payment to confirm the slot: [link]. The fee and the refund policy are on that page, and if you go on to instruct us the fee comes off your first invoice.
  3. On slot selection: move to Slot Held, tag slot-held, set slot_hold_expires_at to 30 minutes out, and mark the calendar time provisional. Do not send a confirmation - nothing is confirmed yet, and a premature confirmation is the mistake that causes double bookings and arguments.
  4. Send the prospect straight to the hosted checkout. The pay button stays disabled until the fee and refund policy tick is made, which writes fee_policy_accepted and fee_policy_accepted_at.
  5. On successful payment (processor webhook): set payment_status to paid, stamp payment_taken_at, payment_reference and invoice_number, convert the hold to a confirmed appointment, move to Paid, tag paid, and push the appointment to the lawyer calendar. Only now send the confirmation, with address, parking, lawyer name, document list and reschedule link, plus the receipt.
  6. On payment failure: set payment_status to failed, tag payment-failed, keep the hold alive for a further 30 minutes, and send: That card did not go through - no charge was made. Here is the link again, your [day] [time] slot is still held for 30 minutes: [link] Two consecutive failures task the practice manager to call rather than sending a third link.
  7. On hold expiry with no payment: release the slot back to availability, move to Abandoned at Payment, tag abandoned-checkout, and hand to workflow 4.
  8. Fee waiver branch: if the practice manager sets payment_status to waived, they must supply fee_waived_by and fee_waiver_reason. The appointment then confirms through the same path as a paid booking, and the waiver appears in the weekly report so waivers stay visible rather than becoming a quiet habit.

Exit: Paid, waived, or Abandoned at Payment.

4. Abandoned Checkout Recovery

Trigger: Opportunity enters Abandoned at Payment, or a checkout page is loaded and left for 20 minutes without payment.

Conditions: Runs only while conflict_status is cleared. Stops permanently on opt-out, and never runs for a blocked or referred-out contact. Hard cap of three messages in total, ever.

  1. At 20 minutes on the page with no payment, send one SMS while they are likely still at their desk: Looks like the payment did not complete. Nothing has been charged and your [day] [time] slot is still available right now: [link]
  2. Wait 4 hours. Not paid: one email that answers the real objection rather than nagging. It restates what the consultation includes, that the fee is credited against the engagement if they instruct the firm, and what the refund policy is. If the fee is the sticking point, say so and I will put it to [manager] - they decide, not me.
  3. Wait 24 hours. Not paid: one final SMS offering the alternative rather than the same thing again. Last one from me. [Lawyer] still has time this week, and there is a shorter consultation option if that suits better: [link]
  4. Any reply at all stops the sequence and routes to the practice manager as a live conversation.
  5. A request about the fee, a discount, or a payment plan routes immediately to the practice manager with the verbatim message. BO never answers it.
  6. No payment after the third message: close the opportunity as Abandoned at Payment, remove the contact from active sequences, and add them to the firm general nurture list only if they have not opted out. Tag retained for reporting.
  7. Report the abandoned-checkout rate weekly. A high rate is usually a pricing or page-clarity problem, not a chase-sequence problem, and three more texts will not fix it.

Exit: payment completes, the prospect replies, or the third message sends.

5. Pre-Consultation Preparation and Reminders

Trigger: Opportunity enters Paid (or waived).

  1. Wait 1 hour, then send the pre-consultation questionnaire with document upload now enabled: One thing to make the most of your 45 minutes - a few questions and somewhere to upload anything [Lawyer] should read beforehand: [link]
  2. Not completed 48 hours before the appointment: one reminder. Not completed 24 hours before: notify the lawyer so they know they are going in without it, rather than discovering it in the room.
  3. Reminder at 48 hours: email with address, parking, lawyer name, what to bring, and the reschedule link.
  4. Reminder at 24 hours: SMS, and this one also states the cancellation policy in plain words, because the policy should be in front of the prospect while canceling is still free. Tomorrow at [time] with [Lawyer], [address]. Need to move it? [link] - free up to [policy window] before.
  5. Reminder at 2 hours: SMS with the address and a direct line. For a video consultation, the meeting link.
  6. 24 hours before, assemble and send the lawyer brief: the verbatim matter_summary, every party name, the questionnaire answers, the uploaded documents, the source, the conflict clearance stamp, and the payment reference. Attach it to the calendar event so it is where the lawyer already looks.
  7. If the lawyer has to cancel, the automation apologizes, offers the next three available slots, and triggers an immediate full refund with refund_reason set to firm canceled, without waiting to be asked. A firm that keeps the fee after canceling on a prospect loses the client and deserves to.

Exit: the appointment time arrives, or the appointment is canceled.

6. No-Show, Cancellation and Reschedule Enforcement

Trigger: Appointment end time reached with no attendance mark, or a cancellation or reschedule request received.

Conditions: Branch on whether the request falls inside or outside the published policy window, measured from consultation_datetime. The policy itself is the firm decision; the automation only applies it consistently.

  1. 15 minutes after the start time with no mark, prompt the lawyer with a one-tap choice: attended, no-show, canceled, rescheduled.
  2. No-show: set attended to no-show, tag consult-noshow, and send one message that applies the policy without scolding: Sorry we missed you at [time]. Under the policy on your booking the fee covers the reserved time, so it stays applied - but [Lawyer] is happy to use it against a rebooked slot this month: [link] Whether the fee is forfeited, held or refunded on a no-show is the firm policy call, and whatever it is, it must match the published policy word for word.
  3. Wait 48 hours. No rebooking: one final message, then close as Declined by Prospect.
  4. Cancellation inside the policy window: set canceled_within_policy to yes, release the slot, trigger the refund per policy with refund_reason set to prospect canceled within policy, and confirm in writing with the refund reference. Offer rebooking once, without pressure.
  5. Cancellation outside the window: set canceled_within_policy to no, release the slot, apply the published policy, and route to the practice manager for a discretionary decision rather than letting the automation refuse a refund on its own. A human should own every money refusal.
  6. Reschedule: move the appointment, increment reschedule_count, carry the payment across without re-charging, and restart the reminder ladder. A second reschedule tags rescheduled-twice and notifies the practice manager; a third requires the manager to approve rather than happening automatically.
  7. When a slot is released, notify any contact in Conflict Cleared for the same lawyer who has not yet booked: A slot with [Lawyer] just opened at [time] on [day] - want it? [link] This is where the no-show cost is recovered.
  8. Report no-show rate monthly, split by consultation type and by whether the fee was paid or waived. The gap between those two numbers is the clearest evidence of whether charging is working.

Exit: attendance marked, rebooked, refunded, or closed.

7. Post-Consultation Outcome, Fee Credit and Review

Trigger: attended set to yes.

Conditions: The lawyer must record one outcome before anything downstream runs. The review request is suppressed for anyone tagged conflict-blocked or refunded.

  1. Move to Consultation Held, tag consult-attended, and send the lawyer the one-tap outcome form: offer engagement, decline, or needs further information. Unanswered after 2 hours, remind. After 24 hours, escalate to the practice lead.
  2. Offer engagement: move to Engagement Offered, generate the engagement letter and fee agreement, and include the consultation fee already paid as a credit against the retainer, naming invoice_number so the accounting reconciles. Send for electronic signature.
  3. BO sends a logistics-only nudge: [Lawyer] has sent the engagement letter - the consultation fee you have already paid is credited against the first invoice. Questions about the terms go to them directly, I cannot help with those.
  4. Unsigned after 48 hours: one SMS checking the letter arrived. After 5 days: task the lawyer to call. After 10 days: close as Declined by Prospect with a neutral note reminding them the firm is not acting and that they should not delay seeking counsel.
  5. Signed: move to Engaged, set fee_credited to yes, stamp credit_applied_at, write the credit to the accounting system against the matter, and suppress every intake and marketing sequence for that contact.
  6. Decline: move to Declined by Firm, require a reason, and send the counsel-approved decline. The fee is not refunded for a post-consultation decline unless the published policy says so - the prospect received the time they paid for - but say so plainly in the policy rather than leaving it to be discovered.
  7. 24 hours after a held consultation, send the two-question feedback form and the review request: Was the time with [Lawyer] useful? If it was, a short review helps other people find us: [link] Send it regardless of whether they engaged, because a consultation that was genuinely useful earns a review either way.
  8. Any feedback below the firm threshold routes to the practice manager before any review request is sent, and the review request for that contact is canceled.

Exit: Engaged, Declined by Firm, or Declined by Prospect.

8. Refund Handling and Revenue Reporting

Trigger: Any refund condition - conflict discovered after payment, firm cancellation, firm decline before the consultation, cancellation inside the policy window, duplicate charge - plus a weekly scheduled report.

  1. Every refund requires refund_reason before it can be processed. The field is mandatory, and an unreasoned refund cannot be completed in the workflow.
  2. Conflict discovered after payment: process the full refund automatically within one business day, no approval needed, no questions asked. Move to Refunded, tag refunded, and send the neutral note: We have refunded your consultation fee in full - reference [payment_reference]. Unfortunately the firm is not able to assist with this matter. We would encourage you to seek other counsel promptly. No explanation of why, ever.
  3. Firm canceled or firm declined before the consultation: full automatic refund, same path, with an apology and, where appropriate, a referral.
  4. Prospect cancellation inside the policy window: refund per the published policy automatically.
  5. Anything discretionary - outside the window, goodwill, a disputed charge - requires practice manager approval in the workflow before the refund is issued. Automation never refuses a refund by itself and never grants a discretionary one by itself.
  6. On any card dispute or chargeback notification from the processor, alert the practice manager immediately and attach the evidence pack automatically: the policy acceptance timestamp from fee_policy_accepted_at, the booking record, every reminder sent with timestamps, and the attendance mark. That pack is the reason the policy tick is a hard requirement.
  7. Weekly report to the practice manager and managing partner: consultations booked, paid, waived, held, no-showed and refunded; abandoned-checkout rate; consultation to engagement conversion rate; fee credits applied; refunds by reason; waivers by approver; median time from inquiry to conflict clearance; and bookings and engagements by inquiry_source.
  8. Monthly: conversion and no-show rate by consultation_type and fee_tier, which is the data the firm needs to decide whether the fee is set correctly.

Exit: the refund completes. The reporting runs indefinitely.

05

What changes

The consultation calendar stops being a free resource and starts being inventory with a price on it. The immediate effect is on attendance: a booked slot someone has paid for and been reminded of three times is kept at a materially different rate than a free slot booked at midnight and forgotten by Tuesday. The second effect is on composition. The person looking for forty-five free minutes of advice does not pay, and the person with a real matter does, which means the lawyer spends the same hours on a different mix of people.

The sequence is the other half of the change. Because clearance comes before payment, the firm never takes money from someone it cannot represent, and the refund workflow mostly sits idle. Because the fee and the refund policy are on the page the prospect reads and are ticked before the card is charged, the awkward conversations largely do not happen, and when a dispute does arise the firm has the acceptance timestamp, the reminder log and the attendance mark in one place.

And because the fee is credited against the engagement, the firm is not actually charging its future clients anything. It is charging the people who were never going to instruct it, which is exactly the right way round.

Metrics to watch

  • No-show rate, compared against the pre-build baseline, and separately for paid versus waived bookings. That comparison is the single clearest proof the fee is doing its job.
  • Booking-to-payment conversion and the abandoned-checkout rate. A high abandonment rate points at the fee level or the page, not at the chase sequence.
  • Consultation to engagement rate, and how it moved after charging began. If it rose sharply, the free calendar was filtering nothing.
  • Consultations held per lawyer per week, and the proportion of consultation hours that converted to matters - the real measure of whether partner time is being spent well.
  • Median time from inquiry to conflict clearance. This is the bottleneck in the whole build, and every hour of it is a window in which the prospect can book elsewhere.
  • Refunds by reason, watching particularly for any refund tagged conflict blocked after payment. The target is zero, because the gate should catch those first.
  • Waivers by approver, reviewed monthly. A rising waiver count means the fee is set wrong or the policy is not being held.
  • Reschedule counts, and how many bookings reached two or three reschedules
  • Chargebacks and disputes, with the evidence pack attached - near zero is achievable and anything above that warrants a look at the policy wording
  • Engagements and consultation revenue by inquiry source, so marketing spend can be judged on engaged matters rather than on bookings
06

Before you start

This build is a workflow, not legal or accounting guidance

Everything below is operational. Charging for consultations touches professional-conduct rules on fees, advertising, client funds and refunds, and those rules differ by jurisdiction. Nothing here is legal advice. Before this build goes live, the firm own counsel or risk partner must approve the fee structure, the policy wording and every template, and the firm accountant should confirm how the fee is characterized and which account it belongs in.

Decisions to make first

  • The fee structure. How many tiers, what distinguishes them, which practice areas use which, and whether the short consultation exists. Keep the amounts in the platform configuration and on the landing page, never written into automation copy, so a fee change is one edit rather than forty.
  • The credit rule. Is the fee credited in full against the first invoice, credited only if the client engages within a set window, or not credited at all? Whatever the answer, it goes on the landing page in plain words.
  • The cancellation and refund policy. The window inside which a cancellation is refunded, what happens on a no-show, and what happens if the firm declines after the consultation. Write it once, in plain language, and use the same wording on the landing page, in the checkout tick, in the 24-hour reminder and in the no-show message. Inconsistency between those four is where chargebacks come from.
  • Who may waive the fee, and on what grounds. Name the person and write the grounds down. An undocumented waiver policy becomes a selective one.
  • Who clears conflicts, and the target turnaround. This gate is the bottleneck, so commit to a turnaround and staff it.

Integrations

  • Stripe, or the firm existing processor, connected with webhooks for payment succeeded, payment failed, refund issued and dispute opened. Test every one of those four in the processor test mode before launch, especially the failure path - an untested failure path is how a prospect gets charged with no appointment, or gets an appointment with no charge.
  • Google Calendar or Microsoft 365 connected for every lawyer, two-way sync on, so the hold-and-release logic reflects real availability.
  • Electronic signature for engagement letters, with a webhook so the signed event credits the fee without manual entry.
  • The firm accounting system - QuickBooks, Xero or equivalent - so consultation fees and credits reconcile rather than being retyped. Zapier or Make covers anything without a native connection.
  • Video conferencing for the video consultation calendar, generating a unique link per appointment.
  • The firm review platform for the post-consultation request.

Payment and data handling

  • Use the processor hosted checkout. Card details must never touch the platform, the firm systems or a conversation thread. If a prospect types a card number into chat, the workflow should flag it, the staff member should delete it, and the prospect should be sent the proper link.
  • Confirm the firm obligations under the card scheme rules and the applicable payment-data standards with the processor and the firm accountant. Using a hosted checkout does most of this work, but the firm still owns the answer.
  • Receipts must name the firm trading entity and describe the charge as a consultation fee. A receipt that reads as a retainer or a deposit on account creates an accounting problem and possibly a trust-account one.
  • Decide where the fee sits in the firm accounts before the first payment, not after. Whether a pre-paid consultation fee is an earned fee or client money held on account is jurisdiction-specific and is a question for counsel and the accountant together.
  • Agree a retention period for payment references, policy acceptance records and reminder logs. They are the evidence pack for any dispute, so they should outlive the appointment by a sensible margin.

Numbers, messaging and compliance

  • Provision one intake number with voice and SMS. Complete A2P 10DLC brand and campaign registration before launch, with sample messages matching the real copy including the opt-out language.
  • Opt-out language in the first message of every sequence. Honor STOP, UNSUBSCRIBE, CANCEL, END and QUIT automatically, set optout-sms, and treat it as a hard suppression on every workflow. One exception needs a decision from counsel: whether a paid appointment reminder may still send by SMS after an opt-out. The safe default is no, with email reminders continuing.
  • Quiet hours against the prospect time zone, with no exceptions in this build.
  • Authenticate the sending domain with SPF, DKIM and DMARC before launch. A receipt or a refund confirmation in a spam folder becomes a dispute.
  • Have counsel review the landing page as advertising, not just as a booking page. Claims about the firm, about outcomes, or about what the consultation will achieve are advertising claims and are regulated. Describe what the consultation is, not what it will get them.
  • Call recording consent for every state the firm takes calls from, with the notice at the top of the voice agent script.
  • Restrict payment and refund permissions by user role in the platform, and review who holds them quarterly.

Scope and pricing for the build depend on the number of practice areas, lawyers and the accounting integration. Book a call at bookings.appbo.io.

Field notes

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call