Automation recipes.
Real workflows we build, grouped by the tools they connect. Each one is a system we can wire into your stack and hand over.
Google Workspace & Gmail
10 recipesCapture supplier invoices from Gmail into Google Sheets
Supplier invoices arrive as PDFs in a shared inbox, each vendor with a different layout, and someone re-keys the line items into a spreadsheet every week.
- Gmail
- Document AI
- Google Sheets
- Apps Script
New invoice email arrives in Gmail → Parser reads the PDF, any layout → Line items written to a per-supplier tab in Sheets → Duplicates flagged, daily summary emailed
Auto-file Gmail attachments to Drive by sender and type
Attachments pile up in a shared inbox and someone has to open each email, work out whose file it is, and save it to the right Drive folder by hand.
- Gmail
- Google Drive
- Apps Script
New email with an attachment arrives in Gmail → Sender and file type matched to a folder rule → File saved to the matching Drive folder
Triage inbound Gmail enquiries into a Sheets queue
General enquiries land in one inbox with no way to see what's outstanding, so requests get answered out of order or missed.
- Gmail
- Google Sheets
- Apps Script
New enquiry email arrives in Gmail → Sender and subject logged to a Sheets queue → Row flagged with priority by rule and an owner assigned
Draft Gmail replies from a knowledge base
Support replies to common questions are retyped from scratch every time, even though the answer already exists in the docs.
- Gmail
- Knowledge base
- Apps Script
New question email arrives in Gmail → Knowledge base searched and a draft reply written → Draft saved to the thread for review → Sent once approved, or edited first
Generate a weekly report from Sheets and email it
A weekly report gets rebuilt by copying numbers out of a working sheet into a summary, then emailing it around, every week without fail.
- Google Sheets
- Gmail
- Apps Script
Scheduled trigger fires weekly → Sheet data pulled and summarised into the report layout → Report emailed to the distribution list
Sync a Google Form to Sheets with validation and alerts
Form submissions land in a spreadsheet unchecked, so bad or incomplete entries aren't caught until someone reviews the sheet later.
- Google Forms
- Google Sheets
- Apps Script
- Gmail
Form submitted → Response written to Sheets → Entry checked against validation rules → Invalid or urgent entries trigger a Gmail alert
Extract data from Drive PDFs into a Sheet
PDFs land in a Drive folder and someone opens each one to copy the numbers into a spreadsheet by hand.
- Google Drive
- Document AI
- Google Sheets
New PDF added to a watched Drive folder → Document parsed and fields extracted → Row written to the Sheet → Files that fail to parse are flagged for a manual look
Send calendar reminders from a Google Sheet
Dates that matter, renewals, follow-ups, deadlines, live in a spreadsheet, and nobody remembers to check it until something is already late.
- Google Sheets
- Google Calendar
- Apps Script
Sheet row reaches its reminder date → Reminder details pulled from the row → Calendar event and Gmail reminder created for the owner
Generate Google Docs from a Sheet row
Proposals, letters, or briefs are built by copying data out of a spreadsheet into a template by hand, one row at a time.
- Google Sheets
- Google Docs
- Apps Script
Row marked ready in Sheets → Template populated with that row's data → Google Doc created and shared with the owner
Flag stale Sheet rows and nudge the owner in Gmail
Rows sit untouched in a tracking sheet, an unpaid invoice, a lead with no follow-up, and nobody notices until someone happens to scroll past it.
- Google Sheets
- Gmail
- Apps Script
Scheduled check scans the sheet for rows past their threshold → Stale rows matched to an owner → Gmail nudge sent to the owner with the row's detail
CRM (Salesforce, HubSpot, GoHighLevel)
10 recipesRoute new HubSpot leads to Slack in real time
New leads land in the CRM but the team finds out hours later, so first response is slow and warm leads cool off.
- HubSpot
- Slack
New lead created in HubSpot → Lead scored and owner matched → Formatted alert posted to the right Slack channel → Owner tagged for first response
Reconcile Salesforce records against an external source nightly
Salesforce and a second system (billing, ERP, a partner feed) drift apart over time, and reconciling them is a manual export-and-compare job.
- Salesforce
- External system API
- Apps Script
Scheduled job runs nightly → Salesforce records compared field-by-field against the external source → Mismatches logged with the specific field and record → Summary sent for review
Respond to GoHighLevel leads instantly with an AI first-touch
New leads sit until someone is free to reply, and by then the enquiry has often gone cold or gone to a competitor.
- GoHighLevel
- AI messaging
- Webhooks
New lead submitted in GoHighLevel → Reply drafted from the enquiry details → First-touch message sent within the same conversation → Lead handed to the owner with the exchange already logged
Sync Salesforce opportunities to a Sheets dashboard
Leadership wants a pipeline view they can skim without opening Salesforce, but the sheet someone maintains is always a week behind.
- Salesforce
- Google Sheets
- Apps Script
Opportunity created or updated in Salesforce → Record synced to the dashboard sheet → Stage and value totals recalculated
Enrich HubSpot contacts on create
New contacts arrive with just a name and email, and reps spend time looking up the company and role before a call is worth making.
- HubSpot
- AI enrichment
- Webhooks
New contact created in HubSpot → Public company and role details researched → Contact record updated with the enriched fields
Dedupe CRM contacts on a schedule
The same contact gets created two or three times, once from a form, once from an import, once from a manual add, and reports double-count them.
- CRM
- Apps Script
Scheduled job scans contacts for likely duplicates → Matches ranked by confidence rules → Records merged automatically above the confidence threshold, flagged below it
Push form submissions into HubSpot with owner assignment
Form leads land in an inbox or a spreadsheet first, then get manually created in HubSpot and handed to a rep, often a day later.
- Web forms
- HubSpot
- Apps Script
Form submitted → Contact and deal created in HubSpot → Owner assigned by territory or workload rule → Owner notified
Log Gmail threads to the matching Salesforce record
Email exchanges with a client happen in Gmail but Salesforce never sees them, so the record looks quiet even when there's an active conversation.
- Gmail
- Salesforce
- Apps Script
Email sent or received in Gmail → Thread matched to a Salesforce contact or opportunity → Thread logged to the matching record
Alert on stalled HubSpot deals in Slack
Deals sit in the same stage for weeks without anyone noticing until a pipeline review surfaces them, by which point momentum is gone.
- HubSpot
- Slack
Scheduled check scans deals against a stalled-stage threshold → Stalled deals matched to owner and channel → Alert posted to Slack with the deal's detail
Generate CRM pipeline reports on a schedule
Pipeline reports get rebuilt by hand before every leadership meeting, pulled from the CRM and reformatted into the deck or sheet people expect.
- CRM
- Google Sheets
- Gmail
Scheduled trigger fires ahead of the reporting cadence → Pipeline data pulled and summarised by stage and owner → Report delivered to Sheets and emailed to the list
Commerce (Shopify, Stripe)
10 recipesSync Shopify orders to Google Sheets and flag refunds
Order and refund data lives in Shopify, but finance works in a spreadsheet and reconciles by hand each day.
- Shopify
- Google Sheets
- Apps Script
New or updated order in Shopify → Order written/updated in a Sheet → Refunds and chargebacks flagged by rule → Daily exceptions summarised
Reconcile Stripe payouts against Shopify orders
Stripe payouts land as lump sums and someone has to manually match them back to individual Shopify orders to close the books.
- Stripe
- Shopify
- Google Sheets
- Apps Script
Stripe payout received → Payout broken down into its component orders → Each order matched against Shopify's order record → Mismatches flagged for review
Flag failed Stripe charges and notify the team
Failed charges sit in Stripe until someone happens to check the dashboard, by which time the customer and the order have both gone cold.
- Stripe
- Slack
- Gmail
Charge fails in Stripe → Failure reason matched to a handling rule → Alert posted to the team with the customer and order detail
Generate Shopify product descriptions with AI
New products sit unpublished, or publish with a one-line description, because writing copy for every SKU is a backlog nobody gets to.
- Shopify
- AI copywriting
New product added in Shopify → Description drafted from the product's attributes and images → Draft saved to the product for review → Published once approved
Route Shopify orders to fulfilment by rule
Orders need to go to different fulfilment centres or partners depending on product, region, or stock, and someone currently sorts that by hand.
- Shopify
- Fulfilment system
- Webhooks
New order placed in Shopify → Order matched against routing rules → Order sent to the matching fulfilment centre or partner
Sync Shopify inventory across channels on a schedule
Stock is sold across Shopify and other channels, but inventory counts drift apart and items oversell before anyone catches it.
- Shopify
- Sales channels API
- Apps Script
Scheduled sync runs across connected channels → Stock counts compared and reconciled → Discrepancies corrected and logged
Export Stripe invoices to accounting nightly
Invoices generated in Stripe get re-entered into the accounting system by hand at the end of each month, a backlog that grows all month.
- Stripe
- Accounting software
- Apps Script
Scheduled job runs nightly → New Stripe invoices pulled since the last run → Invoices written into the accounting system
Tag high-value Shopify customers automatically
Repeat and high-spend customers aren't flagged anywhere, so support and marketing treat them the same as a first-time buyer.
- Shopify
- Apps Script
Order placed or customer lifetime value updates → Value checked against tagging thresholds → Customer tagged in Shopify accordingly
Alert on low Shopify stock in Slack
Stock runs low on a SKU and nobody notices until it's already sold out, losing sales while a reorder should have already gone in.
- Shopify
- Slack
Stock level checked against SKU thresholds → Low-stock SKUs matched to the responsible owner → Alert posted to Slack with current count
Summarise daily Shopify sales into an email
Checking how the day went means logging into Shopify and pulling numbers by hand, every morning, for a summary that's the same shape each time.
- Shopify
- Gmail
- Apps Script
Scheduled trigger fires each morning → Prior day's orders, revenue, and refunds summarised → Summary emailed to the distribution list
Ops & data (Slack, Notion, Airtable)
10 recipesPost Airtable record changes to Slack
The team tracks work in Airtable but has to keep the tab open to notice status changes, so updates get missed.
- Airtable
- Slack
Record status changes in Airtable → Change matched to the relevant channel and owner → Concise update posted to Slack
Sync Notion databases to Google Sheets
A team runs its planning in Notion but reporting tools expect a spreadsheet, so someone exports and re-pastes it by hand.
- Notion
- Google Sheets
- Apps Script
Notion database updates → Change synced to the matching Sheets tab → Sheet stays structured for downstream reporting
Turn Slack messages into Airtable tasks
Action items get raised in Slack threads and then forgotten, because turning a message into a tracked task is a manual copy-paste step nobody does consistently.
- Slack
- Airtable
Message flagged for follow-up in Slack → Task details pulled from the message and thread → Task created in Airtable with the source thread linked
Generate a daily standup digest in Slack from Notion
Standups spend the first ten minutes catching everyone up on what changed in the project tracker overnight.
- Notion
- Slack
- AI summarisation
Scheduled trigger fires each morning → Notion changes since the last run summarised → Digest posted to the team's Slack channel
Sync Airtable to a CRM on a schedule
A team tracks client details in Airtable for its own workflow, but sales needs the same data in the CRM, and keeping both current means updating twice.
- Airtable
- CRM
- Apps Script
Scheduled sync runs on interval → Airtable records compared against the CRM → New and changed records pushed to the CRM
Archive completed Notion tasks to a Sheet
Completed tasks pile up in the active Notion board, making it slower to use, but nobody wants to lose the history by deleting them.
- Notion
- Google Sheets
- Apps Script
Task marked complete in Notion → Task details copied to an archive Sheet → Task removed from the active board
Route form submissions into Airtable with rules
Submissions from different forms all need to land in the right Airtable base and table, and someone currently sorts them by hand after the fact.
- Web forms
- Airtable
Form submitted → Submission matched against routing rules → Record created in the matching Airtable base and table
Send Slack alerts from Airtable status changes
A specific status field, blocked, overdue, ready for review, needs eyes fast, but nobody watches the base closely enough to catch the change.
- Airtable
- Slack
Status field changes on an Airtable record → Change matched against the statuses worth alerting on → Alert posted to the relevant Slack channel
Roll up Airtable data into a weekly Slack report
A weekly status update gets built by scrolling through Airtable views and typing up what changed, the same manual pass every week.
- Airtable
- Slack
Scheduled trigger fires weekly → Records rolled up by status, owner, and change → Summary posted to Slack
Sync Slack channel activity to a Notion log
Decisions and updates get made in Slack and then vanish into scroll history, with no durable record for anyone who wasn't watching at the time.
- Slack
- Notion
Message flagged or matches a logging rule in Slack → Message content and thread context captured → Entry added to the Notion log
Continues · Don't see your workflow?
Don't see your workflow?
These are examples, not a menu. Tell us the task and the tools and we'll scope it.
We typically respond within 24 hours
