1. Instant Inquiry Response and Source Stamping
Trigger: Inquiry form submitted, portal lead email parsed, inbound SMS to the leasing number, social direct message received, or inbound call completed.
Conditions and branches: First check listing_status on the inquired unit. If live, main path. If application pending or leased, the alternative-units path. If the contact already has an open opportunity on the same unit, do not create a duplicate - append to the existing conversation instead.
- Create or match the contact. Stamp inquiry_source, apply the matching source tag, create the opportunity in New Inquiry, and record the inquiry timestamp.
- Within 60 seconds, send the first reply on the channel the inquiry arrived on, plus email as a second channel: Hi [first name], thanks for inquiring about [unit_address] - it is available from [available_from]. I can answer anything about the unit and get you booked in to see it. Want some showing times? Reply STOP to opt out.
- Stamp response_time_minutes as the difference between the inquiry timestamp and the send.
- If the inquiry arrived outside business hours, tag after-hours-inquiry so the reporting can show how much volume the automation is catching that a human would have missed.
- Wait 10 minutes. If no reply, send one follow-up on the original channel only: Happy to answer questions, or you can grab a showing slot straight away here: [booking link]
- Wait 4 hours. If no reply, send one email with three listing photos and the booking link. Then stop for the day.
- Wait until 10am the next business day. If still no reply, one final SMS: Last one from me on [unit_address] - still want to see it? Reply YES and I will send times. Then move the opportunity to Lost with lost_reason set to no response.
- Alternative-units path: Hi [first name] - [unit_address] has an application in progress, so I would not want to waste your time. I have [count] other [bedrooms] bedroom units available around [move_in_date_target]. Want me to send them? A yes tags waitlist and runs the re-match.
Exit: prospect replies (hands to workflow 2), books a showing, opts out, or the opportunity reaches Lost.
2. Uniform Pre-Qualification
Trigger: Prospect replies to any BO message for the first time, or submits the Pre-Qualification form directly.
Conditions: The question set is identical for every prospect and every unit. The only branches permitted are on the unit characteristics - pets policy, bedroom count, availability date - never on anything about the person. This is a build rule, not a preference.
- Move the opportunity to Engaged.
- BO asks, in this fixed order, one or two at a time: how many bedrooms do you need; how many people will be living there; when do you need to move in; how long a lease are you looking for; any pets, and if so what type and weight; does your household income meet the [income_multiple_required] times rent requirement we apply to every applicant; are you employed, self-employed, retired or a student; will you be using a housing voucher or rental assistance program.
- Write every answer to its field as it arrives. Never store a free-text aside that contains protected information.
- Evaluate: bedrooms_needed at or below bedrooms; occupant_count within the written occupancy standard for the unit; move_in_date_target within 45 days of available_from; lease_length_wanted at or above minimum_lease_months; pets compatible with pets_policy; income_meets_multiple is yes.
- All pass: set prequal_result to pass, tag prequal-pass, move to Pre-Qualified, and send the showing booking link immediately in the same conversation.
- A unit-fit failure (wrong bedroom count, wrong timing, pet the building does not allow): set prequal_result to fail, record prequal_fail_reason, and redirect rather than reject. [Unit_address] only allows cats, so that one will not work for a dog. I have [count] pet-friendly units in the same area - want those instead? Tag waitlist and run the re-match.
- A stated criteria failure (income multiple not met, or anything ambiguous): set prequal_result to needs human review, tag prequal-review, and create a task for the property manager within four business hours. BO says only: Thanks - let me have [manager] come back to you on that, they handle the application criteria. BO never declines anyone.
- If the prospect declines to answer any question, set that field to prefers not to say and continue. A refusal is never treated as a fail by the automation.
- If the prospect volunteers protected information or asks for an accommodation, halt the sequence, escalate to the property manager with the verbatim message, and notify them by SMS.
Exit: stage reaches Pre-Qualified, prequal-review is handed to a human, or the prospect is re-matched to other units.
3. Showing Booking, Reminders and No-Show Recovery
Trigger: Individual Showing or Open House Block appointment booked.
Conditions: If the unit has had more than ten inquiries in the last 48 hours, the booking link offered is the Open House Block rather than individual slots. If lockbox_or_keys is set to smart lock and the client has enabled it, offer the Self-Guided Showing option as well.
- Move the opportunity to Showing Booked, tag showing-booked, set showing_datetime, and assign the unit agent as owner.
- Send immediate confirmation by SMS and email with the full address, unit number, access instructions, the agent first name and mobile, and a one-tap reschedule link. Booked: [unit_address], [day] at [time]. [Agent] will meet you at the main entrance. Need a different time? [reschedule link]
- Push the appointment to the agent connected calendar with the prospect pre-qualification answers in the event description, so the agent arrives informed.
- 24 hours before: SMS reminder with address and reschedule link.
- Two hours before: SMS reminder. See you at [time] today at [unit_address]. Reply R to reschedule or C to cancel.
- 15 minutes after the slot start, if the agent has not marked attendance, send the agent a one-tap prompt: attended, no-show, or rescheduled on site.
- No-show branch: tag showing-noshow, and 30 minutes later send one message: Sorry we missed you at [unit_address]. It is still available - want to pick another time? [booking link] Wait 24 hours, send one more. No reply after that moves the opportunity to Lost with lost_reason set to no response.
- Cancellation branch: free the slot, and immediately offer it to the most recent Pre-Qualified prospect on the same unit who has not yet booked. A slot just opened at [unit_address] today at [time] - want it?
- Reschedule branch: update showing_datetime, restart the reminder chain, and leave the stage unchanged. Three reschedules by the same prospect notifies the agent to call rather than keep texting.
Exit: attendance marked attended, or the opportunity reaches Lost.
4. Post-Showing Feedback and Application Push
Trigger: Showing marked attended.
Conditions: Branch on prequal_result. Pass gets the application link immediately. Needs human review gets feedback only, and the application link is released by the manager.
- Move the opportunity to Viewed, tag showing-attended.
- Wait 20 minutes after the appointment end so the prospect has left the building.
- Pass path: send the Showing Feedback form and the application link together. Great to meet you at [unit_address]. Two quick things: how did it feel? [feedback link] And if you want it, the application takes about ten minutes: [application link]. We consider completed applications in the order they arrive. Move to Application Sent, stamp application_sent_date, tag app-sent.
- Review path: send the feedback form only, and create a task for the manager to release or withhold the application within four business hours.
- Branch on the feedback answer. Not interested moves the opportunity to Lost with lost_reason taken from the free text, and cancels the application chase entirely. Do not chase a no.
- Needs to discuss with someone schedules a single check-in 48 hours later: Any questions on [unit_address] after talking it through? Happy to hold a slot for a second showing.
- Notify the agent in the internal channel with the feedback verbatim the moment it arrives, so a soft no can be rescued by a phone call the same evening.
Exit: application submitted, feedback says not interested, or the opportunity reaches Lost.
5. Application Completion Chase
Trigger: Opportunity enters Application Sent.
Conditions: Runs only while application_status is empty or started, and only while listing_status on the unit is live. If the unit flips to application pending or leased, this workflow stops at once.
- Wait 4 hours. If not started, send one SMS: Did the application link work for you? Here it is again: [link]. Ten minutes and you are in the queue.
- Wait 24 hours from send. If not submitted, send SMS: Still interested in [unit_address]? Applications are considered in the order they are completed. Your link: [link]
- Wait 48 hours from send. If not submitted, send one email with a short bullet list of exactly what the application needs - identification, proof of income, previous address history, references - because the usual reason an application stalls is that the prospect does not have a document to hand.
- Wait 96 hours from send. One final SMS: Closing your file on [unit_address] unless I hear back today. Reply YES to keep it open.
- No reply: move to Lost with lost_reason set to no response, and tag waitlist so the prospect still gets matched to future units.
- On submission: move to Application Submitted, tag app-submitted, stop every chase step, notify the property manager, and create a review task due in one business day. Send the prospect a plain acknowledgement that promises nothing: Got your application for [unit_address]. [Manager] will review it and come back to you within one business day.
- No automation in this workflow may state, imply, or predict an approval outcome. The Approved stage is set by a human only.
Exit: application submitted, unit leased, or opportunity reaches Lost.
6. Unit Leased Cascade and Waitlist Re-Match
Trigger: Unit listing_status changes to application pending or leased.
- Immediately pause every active workflow for every other opportunity on that unit. No one receives a chase for a unit that is gone.
- Remove the unit booking link from circulation and cancel any future showing appointments on it, notifying each prospect: [Unit_address] has an application in progress so we have canceled your showing. Sorry for the shuffle - I have other options if you want them.
- On leased: send every other open opportunity one honest close-out message: [Unit_address] has been leased. Based on what you told me - [bedrooms_needed] bedroom, moving around [move_in_date_target] - I have [count] others coming up. Want them?
- A yes tags waitlist and runs the match: live units where bedrooms is at or above bedrooms_needed, available_from is within 45 days of move_in_date_target, and pets_policy accommodates pets_declared. Send up to three units with photos and individual booking links.
- A no, or no reply within 72 hours, moves the opportunity to Lost with lost_reason set to leased elsewhere.
- Freeze days_on_market on the unit record and write the leasing record: inquiries received, showings held, applications submitted, source of the winning applicant.
- Seven days after lease signing, send the new tenant a welcome sequence and a review request on the client preferred review platform. A tenant is never happier than in their first week.
Exit: every other opportunity on the unit is re-matched or closed.
7. Missed Call Text Back and After-Hours Routing
Trigger: Inbound call to the leasing number that is not answered within four rings, or any call received outside business hours.
- In business hours: ring the on-duty agent, then the second agent in rotation, then the voice agent.
- The voice agent answers with a scripted greeting, asks which property the caller is inquiring about and their name, and offers to text the booking link. It never discusses criteria, never quotes anything not on the unit record, and never asks a pre-qualification question by voice.
- Within 60 seconds of the call ending, send an SMS: Sorry we missed your call about [unit_address]. I can answer questions here or get you booked in: [booking link]. Reply STOP to opt out.
- Create the contact and opportunity in New Inquiry with inquiry_source set to phone, and attach the call recording and transcript to the contact timeline.
- If the caller replies, hand straight into the pre-qualification workflow. If not, the standard inquiry nurture chain applies.
- Out of hours, tag after-hours-inquiry and queue a callback task for the on-duty agent at the start of the next business day, so a human still makes contact.
- Three missed calls from the same number in one day escalates to an immediate call-back task flagged urgent, regardless of hour preferences, because that is usually someone standing outside the building.
Exit: the caller replies, books, or the callback task is completed.
8. Leasing Performance Digest and Response Time Watchdog
Trigger: Continuous watchdog on response_time_minutes, plus a scheduled daily agent digest and a weekly owner report.
- Any inquiry where the first reply has not sent within five minutes posts to the internal channel naming the unit and the channel it came in on. This catches integration breakages fast - a portal parser that silently stops is otherwise invisible for weeks.
- Daily, at 7am: send each agent their showings for the day with every pre-qualification answer, plus their open Application Sent opportunities older than 48 hours.
- Daily: any unit with days_on_market past the client threshold and fewer than three showings held gets flagged for a listing review - photos, description or price are the usual culprits.
- Weekly, to the owner or portfolio manager: inquiries by source, median response_time_minutes, inquiry to showing rate, showing attendance rate, showing to application rate, application to lease rate, median days on market, and the lost_reason distribution.
- Monthly: cost per lease by inquiry_source where the client supplies portal spend, so unproductive listing subscriptions can be cut on evidence.
- Flag any source where inquiry volume is high but showing conversion is bottom of the set, with the line [Source] produced [n] inquiries and [m] showings this month - check listing accuracy before renewing.
Exit: none. These run continuously.