
How to Create a No-Code Expense Approval Workflow With Google Forms, Slack, and Zapier in 2026
Expense approvals often start with a reasonable request and end in a messy trail of emails, text messages, spreadsheet edits, receipt photos, and hallway conversations. One employee sends a receipt to the owner. Another drops a screenshot in Slack. A manager says “approved” verbally, but nobody updates the reimbursement tracker. By the time bookkeeping happens, the team is trying to reconstruct what was approved, who approved it, and whether the receipt was ever attached.
For a small business, that confusion has real costs. Reimbursements get delayed. Managers approve the same thing twice. Employees send duplicate follow-ups. Finance has to chase missing receipts. Bookkeepers end up with inconsistent records right when they need clean documentation.
A no-code expense approval workflow can give your team a lightweight approval process without building custom software. Using Google Forms, Google Sheets, Slack, and Zapier, you can collect requests in one place, notify the right people, and keep a basic approval log for review.
This guide is written for 5-50 person teams already using Google Workspace, Slack, and basic accounting tools. It is not a replacement for formal accounting controls, tax advice, payroll guidance, or enterprise procurement software. Think of it as a practical operating workflow for small teams that need more structure than email but are not ready for a dedicated expense management platform.
TL;DR: The Simple Workflow You Are Building
Here is the basic workflow:
- An employee submits an expense request through Google Forms.
- Google Sheets stores the response as the approval log.
- Zapier watches for each new Google Forms response or new spreadsheet row.
- Zapier formats key fields like amount, date, employee name, department, vendor, and receipt link.
- Slack receives a structured approval message in a finance or manager review channel.
- A manager replies, reacts, or uses a separate approval step to mark the request as approved, rejected, or needing more information.
- Finance updates the approval status and reimbursement status in Google Sheets.
For a small team processing 10-30 expense requests per week, this kind of workflow may save roughly 1-3 hours per week by reducing manual follow-ups, searching, and reformatting. That is a practical estimate, not a guarantee. The time saved depends on how scattered your current process is and how consistently your team uses the new workflow.
What You Need Before You Start
Before building the automation, make a few decisions. The tools are simple, but the process needs clear rules.
Google Forms
Google Forms is free with a Google account and works well for collecting structured expense details. Use it to capture the employee name, work email, amount, category, business purpose, receipt upload, and manager name.
There are practical limits to understand before you depend on it for a company-wide process. The free tier caps total response cells per account at 400,000, and file upload storage is limited to 15 GB shared with other Google services. Advanced features such as conditional logic are generally tied to paid Google Workspace plans.
If you use Google Workspace, form responses can be tied more cleanly to company accounts, which helps reduce confusion about who submitted each request.
Google Sheets
Google Sheets is free to use for most standard operations and will act as your source of truth. Every form submission becomes a row in the sheet. This sheet becomes your basic audit trail: what was submitted, when it was submitted, who reviewed it, and what happened next.
Be aware that exceeding Google Sheets API request limits is planned to incur charges to a Google Cloud billing account later in 2026. Most small teams using a simple form-to-sheet workflow will not be pushing the API heavily, but this matters if you later add more automation, syncing, or reporting on top of the sheet.
Do not treat Slack as the official record. Slack is helpful for visibility and quick decisions, but Google Sheets should hold the structured approval data.
Slack
Slack’s free tier works for basic notifications and includes unlimited channels and messaging. However, it limits searchable message history to the most recent 90 days, caps app integrations at 10, and restricts huddles to one-on-one only.
Create a dedicated channel before building the Zap. Good examples include:
- #expense-approvals
- #finance-review
- #manager-approvals
A dedicated channel keeps requests from getting buried in general team chat. If your organization needs longer retention, stricter admin controls, or more integrations, review whether a paid Slack plan is required before using Slack as part of an approval process.
Zapier
Zapier connects Google Forms, Google Sheets, and Slack without code. A free Zapier plan may be enough for testing, but it is limited to 100 tasks per month, supports only two-step Zaps, and has a 15-minute update time. A two-step Zap means one trigger and one action.
For this workflow, a basic test could detect a new form response and post a Slack message. If you want to format data, add filters, use paths, update records, or route requests by amount or department, you are using a multi-step Zap. Multi-step Zaps require a paid Zapier plan.
Approval Rules
Decide your approval rules before building the automation. A simple structure might look like this:
| Expense Amount | Approver | Example |
|---|---|---|
| Under $100 | Team lead | Office supplies, parking, small tools |
| $100-$500 | Department manager | Travel costs, software subscriptions, client meals |
| Over $500 | Owner or finance lead | Equipment, conferences, larger vendor purchases |
These rules do not need to be complicated. The goal is to remove ambiguity. Employees should know where requests go, and managers should know when they are responsible for approval.
Step 1: Build the Google Form for Expense Requests
Start by creating a Google Form titled Expense Reimbursement Request. Keep the title plain. Employees should immediately understand what the form is for.
Add the following required fields:
- Employee name
- Work email
- Department
- Manager or requested approver
- Expense date
- Vendor
- Amount
- Expense category
- Business purpose
- Receipt upload
Use dropdown fields where possible. For example, use a dropdown for department instead of a free-text field. Otherwise, you may end up with inconsistent answers like “Sales,” “sales,” “Sales Team,” and “Business Development” for the same department.
The same rule applies to categories. A practical category list might include:
- Travel
- Meals
- Office supplies
- Software
- Client expense
- Training
- Other
For the amount field, add a short help note. For example:
Enter the total amount in USD before taxes, unless your manager has instructed otherwise.
If your business operates in Canada or handles multiple currencies, adjust the note to match your policy. For example:
Enter the total in CAD, including tax. If the receipt is in another currency, attach the original receipt and enter the converted CAD amount.
Next, turn on response collection in Google Sheets. In Google Forms, go to the Responses tab and connect the form to a spreadsheet. This creates a row for every submission and gives you the base approval log.
You can also add an optional policy confirmation checkbox:
I confirm this expense follows the company expense policy and includes a valid receipt.
This does not replace a real policy review, but it reminds employees that reimbursement requests should follow company rules.
Step 2: Create the Zapier Automation From Google Forms to Slack
Now you can connect the form to Slack using Zapier.
Choose the Trigger
In Zapier, create a new Zap and choose either Google Forms or the connected Google Sheet as the trigger app.
You have two common options:
- Google Forms trigger: New form response
- Google Sheets trigger: New spreadsheet row
Both can work. Many teams prefer using Google Sheets as the trigger because the sheet is already the approval log. If you later add columns for status, approver, or accounting export, the spreadsheet remains the center of the workflow.
Format the Data
Add a Formatter by Zapier step if your Slack message needs cleaner formatting. This can help with currency, dates, names, and other fields that need to be easier to read.
For example, a raw form submission may show the amount as:
42.18
In Slack, you may want it to appear as:
$42.18
Likewise, a date may come through in a format that is technically correct but awkward for managers to scan. Formatter can help make the message more readable.
Remember that adding Formatter makes this a multi-step Zap. That can be the right choice, but it means the workflow is no longer limited to the free two-step Zap structure.
Send the Slack Message
Add a Slack action that sends a channel message to your approval channel, such as #expense-approvals.
Use a structured message format so every request looks the same. For example:
New expense approval request
Employee: Jordan Lee
Department: Operations
Amount: $42.18
Vendor: Staples
Category: Office supplies
Expense date: June 12, 2026
Business purpose: Printer paper and shipping labels for client packets
Receipt: [Google Drive receipt link]
Requested approver: Maya Thompson
Reply in this thread with APPROVED, REJECTED, or NEEDS INFO.This format gives the approver the information they need without opening the spreadsheet first. It also gives finance a consistent place to look when checking what happened.
Name the Zap clearly. A good name would be:
Google Form Expense Request to Slack Approval Channel
Before turning the Zap on, test it with a sample request. Use something realistic, such as a $42.18 office supply purchase with a receipt attached. Confirm that the Slack message includes the employee name, amount, vendor, category, business purpose, receipt link, and requested approver.
Step 3: Add Basic Approval Logic and Recordkeeping
The simplest version of this no-code expense approval workflow is easy to manage:
- Employee submits the Google Form.
- Zapier posts the request in Slack.
- Manager replies in the Slack thread.
- Finance or an admin updates the approval status in Google Sheets.
This is manual at the decision stage, but still much cleaner than scattered emails and chat messages.
Add Approval Columns in Google Sheets
In the response spreadsheet, add columns such as:
- Status
- Approver
- Approval timestamp
- Approver notes
- Reimbursement date
- Accounting export status
Use a dropdown for the Status column. Suggested values include:
- Submitted
- Approved
- Rejected
- Needs Info
- Reimbursed
- Exported to Accounting
This keeps the sheet readable and helps you filter requests later.
Create a Separate Approval Decision Form
For a cleaner setup, create a second Google Form called Expense Approval Decision. This form can be used by managers or finance after reviewing the Slack message.
Include fields such as:
- Request ID
- Approver name
- Decision
- Notes
- Approval date
This gives you a more structured approval record than Slack replies alone. The trade-off is that managers have one more form to complete. For some teams, that extra step is worth it because the audit trail is cleaner.
Use Filters and Paths for Routing
If your Zapier plan supports multi-step Zaps, you can add routing logic.
Examples:
- Only post expenses over $250 to a manager review channel.
- Send travel expenses to the operations manager.
- Send software expenses to the owner or IT lead.
- Send client meal expenses to the department manager.
Zapier Filters can stop a Zap unless certain conditions are met. Zapier Paths can send requests down different routes based on amount, department, or category. These features are useful when your process grows beyond one shared approval channel.
There is one important billing detail: Filter, Formatter, and Paths steps no longer count toward task usage on paid Zapier plans. However, using that logic still requires a multi-step Zap, which is not available on the free plan.
For example, you might set up routing like this:
| Condition | Slack Destination | Reviewer |
|---|---|---|
| Amount under $100 | #team-lead-approvals | Team lead |
| Amount $100-$500 | #manager-approvals | Department manager |
| Amount over $500 | #finance-review | Owner or finance lead |
Keep access to the approval sheet limited to owners, finance staff, and managers who need it. Expense records may include employee names, spending details, receipts, addresses, or partial payment information. Do not make the sheet broadly editable across the company unless there is a clear business reason.
Limitations: When This No-Code Expense Approval Workflow Won’t Work
Google Forms, Slack, and Zapier can create a useful workflow, but they are not a full accounting system.
Do not rely on this setup alone for bookkeeping, payroll, tax compliance, or formal financial controls. It can collect requests and support approvals, but your business still needs proper accounting records and professional guidance where appropriate.
There are several practical limitations to understand before rolling this out company-wide.
Free Plans Have Real Constraints
The free versions of these tools can be useful for testing, but they are not unlimited. Google Forms has response cell and storage limits. Slack limits searchable history to the most recent 90 days and caps app integrations at 10. Zapier’s free plan is limited to 100 tasks per month and two-step Zaps.
That does not mean you need paid plans on day one. It means you should test the workflow with real volume before assuming it can support the full company.
Zapier Task Limits Can Add Up
If every expense request triggers formatting, Slack messages, routing, reminders, and sheet updates, you can hit usage limits faster than expected. On paid Zapier plans, Filter, Formatter, and Paths steps no longer count toward task usage, but actions such as posting messages or updating records can still affect usage.
Estimate monthly volume before depending on the workflow. A team submitting 10 requests per month has a very different automation profile from a team submitting 30 requests per week.
Slack Threads Are Not a Perfect Audit Trail
Slack is excellent for quick visibility, but approvals can become hard to audit if decisions stay buried in message threads. If an approver replies “approved” but nobody updates Google Sheets, finance may still have to hunt for the final answer.
That is why the approval status column matters. Slack can be the conversation layer. Google Sheets should be the recordkeeping layer.
Receipt Links May Have Permission Problems
Google Forms receipt uploads are usually stored in Google Drive. If Drive permissions are too restrictive, approvers may not be able to open the receipt. If permissions are too broad, sensitive files may be visible to people who do not need them.
After testing the form, confirm that managers and finance can open uploaded receipts. Also confirm that employees cannot accidentally access other people’s receipts through the upload folder.
Complex Policies Need More Than a Simple Zap
This setup is not ideal for companies with strict compliance requirements, multi-entity accounting, purchase orders, client billback rules, or complex reimbursement policies.
At that point, consider dedicated approval tools, accounting software workflows, or custom development that connects directly to QuickBooks, FreshBooks, NetSuite, or an internal database. A custom workflow may be more cost-effective when manual cleanup, exceptions, and approval confusion start taking more time than the tool saves.
Next Step: Launch a Small Pilot This Week
Do not start by automating every expense category for the whole company. Start small.
Choose one department, one Slack approval channel, and one expense category such as travel or office supplies. Process 10-20 real requests before expanding the workflow to the full team.
Track three simple metrics during the pilot:
- Average approval time
- Number of follow-up messages per request
- Number of requests missing receipts
After two weeks, review what happened. If approvals are faster and employees are submitting cleaner information, expand the workflow. If the process saves time but feels fragile, improve the workflow design before adding more tools.
Useful next improvements may include routing rules, reminder messages, a second approval form, or a sync into your bookkeeping process. You can also connect this work to broader automation planning by reviewing related McCary Group articles on Zapier automation, bookkeeping tools, and measuring automation ROI.
The practical takeaway is simple: a no-code expense approval workflow does not need to be complicated to be valuable. Start with one clean form, one approval log, one Slack channel, and one Zap. Once the process is visible and consistent, you can improve it with confidence.

