<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zachariah Mi</title>
    <description>The latest articles on DEV Community by Zachariah Mi (@zachariahm1).</description>
    <link>https://dev.to/zachariahm1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3824862%2Fb7a82dc0-56b3-498a-b1d7-c684b2468708.jpg</url>
      <title>DEV Community: Zachariah Mi</title>
      <link>https://dev.to/zachariahm1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zachariahm1"/>
    <language>en</language>
    <item>
      <title>How to Automate Client Intake for Law Firms Using n8n</title>
      <dc:creator>Zachariah Mi</dc:creator>
      <pubDate>Tue, 31 Mar 2026 17:41:22 +0000</pubDate>
      <link>https://dev.to/zachariahm1/how-to-automate-client-intake-for-law-firms-using-n8n-1lfo</link>
      <guid>https://dev.to/zachariahm1/how-to-automate-client-intake-for-law-firms-using-n8n-1lfo</guid>
      <description>&lt;h1&gt;
  
  
  How to Automate Client Intake for Law Firms Using n8n
&lt;/h1&gt;

&lt;p&gt;Lawyers bill by the hour. Admin work doesn't bill at all.&lt;/p&gt;

&lt;p&gt;Client intake is one of the worst offenders. A potential client fills out a contact form. Someone on staff manually enters them into the CRM. Someone else sends a welcome email and the intake questionnaire. Another person follows up two days later if the form hasn't come back. Someone else schedules the consultation. None of that requires a law degree.&lt;/p&gt;

&lt;p&gt;Here's how to automate the whole chain with n8n.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You're Building
&lt;/h2&gt;

&lt;p&gt;A workflow that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Captures new intake form submissions&lt;/li&gt;
&lt;li&gt;Creates the contact in your CRM automatically&lt;/li&gt;
&lt;li&gt;Sends a personalized welcome email with the intake questionnaire&lt;/li&gt;
&lt;li&gt;Follows up automatically if the questionnaire isn't returned in 48 hours&lt;/li&gt;
&lt;li&gt;Notifies the attorney when a completed intake comes in&lt;/li&gt;
&lt;li&gt;Schedules the initial consultation based on real calendar availability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing runs without anyone touching it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;n8n (self-hosted or cloud — cloud is easier to start)&lt;/li&gt;
&lt;li&gt;Your intake form tool (Typeform, JotForm, Gravity Forms, or whatever you use)&lt;/li&gt;
&lt;li&gt;A CRM (Clio, MyCase, Salesforce, HubSpot — all have n8n integrations)&lt;/li&gt;
&lt;li&gt;Gmail or Outlook for the email steps&lt;/li&gt;
&lt;li&gt;A scheduling tool like Calendly or Acuity (optional but recommended)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up the Trigger
&lt;/h2&gt;

&lt;p&gt;In n8n, create a new workflow and add a &lt;strong&gt;Webhook&lt;/strong&gt; node as the trigger. This gives you a URL that your intake form will post to when someone submits it.&lt;/p&gt;

&lt;p&gt;In your form tool, go to the integrations or webhooks section and paste that URL. From that point on, every new form submission fires the workflow.&lt;/p&gt;

&lt;p&gt;If you use Typeform, n8n has a native Typeform trigger node — even easier, no webhook setup needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create the CRM Contact
&lt;/h2&gt;

&lt;p&gt;Add a node for your CRM. If you use Clio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Action: Create Matter or Create Contact&lt;/li&gt;
&lt;li&gt;Map the form fields: name, email, phone, case type, how they heard about you&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use HubSpot or Salesforce, the setup is nearly identical. Map the form fields to the CRM fields, save.&lt;/p&gt;

&lt;p&gt;Now every intake form submission creates a contact automatically without anyone doing data entry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Send the Welcome Email
&lt;/h2&gt;

