Skip to content

Workflow templates

Production-ready AI workflows you can preview, then use as a starting point. Pick one, connect your accounts, and it runs the work end to end.

finance
Accounts Payable Inbox
Automates vendor invoice intake. Watches your AP inbox for unread invoice, bill and payment-due emails, extracts invoice details (vendor, amount, due date, PO reference), and routes: invoices with a PO number are forwarded to your approver with a summary; invoices missing a PO get a reply in the vendor's own email thread asking for the reference number. Setup: connect Gmail on the trigger and add an OpenAI API key in Settings. New mail is picked up by polling about every 10 minutes.

5 steps · intermediate

support
Answer Customer Questions
A customer support chatbot that answers questions helpfully and professionally. Handles common inquiries with a friendly tone.

3 steps · simple

document
Certificate of Insurance Request Desk
Answers certificate of insurance (COI) requests from contractors, landlords and general contractors. Each email that lands under your COI label is read by an LLM (insured, policy number, insured email, certificate holder and address, project, requested lines and limits, additional insured, waiver of subrogation, primary and non-contributory), the insured's policies are looked up in your agency management system (Google Sheets or HawkSoft), and the flow fills your agency's own certificate Google Doc template and exports it as a PDF. A request that passes every rule gets the PDF as a reply in the same email thread; anything else waits on the Approvals page as a drafted in-thread reply with the same PDF attached and the reasons at the top of the draft, for a CSR to edit, approve or reject. A request is sent automatically only when the insured is matched, every requested line has an active policy that does not expire within your warning window, every requested limit is on file and no higher than the policy's, additional insured, primary and non-contributory and waiver of subrogation are requested only where a blanket endorsement is on file, and the holder is not on your disallowed list. A limit or endorsement that is not on file always goes to review. Every request is logged to the COI Log tab before any reply is sent or queued. This template does not reproduce the ACORD 25 form: ACORD forms are licensed, so the certificate is your own Google Doc. Agencies licensed to use ACORD 25 can lay the Doc out to match their licensed form. Certificate template: a Google Doc with these placeholders, each filled on every certificate: {{agency_name}}, {{issue_date}}, {{insured_name}}, {{holder}} (name and address), {{project}}, {{coverages}} (one line per requested line: carrier, policy number, dates, limits) and {{endorsements}}. Add your own disclaimer, producer block and signature to the Doc; it is copied for each certificate and never modified. Spreadsheet tabs, header in row 1: COI Log (written by the flow): A date, B Gmail message ID, C insured, D certificate holder, E project, F coverages requested, G route (auto or review), H reasons. With Google Sheets as the agency management system, also Policies, one row per policy and line: A insured name, B insured email, C policy number, D line (GL, Auto, WC, Umbrella or Property), E carrier, F effective date, G expiration date, H each-occurrence limit, I aggregate limit, J other limit, K blanket AI (Y/N), L blanket WOS (Y/N), M status (cancelled, non-renewed, void, expired or inactive rows are ignored). Setup: create a Gmail label (coi-requests by default) and a Gmail filter that applies it to certificate requests; create the tabs; create the certificate Doc and pick it on the setup screen; connect Google (Gmail, Sheets, Docs and Drive) and HawkSoft if you use it; set the agency name, CSR email, expiry warning days and disallowed holders, which land in the Settings node where you can change them later; add an OpenAI API key in Settings. Replies, both automatic and approved, go out from the connected Gmail account. Limitations: one request per email; a request for several holders or projects needs one email each. The LLM reads the email body only, not attached request forms or contracts. Days are calendar days. HawkSoft: its Client Search matches an exact policy number only, so a request without a policy number reads the book (up to the maximum clients you set, 2000 by default, about one HawkSoft request per 200 clients) and matches the insured by email or exact name; an insured past the cap goes to review. HawkSoft keeps coverage limits as free text on each coverage (Coverages Code, Description and Limits), so a limit is read only when one coverage clearly names it and holds a single amount (each occurrence or combined single limit, aggregate, products and completed operations); otherwise it is not on file and the request goes to review. Which coverage codes your carriers' downloads use is unverified, so check a few clients before relying on auto-send. HawkSoft has no blanket additional insured or waiver of subrogation indicator, so with HawkSoft every AI, WOS or primary and non-contributory request goes to review. Policy status names and the casing of HawkSoft's field names are read defensively. EZLynx, Applied Epic and AMS360 are coming soon.

36 steps · advanced

