Google Drive Document Approval Workflow
Run a named approve, reject, or request-changes path on files that already live in Google Drive, bound to fileId, revision, and a decision log.
— Craig Major
You can run a named approve, reject, or request-changes path on files that already live in Google Drive. Native Drive Approvals records the reviewers. A decision evidence log, the decision log in this guide, binds each decision to fileId and revisionId so a later edit cannot pretend to inherit yesterday’s yes. The Google Drive Document Approval Template gives you the setup checklist, that log, and seven worked cases.
Start from the published Document Approval Workflow if you still need the shared status and role model. Drive stores and routes the file. It is not organizational authority.
Who this is for
Use this when controlled procedures already live in a Google shared drive and the missing piece is a named decision on a frozen version.
The download includes:
- A setup checklist for edition, admin settings, sharing, identity, and revision lock
- A decision log with file, revision, reviewer, and outcome fields
- Seven Cedar & Quay cases, including unauthorized reviewer, stale version, timeout, and a duplicate callback
- An original notify-only reminder design. Reminders never change status
You still need one document family for the first build, a Workspace edition that can start Approvals, writer access with canStartApproval true, named reviewers who are Google Accounts and can open the file, and a place to keep the decision log.
Keep neighboring jobs on their own pages. If you still need to decide what to automate first, use Document Processing Automation. If the pain is unread PDFs, use intelligent document processing. Drive does not extract invoice fields by itself. If the job is a money register, use invoice processing automation or the Google Sheets invoice tracker. If the job is a renewal register, use the contract tracker. If the file lives in Dropbox, use the published Dropbox document approval workflow. Electronic signature is a separate legal act.
What Drive adds to the shared model
The parent owns the control job: closed statuses, named authority, version lock, reminders that never auto-approve, and one idempotent downstream action. This page does not invent a second schema.
Drive implements the file half and the native Approvals adapter:
- Native
fileIdplusrevisionId - Drive Approvals statuses
IN_PROGRESS,APPROVED,CANCELLED,DECLINED - All listed reviewers must approve; any one decline completes
DECLINED fileContentChangeBehavior:RESET_APPROVAL(default) versusNO_APPROVAL_ACTION(alignment)- Optional
lockFileat start; writers can unlock dueTimereminders when a due date is setcanStartApprovalgates and admin Approvals toggles- Shared-drive roles with no owner role
files.watchandchanges.watchnotifications that still need a change poll
The published Document Approval Status and Role Matrix stays the app-neutral field and status list. Parent closed statuses stay 1:1: draft, submitted, in_review, changes_requested, pending_escalation, approved, rejected, cancelled, superseded, duplicate. Drive overlay statuses record access and exception states: access_verified, unauthorized_attempt_logged, external_access_denied.
Which editions and admin settings you need
Availability depends on your Google Workspace edition and on admin settings. As of 9 September 2026, Google Workspace Admin Help lists Business Standard, Business Plus, Enterprise Standard, Enterprise Plus, Education Plus, Essentials, Enterprise Essentials, Enterprise Essentials Plus, and G Suite Business.
Google’s public pages are not consistent. Drive Help describes a narrower Enterprise and Education Plus set. A June 2026 Workspace Updates post adds Enterprise Starter and Nonprofits. Confirm canStartApproval in your tenant before you promise the feature to a team.
canStartApproval is false when an admin restricted the feature, the edition is ineligible, the file is owned by a user outside your domain, or the caller is not a writer. An admin can also turn Approvals off for an organizational unit or group, and can allow or block external reviewers. Drive does not auto-share the file with reviewers. Writers can unlock an item during approval. If a writer unlocks during a RESET_APPROVAL, Drive resets the approval.
Google does not publish seat prices here, so this page does not either. Exact API rate quotas are unpublished.
File identity, revision, and lock
Prefer native fileId over a URL or path. URLs change when you move a shortcut. Freeze identity when the row enters in_review:
file_idrevision_id- optional content hash or
modifiedTime content_change_behaviorapproval_idafter start
A later decision that cites a different revision under RESET_APPROVAL is stale. Void it. Recapture metadata. Start a new Approvals cycle. Do not reuse the prior decision_id or approval_id as current authority.
Official revisions docs, accessed 9 September 2026, say a user needs owner, organizer, fileOrganizer, or writer to access revision history. Blob revisions can be marked keepForever, up to 200, and those count toward storage. Other blob revisions are typically kept about 30 days and can be purged earlier when a file has 100 unmarked revisions. The head revision is not auto-purged. Docs and Sheets revisions are not deleted the same way. Revision history is a restore window, not a certified approval audit.
Drive Help says you can view previous approvals in version history for Docs, Sheets, and Slides. That UI is not listed for ordinary PDFs. Confirm it on the file type you actually use.
RESET_APPROVAL is the default. If the file is edited while the approval is IN_PROGRESS, reviewer APPROVED responses reset. The Drive API guide says the response returns to NO_RESPONSE. The REST resource text for RESET_APPROVAL says NO_DECISION. The Response enum itself lists NO_RESPONSE. Treat those two wordings as the same reset. When the approval completes as APPROVED under RESET_APPROVAL, Drive locks the file. Later edits show that the current version differs from the approved one.
NO_APPROVAL_ACTION is alignment. Edits do not reset reviewer decisions. The file is not locked on complete. Use it only when the policy does not require the same content.
lockFile can lock the file at start. Any writer can remove the lock. Drive Help says unlocking during an active same-content review resets approvals. Lock is not a tamper-proof separation-of-duties control.
Shared drives own the file for the organization. Official shared-drive docs list organizer, fileOrganizer, writer, commenter, and reader. The owner role is not allowed. Permissions are expansive: a commenter on the drive cannot be reduced deeper in the tree. A shared drive can hold 500,000 items and 100 nested folder levels. Organizer title is not Approver.
Decision log fields
The decision evidence log (DecisionEvidence) is the durable record. After this section, this page calls it the decision log.
Every terminal action writes a row. The reader columns are:
| Field | Job |
|---|---|
| request_id | Stable request key |
| approval_id | Drive Approvals id after start |
| file_id | Drive native id |
| revision_id | Frozen revision |
| content_change_behavior | RESET_APPROVAL or NO_APPROVAL_ACTION |
| requester | Named person |
| approver | Named matrix actor who decided |
| decision | approve, reject, or request_changes |
| decided_at | When the person decided |
| rationale | Why, required on reject or changes |
| next_action | notify, move_to_approved, hold, or none |
Keep the parent keys beside those columns: decision_id, authority_rule_id, duplicate_key as lower(file_id)|lower(revision_id), idempotency_key as request_id|decision_id|action, downstream_write_count as 0 or 1, and access_test_result.
Comments, labels, activity rows, and folder moves may be linked as discussion or access refs. They never stand alone as approval evidence.
Comments, labels, activity, and folder moves
Drive comments and Approvals comments are collaboration. Approvals comment sends a notification and writes to the approval activity log. That is not a status change.
Drive Labels organize, find, and feed DLP or Vault conditions. A label is not a named approve.
Admin activity and audit exports can support an investigation. They are not the decision log. Data regions Help covers original Drive file content and associated comments for covered editions. It does not cover logs or cached content. Ask the residency questions. This page does not certify compliance.
Anyone-with-the-link access is not identity proof. API reviewerEmails must be Google Accounts. A visitor path is a sharing topic, not a safe anonymous approve.
A move or shortcut into Approved after a matching decision-log row is the allowed downstream action. A move with no log row is a mess, not an approval.
When to reset approvals, and what this is not
Choose RESET_APPROVAL when the same content must be approved. Choose NO_APPROVAL_ACTION when the team only needs a lightweight alignment and accepts that later edits do not void prior responses. Alignment is a different policy, not a safer one.
Electronic signature is a separate execution job. A file may need both, in that order, under a separate policy. Drive does not perform IDP or OCR by itself. A confidence score must not auto-approve.
The published Google Sheets invoice tracker is an AP register. A Sheets status column is not Drive Approvals.
If the file lives in Dropbox, the published Dropbox document approval workflow uses folder naming plus file id and rev because Dropbox has no ordinary-file Approvals product. Do not copy Dropbox folder rules onto Drive Approvals, and do not copy Drive statuses onto Dropbox.
Worked example
Cedar & Quay Fabrication Ltd is a fictional Toronto fabricator. Quality owns supplier procedure DOC-CQ-PROC-014. Version 1.3 is the candidate. Jordan Hale is the Quality Coordinator. The file sits in shared drive CQ-Quality-Controlled. Morgan Reid (Ops Manager) and Avery Chen (Quality Lead) are the named reviewers. Jordan confirms writer access, canStartApproval, and a manual share, then starts Drive Approvals with RESET_APPROVAL. The decision log stores request REQ-CQ-2026-0914, approval_id APPR-CQ-0914, doc_id DOC-CQ-PROC-014, file id id:FICTION-CQ-PROC-014, revision rev:1a2b3c4d5e6f013, both reviewers, approve, decided_at, rationale, and next_action move_to_approved. Write count stays 1.
That clean path is case 1 in the Google Drive Document Approval Template. The other six cases reuse the same document family.
The Google Drive approval workflow
- Intake. A file lands in the controlled library. Register
request_id, requester, and a pointer. Do not approve on upload. - Gates. Confirm edition, admin Approvals toggle, writer role, and
canStartApproval. Fail closed when any gate is false. - Share. Invite reviewers on the file. Drive does not auto-share on
approvals.start. A request can succeed while reviewers see nothing. - Access test. Confirm each named reviewer can open the file as a Google Account, not only a public link. Failures become
external_access_denied. - Identity. Capture fileId and revision. Refuse in_review if identity is missing.
- Start. Call or click Approvals start with
reviewerEmails, optionaldueTime, optionallockFile, andfileContentChangeBehavior. Status becomesIN_PROGRESS. Only oneIN_PROGRESSapproval is allowed per file. - Decide. Each named reviewer approves or declines. Native routing is all-must-approve. Request-changes is an overlay: decline or cancel, revise, start a new
approval_id. Write the decision log for the named act. - Remind and escalate. Native reminders fire when
dueTimeis set. After timeout, setpending_escalationand reassign to the escalation approver. Timeout does not approve. - Invalidate stale versions. Under
RESET_APPROVAL, an edit or a writer unlock during review resetsAPPROVEDresponses. A log row that still cites the old revision isstale_version. - Stop duplicates. A second start while
IN_PROGRESSfails. A replayedfiles.watchorchanges.watchnotification with the samedecision_idis ignored. Write count stays 1. - Handoff. After approve, shortcut or copy once to the Approved library. Retry with the same idempotency key.
- Evidence. Export the log. Keep comments, labels, activity, and Vault questions as support, not as the decision.
If you later add an integration, official push-notification docs say Drive can watch files and changes. The POST body is empty. Headers name the channel and a resource state such as add, update, or change. You still list changes and match them to fileId and revision. Channels expire and are not auto-renewed. Exact numeric rate quotas are unpublished. Handle HTTP 429. Confirm live wiring in your tenant. A watch notification is not a decision-log row.
What can run automatically, and what cannot
| Situation | Automatic action | Person required |
|---|---|---|
| File uploaded to the library | Optional notify | No |
canStartApproval false |
Stay submitted | Admin or owner fixes edition, toggle, ownership, or writer |
| Reviewer not shared | Request may start; reviewer sees nothing | Owner shares the file |
| Named reviewers all approve | Drive Status APPROVED; one Approved-library write | The decisions themselves |
| One reviewer declines | Drive Status DECLINED | Owner revises or stops |
| Request-changes overlay | Cancel or decline; new version; new approval_id | Owner uploads the revision |
| Actor not in reviewerEmails | Exception unauthorized_approver | Process owner. Drive reviewers unchanged |
| Decision cites an old revision under RESET | Exception stale_version | Restart on the current head |
| Second start while IN_PROGRESS | Native start fails; ops status duplicate | Continue the canonical approval |
| Watch or change notification replay | Ignore the second write | Confirm write count 1 |
| External reviewer blocked | Status external_access_denied | Replace reviewer or fix admin/share |
| SLA missed | Native reminder, then overlay escalate | Escalation approver. No auto-approve |
| Payment or bank-detail change | Never | Entirely outside |
Human decisions
A person keeps these decisions:
- Approve, reject, or request-changes
- Authority and self-approval conflicts
- Whether RESET_APPROVAL or alignment is the policy
- Stale-version restarts after edit or unlock
- Duplicate versus canonical request
- External-access or missing-share failures
- Escalation after timeout
- Whether electronic signature is even in scope, as a separate job
- Payment release and any supplier bank-detail change
A comment can send a person to the file. It cannot approve. A label cannot approve. A folder move cannot approve. A watch notification cannot approve. Timeout cannot approve.
Failure paths
| Failure | Expected status | Downstream | Payment |
|---|---|---|---|
| Unauthorized actor or comment-as-approve | in_review plus unauthorized_approver | No write | Blocked |
| Stale revision after RESET or unlock | stale_version, still in_review | No write | Blocked |
| Duplicate start or replayed watch | duplicate | No second write | Blocked |
| External-access denial | external_access_denied | No decision yet | Blocked |
| Timeout with no person | pending_escalation | No auto-approve | Blocked |
| canStartApproval false | submitted plus can_start_false | No start | Blocked |
| Start without share | in_review plus missing_share | No reviewer action | Blocked |
| Electronic signature treated as approve | Exception sign_confused_as_approval | No internal approve | Blocked |
| Sheets tracker treated as the approval log | Exception tracker_confused_as_approval | No substitute log | Blocked |
| Any payment or bank-detail change | Forbidden | Forbidden | Forbidden |
Test cases
The seven Cedar & Quay cases are control fixtures. They are not customer results.
| Case | Input | Without the decision log | After the control |
|---|---|---|---|
| Clean approve | DOC-CQ-PROC-014 v1.3, Morgan and Avery named | File sits IN_PROGRESS | APPROVED plus one Approved-library write |
| Request changes then new version | Avery asks for section 4 | Old comment looks like progress | New revision and new approval_id; prior decision not reused |
| Unauthorized approver | Finance clerk comments "approved" | Status flipped by chat | unauthorized_approver; Drive reviewers unchanged |
| Stale revision | Approve cites v1.3 after a RESET edit | Wrong version marked approved | Void; recapture current revision |
| External-access denial | Supplier reviewer lacks share or Google Account | Email treated as approve | external_access_denied |
| Timeout / escalation | due_at 1 September 2026, as_of 9 September | Silence treated as approve | pending_escalation to Sam Okonkwo |
| Duplicate / idempotent callback | files.watch replay for the same decision_id | Second Approved write | First write wins; write count 0 on the replay |
The paired template walks each case on its own sheet and in csv/case-recalc.csv.
What to measure
Record requests received, share of rows with fileId and revision captured, unauthorized attempts blocked, duplicate notifications suppressed, timeouts escalated without auto-approve, access tests passed before in_review, canStartApproval failures caught before start, and approvals that have a library or log write ref. Keep those as definitions. Do not invent a benchmark, accuracy rate, or ROI figure.
There is no live production Drive approval metric here, and no Flowgrammer customer Drive case.
How to use the template
Download the Google Drive Document Approval Template. It is an editable workbook and CSV pack, not a Marketplace listing and not a live Drive file.
- Read
README.md, thenmarkdown/setup.md. - Walk DriveSetupChecklist and EditionGates. Confirm edition and
canStartApprovalin your Workspace before production. - Import
csv/decision-evidence-import.csv. Keep the internal names. - Leave Config as_of at 9 September 2026 while you walk Case01 through Case07.
- Confirm case 3 does not move to Approved and case 7 does not write a second time.
- Answer the security, DLP, Vault, and data-region questions. Labels alone are not a records program.
The useful rules also sit on this page so the download is not the only answer. Packaged formulas use the Config as_of date and do not call TODAY().
Realistic limitations
- Drive stores and routes the file. It does not become organizational authority.
- Native Approvals is edition- and admin-gated. Confirm Admin Help’s current list and
canStartApprovalin your tenant. - Sequential multi-step routing is not a documented native Approvals type. Build it as an overlay.
- Writers can unlock a locked file. Unlock during RESET review can reset approvals.
files.watchandchanges.watchnotify that something changed. They do not name an Approvals decision.- Exact API rate quotas are unpublished.
- Tenant screens differ. Confirm the screens you actually see.
- This system does not sign a document, pay anyone, run OCR, or change supplier bank details.
- This guide does not rank Drive against Dropbox, SharePoint, or Box, and it is not an e-sign buyer’s guide.
- This page is operational guidance, not legal advice and not a compliance certification.
Next step
Download the Google Drive Document Approval Template for the setup checklist, decision log, and seven worked cases.
Keep the parent Document Approval Workflow and Document Approval Status and Role Matrix nearby for the shared model.
If reviewers, authority, or the destination log are still unclear, start with an AI Success Audit. If those pieces are already named, book a fit call to scope an AI Automation Systems build.
Sources
- Flowgrammer, "Document Approval Workflow", Flowgrammer, accessed 2026-09-09, /insights/document-approval-workflow
- Flowgrammer, "Document Approval Status and Role Matrix", Flowgrammer, accessed 2026-09-09, /resources/document-approval-workflow-template
- Flowgrammer, "Document Processing Automation: What to Automate First", Flowgrammer, accessed 2026-09-09, /insights/document-processing-automation
- Flowgrammer, "Intelligent Document Processing (IDP): How It Works", Flowgrammer, accessed 2026-09-09, /insights/intelligent-document-processing
- Flowgrammer, "Invoice Processing Automation: Workflow & Test Pack", Flowgrammer, accessed 2026-09-09, /insights/invoice-processing-automation
- Flowgrammer, "Google Sheets Invoice Tracker", Flowgrammer, accessed 2026-09-09, /insights/google-sheets-invoice-tracker
- Flowgrammer, "Contract Tracker", Flowgrammer, accessed 2026-09-09, /insights/contract-tracker
- Flowgrammer, "Dropbox Document Approval Workflow", Flowgrammer, accessed 2026-09-09, /insights/dropbox-document-approval-workflow
- Google, "Manage approvals", Google Drive API, accessed 2026-09-09, https://developers.google.com/workspace/drive/api/guides/approvals
- Google, "REST Resource: approvals", Google Drive API, accessed 2026-09-09, https://developers.google.com/workspace/drive/api/reference/rest/v3/approvals
- Google, "Manage Approvals", Google Workspace Admin Help, accessed 2026-09-09, https://support.google.com/a/answer/9381067
- Google, "Get approvals on files in Google Drive", Google Drive Help, accessed 2026-09-09, https://support.google.com/drive/answer/9387535
- Google, "Manage file revisions", Google Drive API, accessed 2026-09-09, https://developers.google.com/workspace/drive/api/guides/manage-revisions
- Google, "Shared drives overview", Google Drive API, accessed 2026-09-09, https://developers.google.com/workspace/drive/api/guides/about-shareddrives
- Google, "Notifications for resource changes", Google Drive API, accessed 2026-09-09, https://developers.google.com/workspace/drive/api/guides/push
- Google, "Data covered by data regions", Google Workspace Help, accessed 2026-09-09, https://support.google.com/a/answer/9223653
Frequently asked questions
What is a Google Drive approval workflow?
It is a named approve, reject, or request-changes path for a file that already lives in Drive, bound to `fileId` and `revisionId`, and written to a decision log. Drive Approvals records the reviewers. Comments, labels, activity, and folder moves are not the decision.
Which Workspace editions include Drive Approvals?
Availability depends on edition and admin settings. Admin Help currently lists Business Standard, Business Plus, Enterprise Standard, Enterprise Plus, Education Plus, Essentials, Enterprise Essentials, Enterprise Essentials Plus, and G Suite Business. Google’s public pages are inconsistent, so confirm `canStartApproval` in your tenant.
Are comments or labels enough?
No. Comments are collaboration. Labels are metadata. Keep a named decision row.
Does an edit cancel an approval?
Under `RESET_APPROVAL`, an edit while `IN_PROGRESS` resets prior `APPROVED` responses. After `APPROVED`, a later edit means the current file is no longer the approved version. Under alignment, edits do not reset responses and the file is not locked on complete.
Is Drive Approvals the same as e-sign?
No. Approvals is an organizational file decision. Electronic signature is a separate signature request. A file may need both under a separate policy.
Can timeout auto-approve?
No. Timeout becomes pending_escalation. A person still decides.
Is a Google Sheets approval workflow the same page?
No. A Sheets log can sit beside Drive Approvals. It is not the Approvals object and it is not the published invoice tracker.