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.
- Create or match the contact, open the opportunity in Inquiry, stamp inquiry_source, campaign_id and referral_source_name.
- 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.
- 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.
- Move to Screened, apply the practice area tag, and hand to the conflict workflow.
- 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.
- 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.
- 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.
- 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.
- Post to the internal conflicts channel and task the practice manager, due within one business day.
- 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.
- Wait 4 business hours unworked: remind. A further 4: escalate to the responsible lawyer. A further 8: escalate to the managing partner.
- Cleared: stamp conflict_checked_by and conflict_checked_at, tag conflict-cleared, move to Conflict Cleared, and hand to workflow 3.
- 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.
- Waiver required: hold the opportunity, task the responsible partner, and send no automated message at all. The lawyer handles it personally.
- 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.
- Generate the booking link, bound to this opportunity and expiring after 7 days so a stale link cannot be used or forwarded.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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]
- 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.
- 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]
- Any reply at all stops the sequence and routes to the practice manager as a live conversation.
- 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.
- 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.
- 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).
- 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]
- 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.
- Reminder at 48 hours: email with address, parking, lawyer name, what to bring, and the reschedule link.
- 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.
- Reminder at 2 hours: SMS with the address and a direct line. For a video consultation, the meeting link.
- 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.
- 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.
- 15 minutes after the start time with no mark, prompt the lawyer with a one-tap choice: attended, no-show, canceled, rescheduled.
- 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.
- Wait 48 hours. No rebooking: one final message, then close as Declined by Prospect.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Every refund requires refund_reason before it can be processed. The field is mandatory, and an unreasoned refund cannot be completed in the workflow.
- 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.
- Firm canceled or firm declined before the consultation: full automatic refund, same path, with an apology and, where appropriate, a referral.
- Prospect cancellation inside the policy window: refund per the published policy automatically.
- 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.
- 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.
- 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.
- 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.