I kept rebuilding the same five workflows for every solopreneur I helped. Different business, same problems: leads getting lost, invoices nobody chased, new clients waiting on a welcome email, content that never got posted, and a pile of receipts in Gmail at tax time.
So here they are. Each one runs on Make.com plus a Google Sheet, and each one fits inside the free Make plan if your volume is small. I'll walk through the module chain in plain language so you can build them yourself this afternoon.
Quick note before we start: you don't need to be technical. If you can make a spreadsheet with column headers, you can do all of this.
1. Lead capture: form to Sheet row plus an instant alert
The problem: someone fills out your contact form, the notification lands in an inbox you check twice a week, and by the time you reply they've hired someone else.
The Sheet: one tab called Leads with columns Timestamp, Name, Email, Source, Message, Status.
The module chain:
- Trigger: Google Forms "Watch Responses" (or a Webhooks "Custom webhook" if you use Tally, Typeform, or a form on your site).
-
Google Sheets: Add a Row. Map each form field to its column. Set
StatustoNewandTimestampto{{now}}. -
Router with two paths:
-
Gmail: Send an Email to yourself, subject like
New lead: {{Name}}, with the message in the body. -
Slack: Create a Message (optional) to a
#leadschannel if you live in Slack.
-
Gmail: Send an Email to yourself, subject like
Why it works: the Sheet becomes your tiny CRM. Add a filter view on Status = New and you have a to-do list. When you reply, change it to Contacted. That's the whole system, and it beats a CRM you never open.
Tip: add a Source field to the form (hidden field or a dropdown) so you know which post or page actually brings in leads.
2. Invoice and payment tracker with an overdue flag
The problem: you send invoices from three places, and "did they pay yet?" lives in your head.
The Sheet: tab Invoices with Invoice #, Client, Email, Amount, Sent Date, Due Date, Paid (checkbox), Status.
Put a formula in Status so the Sheet does the thinking:
=IF(G2, "Paid", IF(TODAY() > F2, "OVERDUE", "Open"))
The module chain:
- Trigger: Schedule, once a day at 9am.
-
Google Sheets: Search Rows where
StatusequalsOVERDUE. - Iterator is built in here, since Search Rows outputs one bundle per row.
- Gmail: Create a Draft to the client: "Hi {{Client}}, just a friendly nudge on invoice {{Invoice #}} for {{Amount}}, which was due {{Due Date}}."
- Gmail: Send an Email to yourself with a summary (use a Text Aggregator before it to list all overdue invoices in one email).
Why drafts and not sends: you'll want to eyeball reminders before they go out, at least for the first month. Once you trust it, swap Create a Draft for Send an Email.
Bonus: if you take payments through Stripe, add a second scenario that watches for payment_intent.succeeded and ticks the Paid box by searching for the matching invoice number.
3. Client onboarding: new row to a welcome email draft
The problem: a client says yes, and then there's a weird two-day silence while you scramble to send the intake form, the calendar link, and the "here's what happens next" email.
The Sheet: tab Clients with Name, Email, Package, Start Date, Onboarded (checkbox).
The module chain:
-
Trigger: Google Sheets "Watch New Rows" on the
Clientstab. -
Google Docs: Create a Document from a Template (optional). Use a welcome packet template with
{{Name}}and{{Package}}placeholders, saved to a client folder. - Google Drive: Create a Folder named after the client, and move the doc there.
- Gmail: Create a Draft with the welcome message, your booking link, and the folder link.
-
Google Sheets: Update a Row to set
Onboardedto true so it never fires twice.
Why it works: adding a row is the only manual step. The client gets a polished welcome in minutes instead of days, and you look far more organized than you feel.
Gotcha: "Watch New Rows" only sees rows added after the scenario starts, and it reads based on row order. Don't sort the tab, or insert rows in the middle, or it can skip or repeat. Always add to the bottom.
4. Content calendar reminder at 8am
The problem: you planned two weeks of posts in a Sheet, then forgot the Sheet existed.
The Sheet: tab Content with Publish Date, Platform, Topic, Caption, Link, Posted (checkbox).
The module chain:
- Trigger: Schedule, every day at 8:00. Set the scenario's timezone in Make's scenario settings (I use America/Chicago). This is the number one reason reminders show up at 3am.
-
Google Sheets: Search Rows where
Publish Dateequals today andPostedis false. Use{{formatDate(now; "YYYY-MM-DD")}}and make sure the Sheet column is formatted the same way. - Text Aggregator to bundle everything into one message: platform, topic, caption.
- Gmail: Send an Email (or a Slack or Telegram message) with "Today's posts" and the captions ready to copy.
Why it works: it turns your content plan into a morning nudge with the caption already written. You go from "what should I post?" to copy, paste, done.
Next step if you want it: for platforms with Make modules (like LinkedIn or Facebook Pages), you can post directly instead of reminding. I'd start with reminders though. Auto-posting a typo to your whole audience is not fun.
5. Expense and receipt logger from Gmail attachments
The problem: receipts arrive by email all year, and in April you search "receipt" and cry.
The Sheet: tab Expenses with Date, Vendor, Subject, Amount, Category, Receipt Link.
The module chain:
-
Trigger: Gmail "Watch Emails" with a filter, for example a Gmail label called
Receipts. Set up a Gmail filter that auto-labels emails from vendors you pay, or just drag receipts into the label. - Iterator over the attachments.
-
Google Drive: Upload a File to a
Receipts/2026folder. Rename it like{{date}}_{{sender}}_{{filename}}so it's searchable. - Google Sheets: Add a Row with the date, sender, subject, and the Drive file's web link.
-
Optional: a Text Parser "Match Pattern" module with a regex like
\$\s?([0-9,]+\.[0-9]{2})to pull the dollar amount from the email body. It won't catch everything, but it gets most of them.
Why it works: your accountant gets one Sheet with links to every receipt. Fill in Category once a month while you watch TV.
Gotchas that will bite you (so they don't)
Reconnecting Google. If your Google Cloud app for Make is in "testing" mode, or if you change your Google password, connections can expire and scenarios quietly stop. Check Make's scenario history once a week, and turn on Make's email notifications for errors.
Operations limits on the free plan. Make counts every module run as an operation, and the free plan gives you a limited monthly allowance. A scenario with 5 modules that runs every 15 minutes burns through that fast, even when nothing happens. Fixes:
- Use Schedule triggers once or twice a day instead of every 15 minutes when real time doesn't matter.
- Use instant triggers (webhooks) where possible, since they only run when something happens.
- Put filters early in the chain so empty runs stop at step one.
Date formats. Sheets and Make don't always agree on dates. Format your date columns as plain YYYY-MM-DD and compare with formatDate() in Make. It saves you an hour of confusion.
Test with yourself first. Use your own email as the "client" until each scenario behaves. Drafts are your friend.
Want the shortcut?
Disclosure: I made and sell the kit below, so weigh my opinion accordingly.
Everything above is buildable for free, and I'd honestly encourage you to build at least one yourself so you understand how it works. But if you'd rather import than build, I packaged all five as Ops Kit: the Make blueprints plus matching Google Sheet templates with the columns and formulas already set up. You import, reconnect your Google account, and run.
It's $39, and this week the code FIRST10 takes $10 off, so it's $29: https://simplypearlnicole-ops-kit.netlify.app/?ref=devto
Either way, steal these. And if you build a sixth one I should know about, tell me in the comments.
Top comments (0)