Easyflow
Get started

Comparisons

How to build an approval workflow with Google Forms and Sheets (and when to move on)

Build a Google Forms approval workflow step by step with Sheets, notifications, Apps Script or AppSheet, plus its limits and the signs it is time to move on.

Easyflow team 9 min read

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:

  1. The request: a Google Form with the fields the approver needs.
  2. The log: the linked Google Sheet, one row per request.
  3. The decision: a status column, filled in by the approver or by something acting for them.
  4. 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.

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:

ColumnWhat goes in it
StatusPending, Approved, Rejected (a dropdown, so nobody types "ok")
ApproverWho should decide this request
Decided byWho actually decided
Decided onDate of the decision
CommentReason, required for rejections
Order numberFilled 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

OptionHow approvers decideWho maintains itWatch out for
Status column in the sheetOpen the sheet and pick Approved or RejectedWhoever owns the sheetApprovers need edit access to the whole sheet
Apps ScriptA script on form submit emails the approver, with links back to the sheet or a small web appSomeone who writes and fixes codeDaily email quotas, and the script's author leaving
Marketplace add-onApprove and Reject buttons in an email, status written back to the sheetThe add-on vendor, configured by youA third party gets access to your form data
AppSheetAn app built on the sheet, with bots that email approversSomeone comfortable with a no-code app builderApprove-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 SheetsDedicated workflow tool
CostIncluded in Google WorkspaceA subscription
SetupAn afternoon for the basics, longer with scriptsConfigure a form and steps, or start from a template
Routing by amountFormulas, multi-step routing needs scriptUsually built in
Approve from emailThrough scripts, add-ons or AppSheetUsually built in
Reminders and escalationManual or scriptedUsually built in
Audit trailVersion and cell history in a shared sheetA per-request history, exportable
Who sees whatWhoever has access to the sheetEach person sees their own requests and steps
OutsidersPublic forms; uploads need a Google sign-inVaries by tool, see our approval workflow software comparison
MaintenanceWhoever built itThe 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.

Run this process in Easyflow

Start from a ready-made process, adapt the steps and fields to your team, and send the first request in a few minutes. Approvers can decide straight from their email.

Create your workspace