Flowgrammer

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 fileId plus revisionId
  • Drive Approvals statuses IN_PROGRESS, APPROVED, CANCELLED, DECLINED
  • All listed reviewers must approve; any one decline completes DECLINED
  • fileContentChangeBehavior: RESET_APPROVAL (default) versus NO_APPROVAL_ACTION (alignment)
  • Optional lockFile at start; writers can unlock
  • dueTime reminders when a due date is set
  • canStartApproval gates and admin Approvals toggles
  • Shared-drive roles with no owner role
  • files.watch and changes.watch notifications 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:

  1. file_id
  2. revision_id
  3. optional content hash or modifiedTime
  4. content_change_behavior
  5. approval_id after 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

  1. Intake. A file lands in the controlled library. Register request_id, requester, and a pointer. Do not approve on upload.
  2. Gates. Confirm edition, admin Approvals toggle, writer role, and canStartApproval. Fail closed when any gate is false.
  3. Share. Invite reviewers on the file. Drive does not auto-share on approvals.start. A request can succeed while reviewers see nothing.
  4. Access test. Confirm each named reviewer can open the file as a Google Account, not only a public link. Failures become external_access_denied.
  5. Identity. Capture fileId and revision. Refuse in_review if identity is missing.
  6. Start. Call or click Approvals start with reviewerEmails, optional dueTime, optional lockFile, and fileContentChangeBehavior. Status becomes IN_PROGRESS. Only one IN_PROGRESS approval is allowed per file.
  7. 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.
  8. Remind and escalate. Native reminders fire when dueTime is set. After timeout, set pending_escalation and reassign to the escalation approver. Timeout does not approve.
  9. Invalidate stale versions. Under RESET_APPROVAL, an edit or a writer unlock during review resets APPROVED responses. A log row that still cites the old revision is stale_version.
  10. Stop duplicates. A second start while IN_PROGRESS fails. A replayed files.watch or changes.watch notification with the same decision_id is ignored. Write count stays 1.
  11. Handoff. After approve, shortcut or copy once to the Approved library. Retry with the same idempotency key.
  12. 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.

  1. Read README.md, then markdown/setup.md.
  2. Walk DriveSetupChecklist and EditionGates. Confirm edition and canStartApproval in your Workspace before production.
  3. Import csv/decision-evidence-import.csv. Keep the internal names.
  4. Leave Config as_of at 9 September 2026 while you walk Case01 through Case07.
  5. Confirm case 3 does not move to Approved and case 7 does not write a second time.
  6. 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 canStartApproval in 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.watch and changes.watch notify 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

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.