Skip to content

Introduction

Approval Flows adds human approval chains to any Filament panel. Gate an Eloquent model behind a sequence of sign-off steps — a purchase order that needs a manager and finance, a blog post that needs an editor, a refund that needs a supervisor — without hand-rolling a state machine.

It is a Talivio plugin for Filament, built and maintained by Talivio Technology OÜ. It supports Filament v4 and v5 on PHP 8.2+.

What it does

  • DB-driven flows — a flow is a row, its steps are rows. Change a chain from the admin UI or a seeder; no code deploy.
  • Sequential steps — steps run in sort_order. A step must pass before the next begins.
  • Two step modesany (the first assigned approver to sign passes the step) or all (every assigned approver must sign).
  • Role- or user-based approvers — resolve a step to a spatie/laravel-permission role, or to explicit user IDs. Swap in your own resolver for anything else.
  • Delegation — an approver can hand a pending step to someone else (opt out per step).
  • Escalation — a step left pending too long fires an escalation event and re-notifies, on a schedule you control.
  • Approval Inbox — a ready-made panel page listing everything the signed-in user can act on, with a navigation badge count.
  • Full audit trail — every approve, reject, delegate, comment, escalate and cancel is recorded with a timestamp and actor.
  • Events — hook ApprovalSubmitted, ApprovalStepPassed, ApprovalCompleted, ApprovalRejected and ApprovalEscalated into your own side effects.

Mental model

ApprovalFlow  ──has many──▶  ApprovalStep (ordered by sort_order)
     │
     └── activeFor(Model::class) resolves the one active flow for a model type

Approval        one run of a flow against a record (the "approvable")
     │          tracks current_step_id + status (pending/approved/rejected/cancelled)
     └── ApprovalAction   the audit log: who did what, on which step, when

When you call $record->submitForApproval(), the plugin creates an Approval pointing at the flow's first step and notifies its approvers. As approvers act, the run advances step by step until it is approved, rejected, or cancelled.

Next steps

  • Installation — add the package to your app and panel.
  • Quickstart — a working Purchase Order approval in a few minutes.
  • Or try the live demo — click through a real approval as a submitter, manager, or finance.