automation
Clean Smarts Supply Reorder
Every weekday at 7:00 (Central) pulls the open supply requests from every Clean Smarts location and sub-location and emails them as one order digest, one line per item with its supplier, barcode, quantity, location and request number. Nothing is sent when there are no open requests. Clean Smarts has no write-back, so a request keeps appearing in the daily digest until it is closed in Clean Smarts; locations that fail to load are skipped for that day. Save the flow once after importing it to arm the schedule.

5 steps · intermediate

hr
Credential & Document Expiry Tracker
Tracks the expiry dates of your employees' licenses, certifications, CPR cards, driver's licenses, forklift certificates and I-9 work-authorization re-verification dates, so nothing lapses unnoticed and nobody is scheduled who cannot legally work. Every morning at 8am Eastern it reads each employee's credentials from your HR system (BambooHR or a Google Sheet) and sends staged reminders at the lead times you set (60, 30 and 7 days before by default): the employee gets a friendly email with renewal instructions and your upload link, their manager is copied from the 30-day reminder on, and from the 7-day reminder HR also gets an alert to plan cover. The day after a credential expires, HR gets an alert with payroll (and the manager) copied, and the employee is marked Not cleared in the HR system. Every reminder and alert is logged to the Compliance Log tab before its email goes out, so each stage is sent once per credential and expiry date; entering a renewed expiry date starts the reminders over. On the 1st of each month HR also gets a compliance summary: the share of credentials that are current, by department and by credential type, with the expired ones and those expiring in the next 30 days. Up to 50 reminders per run. Spreadsheet tabs, header in row 1: Compliance Log (written by the flow): A logged on, B employee ID, C employee, D department, E credential, F expires, G stage (60, 30, 7 or expired), H sent to. With Google Sheets as the HR system, also Credentials, one row per employee credential: A employee ID, B employee, C email, D department, E manager email, F credential type, G number, H issued, I expiry date, J status (the flow writes Not cleared when it expires; write inactive, terminated or exempt to stop tracking a row), K last reminder (written by the flow). Setup: create the tabs, connect Google (Sheets and Gmail) and BambooHR if you use it, and set the HR and payroll emails, the upload link, the reminder stages, from which stage the manager is copied and HR is alerted, and which credential types to track on the setup screen; they land in the Settings node, where you can change them later. With BambooHR, list the custom date fields that hold expiry dates (for example customCPRExpiration,customDriverLicenseExpiration; each becomes a credential type named after its field) and the field the flow writes Not cleared into. Save the flow once after importing it to arm the schedule. Limitations: days are calendar days. The flow does not collect the renewed document or read its new expiry date; uploading a document and extracting the date from it is a planned follow-up, so for now HR enters the new date. Not cleared is written but never cleared by the flow: set the status back once the credential is renewed. BambooHR: only active employees and custom date fields on the employee record are read (table fields such as a certifications table are not), and an empty field means the credential does not apply. Gusto and Rippling are coming soon. Nothing is removed from a work schedule automatically.

24 steps · advanced

sales
Follow-Up Sequence Manager
Runs a three-email follow-up sequence for sales contacts who have not replied. Every Monday and Thursday at 9am Eastern it reads the Contacts tab, picks each ACTIVE contact with fewer than 3 follow-ups, drafts a personalized email whose angle changes with the attempt number, bumps Follow-ups Sent on that row, then sends it. Set Status to REPLIED or DONE to stop a contact. More than 100 due contacts in one run is not supported. Save the flow once after importing it to arm the schedule. Add an OpenAI API key in Settings before activating.

10 steps · intermediate

finance
Overdue Invoice Follow-Up
Runs a weekly collection campaign for unpaid invoices. Every Monday at 9am Eastern it reads your accounts receivable sheet, finds invoices past their due date that are not marked Paid, and sends each client a personalized collection email whose tone escalates with how overdue the invoice is - from a polite reminder in the first week to a formal notice at 30+ days. Mark an invoice Paid to stop its reminders. Up to 50 invoices per run; a manual run sends the reminders again. Save the flow once after importing it to arm the schedule. Add an OpenAI API key in Settings before activating.

7 steps · intermediate

