Almost every team that runs on Google Workspace builds its first approval process the same way. Someone makes a Google Form for purchase or time-off requests, links it to a spreadsheet, and the manager checks the sheet now and then and types "Approved" in a column.
It costs nothing extra, takes an afternoon, and for ten requests a month it works. The questions come later: who changed that cell, why the $4,800 request never reached the CFO, and why a supplier is asked to sign in.
Key takeaways
- Google Forms and Sheets give you the request and the log. The routing, the decision and the notifications are what you build on top.
- There are four realistic ways to add the approval step: a status column, Apps Script, a Marketplace add-on or AppSheet.
- The weak spots are the edit history of a shared sheet, permissions, approvals by amount, reminders and people outside your domain.
- Move on when the sheet needs a dedicated maintainer, or when an auditor asks who approved something and the answer takes an hour.
This guide shows how to build a Google Forms approval workflow properly and when to stop. Product details were checked against Google's help and developer docs when this was written; Google changes features and editions often, so confirm what your plan includes.
What a Google Forms approval workflow looks like
Every version has the same four parts:
- The request: a Google Form with the fields the approver needs.
- The log: the linked Google Sheet, one row per request.
- The decision: a status column, filled in by the approver or by something acting for them.
- The messages: telling the approver there is something to decide, and the requester what was decided.
Parts 1 and 2 come built in. Parts 3 and 4 are where the choices, and the maintenance, are.
How to build an approval workflow with Google Forms and Sheets
The example below is a purchase request at a 40-person company where the manager approves up to $1,000 and the CFO also approves above that. The amounts are only an example.
Step 1: Build the request form
Keep it to the fields an approver reads: item, quantity, unit price, supplier, cost center, reason and needed-by date.
In the form's response settings, turn on Collect email addresses so every row says who asked, and restrict responders to your domain if only employees should use it. One detail to know: a file upload question requires respondents to sign in to a Google Account, and the files land in a folder in the form owner's Drive. That matters when you want quotes attached, or outsiders to submit.
Step 2: Link the responses to a sheet
From the form's Responses tab, link it to a new or existing spreadsheet. Then add your own columns to the right of the response columns:
| Column | What goes in it |
|---|---|
| Status | Pending, Approved, Rejected (a dropdown, so nobody types "ok") |
| Approver | Who should decide this request |
| Decided by | Who actually decided |
| Decided on | Date of the decision |
| Comment | Reason, required for rejections |
| Order number | Filled in by purchasing after approval |
A formula can calculate the total and fill the Approver column from the amount, for example the manager below $1,000 and "manager, then CFO" above it. That is the closest Sheets gets to approval limits. Our guide to the approval matrix explains how to choose those tiers.
Step 3: Tell the approver there is something to decide
Google Forms can send you an email for every new response (Responses tab, then Get email notifications for new responses). That tells the form owner a response arrived. It does not route anything to a specific approver.
For routing, Google Sheets has conditional notifications: rules that email people when values change in a column or range, with recipients typed in or taken from a column of email addresses. Google notes that this is only available to certain work or school accounts, and that it does not send to group addresses or to non-Google providers like Outlook or Yahoo.
Step 4: Let the approver decide
The simplest version: approvers open the sheet and set the Status dropdown. The alternatives are compared in the next section.
Step 5: Tell the requester
A second conditional notification rule on the Status column, sending to the email column from the form, tells the requester the request moved. With Apps Script or an add-on, the decision email comes from there instead.
Step 6: Protect the log
Use protected ranges so only approvers can edit the Status and Decided columns. Google is explicit that protection is not a security measure, since people with access can still copy, print or export the spreadsheet. It prevents accidents, not misuse.
Four ways to add the approval step
| Option | How approvers decide | Who maintains it | Watch out for |
|---|---|---|---|
| Status column in the sheet | Open the sheet and pick Approved or Rejected | Whoever owns the sheet | Approvers need edit access to the whole sheet |
| Apps Script | A script on form submit emails the approver, with links back to the sheet or a small web app | Someone who writes and fixes code | Daily email quotas, and the script's author leaving |
| Marketplace add-on | Approve and Reject buttons in an email, status written back to the sheet | The add-on vendor, configured by you | A third party gets access to your form data |
| AppSheet | An app built on the sheet, with bots that email approvers | Someone comfortable with a no-code app builder | Approve-in-email has conditions, see below |
Apps Script. An installable form submit trigger runs your code every time a response arrives, with the answers in the event object. From there a script can look up the approver, send an email and write back to the sheet. It is flexible and free, but it is software: Google applies daily quotas to email recipients and trigger runtime, lower on free Gmail accounts than on Workspace, and states that quotas can change without notice. Check the current Apps Script quotas page before you rely on it.
Marketplace add-ons. The Google Workspace Marketplace lists third-party approval add-ons for Forms that email Approve and Reject buttons and write the result back to the sheet; some advertise multi-level chains and reminders. Review the data access each one asks for.
AppSheet. Google's no-code app builder is the most capable Google-native option. AppSheet Core is included at no extra cost with many Google Workspace editions, including the Business Starter, Standard and Plus plans, and Google's own quick start builds a travel request approval app from a Google Form, with a bot that emails the approver. Approving inside the email itself uses embedded app view emails, which per Google's docs work only in Gmail, only for recipients who are app users, stay interactive for 30 days and cannot be sent to Google Groups.
Approving a document, such as a contract or a policy, is a different job: Google Drive has a built-in approvals feature for files on some Workspace editions.
Where Google Forms approval workflows hit their limits
The audit trail
Sheets keeps version history, and you can right-click a cell and choose Show edit history. But Google's docs list changes that cell history does not show, including added or deleted rows and columns, format changes and changes made by formulas. Anyone with edit access can overwrite a status, sort the sheet or delete a row. It is a log, not a tamper-evident record.
Permissions
To set a status, an approver needs edit access to the sheet, which means seeing every request, including other people's expenses or salaries. Protected ranges limit editing, not visibility.
Approvals by amount
A formula can name the approver for each tier. It cannot make the first approver's decision send the request to the second, or recalculate approvers when the amount changes after a quote. Each of those means more script.
Reminders and escalation
Nothing in Forms or Sheets reminds an approver after two days or escalates to their manager. Someone checks for old "Pending" rows, or a script does.
People outside the company
Outsiders can fill a public form, but a file upload question forces them to sign in to a Google Account. Asking a supplier to complete a later step, or showing a customer the status of their request, has no built-in answer.
Google Forms and Sheets vs a dedicated workflow tool
| Google Forms and Sheets | Dedicated workflow tool | |
|---|---|---|
| Cost | Included in Google Workspace | A subscription |
| Setup | An afternoon for the basics, longer with scripts | Configure a form and steps, or start from a template |
| Routing by amount | Formulas, multi-step routing needs script | Usually built in |
| Approve from email | Through scripts, add-ons or AppSheet | Usually built in |
| Reminders and escalation | Manual or scripted | Usually built in |
| Audit trail | Version and cell history in a shared sheet | A per-request history, exportable |
| Who sees what | Whoever has access to the sheet | Each person sees their own requests and steps |
| Outsiders | Public forms; uploads need a Google sign-in | Varies by tool, see our approval workflow software comparison |
| Maintenance | Whoever built it | The vendor |
Signs it is time to move on
- One person is "the sheet person", and approvals stop when they are on vacation.
- You have more than one approval level, and requests get stuck between the first and the second.
- Approvers ask you to forward the request because they will not open the sheet.
- Someone overwrote a status, and you could not tell who or when.
- The script broke after a column was added, and nobody noticed for a week.
- An auditor or your accountant asks who approved a payment, and the answer takes an hour.
Any two of these usually mean the free option is no longer free. The signs you have outgrown email approvals cover the same moment from the email side.
Frequently asked questions
Does Google Forms have a built-in approval feature?
No. Google Forms collects responses and can store them in a Google Sheet, but it has no approval step. Teams add one with a status column, Apps Script, a Marketplace add-on or an AppSheet app.
Can approvers approve a Google Form request from Gmail?
Yes, with extra setup. Apps Script or an add-on can email links or buttons, and AppSheet supports approving inside the email in Gmail for recipients who are users of the app. Plain Forms and Sheets only send notifications.
Is AppSheet included with Google Workspace?
AppSheet Core is included at no extra cost with many Google Workspace editions, including Business Starter, Standard and Plus. Editions without it can add it as a paid subscription.
Can a Google Form send requests to different approvers based on the amount?
Not by itself. A formula in the linked sheet can pick the approver from the amount, and a notification rule or script can email them. Passing the request to a second approver needs a script or a dedicated tool.
Running it in Easyflow
If you have reached that point, Easyflow keeps the simplicity of a form and adds the parts you would otherwise script. The Purchase request, Expense reimbursement and Vacation request processes in the gallery start with a form like yours. Approval limits can pick approvers by amount, approvers decide from the email after a confirmation page, overdue steps get reminders and escalation, and every request keeps a tamper-evident timeline you can export to CSV or PDF. Outsiders can use public request forms or complete guest steps without an account.
For the full process around the form, from request to delivery, read our guide to the purchase approval workflow.