&lt;p&gt;Add a Gmail or Outlook node.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To: the email from the form submission&lt;/li&gt;
&lt;li&gt;Subject: "Thanks for reaching out — here's what's next"&lt;/li&gt;
&lt;li&gt;Body: a short, warm message explaining what happens next and including a link to the intake questionnaire (if you didn't capture everything in the initial form)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep the email short. People who just submitted a form don't want to read an essay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Add a 48-Hour Follow-Up
&lt;/h2&gt;

&lt;p&gt;Add a &lt;strong&gt;Wait&lt;/strong&gt; node set to 48 hours.&lt;/p&gt;

&lt;p&gt;After the wait, add an &lt;strong&gt;If&lt;/strong&gt; node that checks whether the intake questionnaire has been completed. How you check this depends on your setup — you might check for a tag in the CRM, a field update, or a second webhook from the questionnaire form.&lt;/p&gt;

&lt;p&gt;If not completed: send a short follow-up email. One sentence. "Just checking in — did you get a chance to fill out the intake form? Here's the link again."&lt;/p&gt;

&lt;p&gt;If completed: skip the follow-up and move to the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Notify the Attorney
&lt;/h2&gt;

&lt;p&gt;When the intake comes in complete, send a Slack message or email to the responsible attorney with a summary: client name, case type, key details from the intake, and a link to the CRM record.&lt;/p&gt;

&lt;p&gt;They should never have to go hunting for this information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Send the Scheduling Link
&lt;/h2&gt;

&lt;p&gt;At the same time as the attorney notification, send the client a scheduling email with a direct Calendly or Acuity link. Let them pick a time that works without any back-and-forth.&lt;/p&gt;

&lt;p&gt;If you want to get more sophisticated, you can use the Calendly API in n8n to pull available slots and embed them directly in the email rather than sending them to a landing page.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Saves
&lt;/h2&gt;

&lt;p&gt;A typical law firm intake process takes 45-90 minutes of staff time per lead across all the manual steps. For a firm handling 20 new inquiries a month, that's 15-30 hours of admin work eliminated every month.&lt;/p&gt;

&lt;p&gt;More importantly: response time drops from hours or days to minutes. Leads who get a response in the first hour are significantly more likely to retain you than those who wait until the next business day.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Build Next
&lt;/h2&gt;

&lt;p&gt;Once intake is running, two natural extensions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Document collection.&lt;/strong&gt; Add a step that creates a client folder in Google Drive or SharePoint automatically and sends a document request for the initial paperwork.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conflict check.&lt;/strong&gt; Add a step that searches your CRM for the opposing party name and flags any potential conflicts before the consultation is scheduled.&lt;/p&gt;

&lt;p&gt;Both can be added to the same workflow.&lt;/p&gt;




&lt;p&gt;If you want this built for your firm's specific stack, whether you're on Clio, MyCase, or a custom setup, &lt;a href="https://aplosai.com/audit" rel="noopener noreferrer"&gt;Aplos AI builds these for law firms&lt;/a&gt; at a fixed price. Most intake automation builds come in under $6,000 and recover that cost in the first two months.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Running a different practice management system? Drop it in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>n8n</category>
      <category>tutorial</category>
      <category>nocode</category>
    </item>
    <item>
      <title>How to Automate Invoice Processing for HVAC Companies Using Make.com</title>
      <dc:creator>Zachariah Mi</dc:creator>
      <pubDate>Wed, 25 Mar 2026 21:54:54 +0000</pubDate>
      <link>https://dev.to/zachariahm1/how-to-automate-invoice-processing-for-hvac-companies-using-makecom-401b</link>
      <guid>https://dev.to/zachariahm1/how-to-automate-invoice-processing-for-hvac-companies-using-makecom-401b</guid>
      <description>&lt;h1&gt;
  
  
  How to Automate Invoice Processing for HVAC Companies Using Make.com
&lt;/h1&gt;

&lt;p&gt;If you run an HVAC company, you already know how this goes. Job wraps up Friday afternoon. Technician drives home. Invoice doesn't go out until Tuesday. Client forgets. You follow up. They pay late. You chase it again.&lt;/p&gt;

&lt;p&gt;The whole thing is automatable. Here's how to build it with Make.com.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You're Building
&lt;/h2&gt;

&lt;p&gt;A workflow that watches for completed jobs, pulls the job details, generates an invoice from a template, and emails it to the client as a PDF. All without anyone touching it.&lt;/p&gt;

&lt;p&gt;Specifically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Watches for completed jobs in your CRM or a Google Sheet&lt;/li&gt;
&lt;li&gt;Pulls job details (client name, address, technician, services performed, total)&lt;/li&gt;
&lt;li&gt;Creates a professional invoice from a Google Docs template&lt;/li&gt;
&lt;li&gt;Emails it to the client automatically&lt;/li&gt;
&lt;li&gt;Logs the invoice so nothing gets sent twice&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No code required. Free to start on Make.com's basic plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need Before Starting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Make.com account (free tier works fine for low volume)&lt;/li&gt;
&lt;li&gt;Google account with Drive, Docs, and Gmail&lt;/li&gt;
&lt;li&gt;Your job data somewhere Make can read it: Google Sheet, Airtable, Jobber, ServiceTitan, or HouseCall Pro all have direct Make integrations&lt;/li&gt;
&lt;li&gt;An invoice template, which we'll set up in Step 1&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Build Your Invoice Template in Google Docs
&lt;/h2&gt;

&lt;p&gt;Open a Google Doc and lay out your invoice the way you want it to look. For any field that changes per job, use double curly braces as placeholders:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client: {{client_name}}
Service Address: {{service_address}}
Date of Service: {{service_date}}
Technician: {{technician_name}}

Services Performed:
{{services_performed}}

Parts: {{parts_list}}
Labor: {{labor_cost}}
Parts Total: {{parts_total}}
Tax: {{tax}}
Total Due: {{total_due}}

Payment Due: {{due_date}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the doc inside a Google Drive folder called something like "Invoice Templates." Make will use this to generate a new document for each job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Set Up Your Data Source
&lt;/h2&gt;

&lt;p&gt;If you track jobs in a Google Sheet, add columns for each placeholder above. You'll also want a column called "Invoice Sent" that starts blank.&lt;/p&gt;

&lt;p&gt;If you use Jobber, ServiceTitan, or HouseCall Pro, you can trigger the scenario directly when a job is marked complete. No spreadsheet needed.&lt;/p&gt;

&lt;p&gt;For this tutorial, we'll use the Google Sheet approach since it works for everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Build the Make.com Scenario
&lt;/h2&gt;

&lt;p&gt;Log into Make.com and create a new scenario. You need four modules:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module 1: Google Sheets — Search Rows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connect your sheet and filter for rows where "Invoice Sent" is blank. Set the limit to 1. Processing one invoice at a time keeps things clean and easier to debug.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module 2: Google Docs — Create Document from Template&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select your invoice template. Map each &lt;code&gt;{{placeholder}}&lt;/code&gt; to the matching column from your sheet. Point the output to a folder like "Invoices/2025" so everything stays organized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module 3: Google Drive + Gmail — Convert to PDF and Send&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Add a Google Drive module to export the new doc as a PDF, then a Gmail module to send it. Set the recipient to &lt;code&gt;{{client_email}}&lt;/code&gt;, attach the PDF, and write a short professional body. Something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hi {{client_name}}, please find your invoice attached for the service on {{service_date}}. Let us know if you have any questions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Module 4: Google Sheets — Update Row&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mark "Invoice Sent" as TRUE so this job never gets invoiced again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Test It
&lt;/h2&gt;

&lt;p&gt;Add a row to your sheet with real-looking test data. Run the scenario manually. Confirm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Google Doc was created with the right fields filled in&lt;/li&gt;
&lt;li&gt;The PDF came through on the email&lt;/li&gt;
&lt;li&gt;The row is now marked as sent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fix anything that looks off before scheduling it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Schedule It
&lt;/h2&gt;

&lt;p&gt;Set the scenario to run every hour, or once a night at 6 PM, whichever fits your workflow. From that point on, any completed job without an invoice gets one sent automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Actually Saves You
&lt;/h2&gt;

&lt;p&gt;Businesses that automate invoice processing cut processing costs by 60-70% compared to doing it manually. For a small HVAC company sending 15-30 invoices a month, that typically works out to 3-5 hours of admin time per week.&lt;/p&gt;

&lt;p&gt;The bigger impact is timing. Invoices go out same-day instead of days later. That change alone tends to move the needle on how fast clients pay.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Build Next
&lt;/h2&gt;

&lt;p&gt;Once this is running, two natural extensions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Payment reminders.&lt;/strong&gt; If no payment comes in after 14 days, trigger a follow-up email automatically. Same scenario, just add a scheduled check against your sheet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QuickBooks sync.&lt;/strong&gt; Add a QuickBooks module right after the Gmail send. The invoice gets created in your accounting software at the same time it goes to the client. Your books stay current without any manual entry.&lt;/p&gt;

&lt;p&gt;Both can be added to the same scenario without rebuilding anything.&lt;/p&gt;




&lt;p&gt;If you want this built for your exact setup, whether that's Jobber, ServiceTitan, HouseCall Pro, or a custom CRM, &lt;a href="https://aplosai.com/audit" rel="noopener noreferrer"&gt;Aplos AI builds these for HVAC companies&lt;/a&gt; at a fixed price. Most invoice automation builds come in under $5,000 and pay for themselves in the first quarter.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Running a different field service stack? Drop it in the comments. Always curious what people are actually using out in the field.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>makecom</category>
      <category>tutorial</category>
      <category>nocode</category>
    </item>
    <item>
      <title>I automated a law firm's client onboarding with n8n. Here's the exact flow.</title>
      <dc:creator>Zachariah Mi</dc:creator>
      <pubDate>Sun, 15 Mar 2026 04:44:59 +0000</pubDate>
      <link>https://dev.to/zachariahm1/i-automated-a-law-firms-client-onboarding-with-n8n-heres-the-exact-25pm</link>
      <guid>https://dev.to/zachariahm1/i-automated-a-law-firms-client-onboarding-with-n8n-heres-the-exact-25pm</guid>
      <description>&lt;p&gt;Most law firm onboarding is a chain of manual tasks. Someone fills out an intake form. Someone else runs a conflict check. A paralegal sends the retainer. Another person sets up billing. Someone eventually remembers to send the welcome email.&lt;/p&gt;

&lt;p&gt;Each handoff is a place where things stall. Here's how to wire it so one form submission handles all of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typeform (intake form)&lt;/li&gt;
&lt;li&gt;n8n (orchestration)&lt;/li&gt;
&lt;li&gt;Clio or MyCase (conflict check + case management)&lt;/li&gt;
&lt;li&gt;PandaDoc (retainer agreement)&lt;/li&gt;
&lt;li&gt;Stripe (billing)&lt;/li&gt;
&lt;li&gt;Gmail (welcome packet)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;You can swap Zapier or Make for n8n if you prefer. The logic is the same.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The flow&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Client submits Typeform → n8n webhook fires&lt;/li&gt;
&lt;li&gt;n8n checks opposing party names against existing Clio contacts&lt;/li&gt;
&lt;li&gt;If conflict found → notify attorney via Slack/email, stop workflow&lt;/li&gt;
&lt;li&gt;If no conflict → create new contact in Clio, trigger PandaDoc to send pre-filled retainer&lt;/li&gt;
&lt;li&gt;PandaDoc webhook fires when retainer is signed&lt;/li&gt;
&lt;li&gt;n8n receives the signed event → create Stripe invoice or payment link → send to client&lt;/li&gt;
&lt;li&gt;On payment → trigger Gmail node to send welcome packet with next steps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The part most tutorials skip&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The conflict check is usually treated as an afterthought. It's not. Most bar complaints around conflicts come from manual processes falling through — someone forgot to check, or checked the wrong name variant.&lt;/p&gt;

&lt;p&gt;In n8n, you make a GET request to the Clio API with the opposing party name from the intake form. If the response returns any matches, you branch the workflow to a notification node instead of continuing.&lt;/p&gt;

&lt;p&gt;Takes about 20 minutes to set up. Not optional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this actually saves&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A typical firm doing 15-20 new matters a month is burning 2-3 hours per intake on coordination. This workflow cuts it to about 10 minutes of attorney review time per matter. The rest runs automatically.&lt;/p&gt;

&lt;p&gt;The retainer goes out faster. Billing gets set up before the client forgets they hired you. The welcome packet doesn't depend on anyone remembering to send it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;n8n lets you export workflows as JSON. If you want the template for this flow, drop a comment — I'll share it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built by &lt;strong&gt;&lt;a href="https://aplosai.com" rel="noopener noreferrer"&gt;https://aplosai.com&lt;/a&gt;&lt;/strong&gt; — we set up automations like this for small businesses and professional services firms.
&lt;/h2&gt;

</description>
      <category>automation</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