real-estate
Real Estate Lead Qualifier
Qualifies inbound real estate leads from email. Several times each weekday the flow reads new lead emails, and an AI rates each lead HOT or WARM and writes a personalized reply that is sent in the same thread: HOT leads are invited to book a property tour, WARM leads are invited to share more. Every lead (name, email, rating, score, intent, timeline) is appended as a row to the first tab of your Google Sheet. By default only emails carrying the Gmail label leads are read: create a Gmail filter that labels your lead emails, or change the search when you set up the flow. It runs at 9, 11, 1, 3 and 5 (Eastern) on weekdays: 5 runs a day fits the Growth plan's limit of 6 scheduled runs a day and 120 a month per flow. On Solo (1 scheduled run a day) change the schedule to 0 9 * * 1-5; on Scale you can run hourly. Handled emails are marked read so each is answered once; if a send fails the email stays unread and is retried on the next run. Emails you open before a run are left for you. Save the flow once after importing it to arm the schedule. Add an OpenAI API key in Settings before activating.

11 steps · intermediate

recruitment
Resume Screener & Scorer
Screens incoming application emails against your role requirements. Several times each weekday the flow reads new application emails, an AI scores each candidate's fit from the email text, and one reply goes out in the same thread: qualified candidates are invited to a phone screen, the rest get a polite rejection, and candidates replying to an earlier message get a short acknowledgement. Each run's output shows every applicant's score and summary. Edit the role requirements in the Classifier before activating. Resume attachments are not read. It runs at 9, 1 and 5 (Eastern) on weekdays: 3 runs a day fits the Growth plan's limit of 6 scheduled runs a day and 120 a month per flow. On Solo (1 scheduled run a day) change the schedule to 0 9 * * 1-5. Handled emails are marked read so each is answered once; if a send fails the email stays unread and is retried on the next run. Emails you open before a run are left for you. Save the flow once after importing it to arm the schedule. Add an OpenAI API key in Settings before activating.

9 steps · intermediate

support
Smart Appointment Scheduler
Answers appointment and meeting requests automatically. Several times each weekday the flow reads new request emails, checks Google Calendar availability against employee working hours, replies in the same thread with 2-3 available slots written in your brand voice (from the linked Google Docs guidelines), and places a tentative calendar hold on the first proposed slot. When a requester replies to pick a slot, the reply confirms it. Holds are titled 'Tentative appointment hold (auto-created)'; the requester's details are in the reply thread. It runs at 9, 11, 1, 3 and 5 (Eastern) on weekdays: 5 runs a day fits the Growth plan's limit of 6 scheduled runs a day and 120 a month per flow. On Solo (1 scheduled run a day) change the schedule to 0 9 * * 1-5; on Scale you can run hourly. Handled emails are marked read so each is answered once; if a send fails the email stays unread and is retried on the next run. Emails you open before a run are left for you. Save the flow once after importing it to arm the schedule. Add an OpenAI API key in Settings before activating.

18 steps · advanced

support
Support Ticket Auto-Responder
Reads new support emails several times each weekday and classifies each thread as auto-resolvable or needing escalation. Resolvable tickets get an AI-drafted reply in the same thread; the rest are forwarded to your support team with the full thread, and the customer gets a short acknowledgement. It runs at 9, 11, 1, 3 and 5 (Eastern) on weekdays: 5 runs a day fits the Growth plan's limit of 6 scheduled runs a day and 120 a month per flow. On Solo (1 scheduled run a day) change the schedule to 0 9 * * 1-5; on Scale you can run hourly. Handled emails are marked read so each is answered once; if a send fails the email stays unread and is retried on the next run. Emails you open before a run are left for you. Connect the support mailbox in Gmail and add an OpenAI key before activating. Save the flow once after importing it to arm the schedule.

11 steps · intermediate

real-estate
Under-Contract Deadline Tracker
Tracks the contract deadlines of every deal that goes under contract (inspection, appraisal, financing and earnest money) and reminds the right people ahead of each one, so a missed deadline does not kill the deal. Every morning at 8am Eastern it reads deals from your CRM or transaction system (Follow Up Boss or a Google Sheet). A deal not yet tracked gets one row per deadline in the Deadlines tab and you get a "now tracking" email listing its dates; its reminders start with the next run. For each open deadline it then sends reminders at the lead times you set (5, 2 and 1 days before by default) to the parties whose role fits that deadline, looked up in the Transaction Contacts tab: inspection - inspector, co-op agent, client; appraisal - lender, appraiser, co-op agent; financing - lender, co-op agent, client; earnest money - title or escrow, co-op agent, client. You are copied on every reminder, and clients can be left out. A reminder inside the escalation window (2 days by default) for a deadline still open also emails you and your broker, and a deadline that passes while open sends one overdue notice. Each stage is written to the deadline's row before its email goes out, so it is sent once. With Follow Up Boss, each reminder is also added as a note on the deal's contact. Up to 50 emails per run. Spreadsheet tabs, header in row 1: Deadlines (written by the flow): A deal ID, B deal, C deadline, D due date, E status (blank = open; write done or waived to stop reminders), F reminder sent, G reminded on, H client email, I CRM person ID, J added on. Transaction Contacts: A deal ID, B role (e.g. lender, title, co-op agent, inspector, appraiser, client), C company, D name, E email. With Google Sheets as the system, also Deals: A deal ID, B property address, C price, D contract date, E closing date, F inspection deadline, G appraisal deadline, H financing deadline, I earnest money due, J status (blank = under contract; Closed or Cancelled stops tracking), K client email. Setup: create the tabs, connect Google (Sheets and Gmail) and Follow Up Boss if you use it, and set the emails, lead times and escalation window on the setup screen; they land in the Settings node, where you can change them later. Save the flow once after importing it to arm the schedule. Limitations: days are calendar days, not business days. Dates are read once, when a deal is first tracked; if an amendment moves a deadline, edit its due date in the Deadlines tab. Follow Up Boss: deals that entered your Under Contract stage in the last 60 days are read; inspection comes from the Due Diligence key date and earnest money from the Earnest Money key date, while appraisal and financing come from custom deal fields whose names contain "appraisal" and "financing"; Follow Up Boss gives no client email with the deal, so add the client to Transaction Contacts for them to get reminders. No calendar events are created and commissions are not logged.

26 steps · advanced

property-management
Vendor Dispatch with Spending Limits
Dispatches maintenance work orders to the right vendor with a not-to-exceed (NTE) amount and keeps spending inside each owner's limits. Three times a day it reads new work orders from your property management system (Buildium or a Google Sheet), has AI pick the trade and estimate the cost, and routes each one. A vendor whose insurance (COI) has expired or is not on file is skipped and you are alerted; if no insured vendor is left the job is not dispatched. A job estimated at or over the bid threshold (not emergencies) goes out for bids: one email to you with up to 3 vendors in Bcc. A job whose NTE is over the owner's approval threshold, or would take the property over this month's budget, is drafted as an approval request to the owner and waits in your Approval Queue. Everything else is emailed to the best-ranked insured vendor with the NTE, added to the Spend Ledger and written back to the work order (Buildium: vendor plus the NTE in the vendor notes; Sheets: status, vendor and NTE columns). Each work order is claimed in the Dispatch Log before anything is sent, so it is handled once; delete its Dispatch Log row to run it again. Up to 50 work orders per run. Spreadsheet tabs, header in row 1: Vendors: A company, B trades (comma list of plumbing, electrical, hvac, appliance, roofing, pest, locksmith, landscaping, cleaning, painting, general), C properties served (comma list; blank or * for all), D rep name, E rep email, F insurance (COI) expiry date, G preferred rank (1 = first choice), H Buildium vendor ID (Buildium only; a vendor without one is never dispatched to). Owners: A property, B owner email, C approval threshold override ($), D monthly budget override ($), E address shown to vendors (optional). Spend Ledger: A date, B property, C unit, D work order, E trade, F vendor, G NTE, H route, I category. Dispatch Log: A work order ID, B claimed on, C property, D unit, E issue. With Google Sheets as the system, also Work Orders: A work order ID (required; a row without one is never dispatched), B date reported, C property, D unit, E issue, F details, G access or contact notes, H status (blank or New = waiting; the flow writes Dispatched), I vendor, J NTE. With Buildium, name each property by its Buildium property ID in the Vendors and Owners tabs. Setup: create the tabs, connect Google (Sheets and Gmail) and Buildium if you use it, add an OpenAI API key in Settings, and set the dollar thresholds on the setup screen; they land in the Settings node, where you can change them later. Save the flow once after importing it to arm the schedule. Limitations: an owner approval waits in your Approval Queue with no automatic timeout, and the owner's reply is not read, so dispatch approved jobs yourself and add them to the Spend Ledger. Bids are requested, not compared. The budget check re-reads the Spend Ledger for each work order, so spend dispatched earlier in the same run counts; a job waiting for owner approval counts only once you add it to the Spend Ledger. Jobs sent for bids, owner approval or an alert are recorded only in the Dispatch Log. Buildium: only work orders in status New updated in the last 7 days are read; Buildium has no NTE field, so the NTE goes at the top of the vendor notes; and a job is dispatched only to a vendor with its Buildium vendor ID in Vendors column H; when the chosen vendor has none, nothing is sent and you are alerted. The cost estimate is an AI guess, which is why every dispatch carries an NTE.

39 steps · advanced