Approval Workflow for Change Requests in Flagsmith

Approval Workflow for Change Requests in Flagsmith

Approval Workflow for Change Requests in Flagsmith

How a proposed flag change travels from an idea to a reviewed, approved and published decision, and how to design that journey so it is safe without being slow.

Picture a school trip. A teacher cannot simply put the whole class on a bus and drive off. First, the teacher writes a request. The head teacher reads it, asks about the place, the cost and the safety. Parents may need to sign. Only after the right people agree does the bus leave. Nobody enjoys the paperwork, yet everyone is glad it exists on the day something goes wrong.

Changing a live feature flag is a little like that bus trip. One click can change what thousands of customers see. An approval workflow is the sensible paperwork: a way of saying, “I want to make this change, please check it before it happens.” This guide explains how that works in Flagsmith, in plain steps, with pictures, examples and checklists you can use at work.

i
A note on versions

Flagsmith changes often. Whether change requests are available, how many approvals can be required, what the screens are called and which roles can approve can differ between versions, plans and between the hosted and self-hosted editions. Use this guide to understand the ideas, and confirm exact labels and limits in your own dashboard and in the official documentation.

1Why Approval Workflows Exist

Before learning any buttons, let us understand the problem that approvals solve.

One click, big effect

A feature flag is a switch that lives outside the program code. Flipping it can turn a new checkout page on, change a price, or hide a broken feature. It does not need a new release, so it happens in seconds. That speed is wonderful, and also risky.

The cost of a mistake

Imagine a tired engineer at the end of a long day. They mean to switch a flag in the Staging environment, but they are looking at Production. The switch is flipped, and customers see an unfinished page. The mistake took one second to make, and an hour to repair.

What a second pair of eyes gives you

  • Catching slips. Wrong environment, wrong flag, wrong value.
  • Sharing knowledge. The reviewer learns what is changing, and may know of a conflict.
  • Timing advice. “Please wait until after the sale ends.”
  • Accountability. Two people agreed, and both names are recorded.
  • Calm. Teams who review feel safer, so they dare to release more often.
Analogy

An aeroplane pilot and co-pilot read a checklist aloud before take-off. The pilot is not weak, and the co-pilot is not distrustful. Two people reading the same list simply catch more mistakes than one person alone.

Four groups who benefit

Engineers

Fewer slips

A mistake is caught before customers see it.

Product

Controlled timing

Launches happen when the business is ready.

Security

Separation of duties

No single person can change sensitive settings alone.

Auditors

Evidence

Proof that changes were reviewed and approved.

2Quick Recap of the Moving Parts

A few Flagsmith words appear in every conversation about approvals. Let us make sure they are clear.

Organisation, project, environment

An organisation is your company account. It holds projects, usually one per product. Each project holds environments, such as Development, Staging and Production. Each environment has its own settings for every flag.

Feature and feature state

A feature is a named switch. A feature state is the setting of that feature in one environment: on or off, and possibly a value. Change requests protect feature states in the environments you choose.

Segments and overrides

A segment is a named group of users. An override gives that group, or one user, a special setting. Depending on your version, changes to these can also travel through the workflow.

People and roles

People log in as users. Users belong to groups and have roles or permissions that say what they may do. Approval is built on top of these permissions.

WordSimple meaningWhy it matters for approvals
EnvironmentOne stage, such as ProductionApprovals are switched on per environment
Feature stateSetting of a flag in one environmentThis is what a request proposes to change
GroupA set of peopleCan be named as approvers
PermissionA right to do somethingDecides who may create, approve or publish
Audit logRecord of changesKeeps the trail of every approval

3What Is a Change Request

A change request is a proposal that waits for permission.

The simple definition

A change request is a saved proposal to change a flag. Instead of the flag changing at once, the new setting is stored as a draft. Reviewers look at the draft. Only after the required approvals is the draft applied to the real flag.

What a request holds

  • A title, which says briefly what is proposed.
  • A description, which gives the reason and any notes.
  • The proposed settings: the new state and value.
  • The requester, the person who made it.
  • A list of chosen approvers, where the version supports it.
  • The status: waiting, approved or published.
  • Optionally a go-live time for scheduling.

What happens to the live flag meanwhile

Nothing. The real flag keeps its current setting while the request waits. Customers notice no difference until the request is published.

Analogy

An architect draws a change to a building on a plan. The plan can be discussed and corrected. The wall is only knocked down after the plan is approved. The request is the plan, and the flag is the wall.

A change request turns “I did it” into “I would like to do it, do you agree?”

4What Is an Approval Workflow

The workflow is the set of steps and rules that a request must pass through.

Request, review, approve, publish

In its simplest form, the workflow has four steps. Someone requests. Others review. Enough reviewers approve. Then someone publishes, which applies the change to the live flag.

The rules that shape it

  • Where it applies. Usually only in sensitive environments such as Production.
  • How many approvals. One, two or more, depending on risk and on what the version allows.
  • Who may approve. Chosen people or groups, with the right permission.
  • Who may publish. Often the requester, or anyone with the right permission.
  • When it may go live. Immediately or at a scheduled time.
flowchart LR
    R["Request created"] --> V["Review by approvers"]
    V --> D{"Enough approvals?"}
    D -- "No" --> C["Changes asked or request closed"]
    D -- "Yes" --> P["Publish"]
    P --> L["Live flag updated"]
    L --> A["Audit log entry"]
Figure 1: The basic approval workflow from request to live change

Workflow is people plus rules

A tool can enforce counts and permissions. It cannot make a lazy reviewer careful. The best approval workflows combine good settings with a good habit: reading the request, asking questions and saying no when something looks wrong.

Analogy

A bank may require two signatures on a large cheque. The rule is enforced by the bank. But whether the second signer actually reads the cheque depends on the person.

5The Roles in the Workflow

Every approval journey has a small cast. Knowing each role makes the whole story easy to follow.

The requester

The person who proposes the change. They write the title and reason, set the new value and choose approvers. A good requester makes it easy to say yes by giving clear information.

The approver

A person who reads the request and decides. They check that it is the right flag, the right environment, the right value and the right moment. They can approve, or decline to approve, and may add comments.

The publisher

The person who finally applies an approved request to the live flag. In many teams this is the requester. In stricter teams, it may be a release manager.

The administrator

The person who sets up the rules: which environments need approval, how many approvals are needed, and who may do what. Administrators should be few, and their own changes should be visible in the audit log.

The observer

Support staff, auditors or managers who only need to read requests and history. They cannot change anything.

RoleMain dutyNeeds the right to
RequesterPropose a change with a clear reasonCreate change requests
ApproverReview and approve or declineApprove change requests
PublisherApply the approved changePublish or apply approved requests
AdministratorSet rules, roles and environmentsManage the project and permissions
ObserverRead and learnView requests and the audit log
Analogy

In a theatre, one person writes the script, another directs, another operates the lights, and another owns the building. Each role is separate, so a mistake by one person does not ruin the whole show.

!
Check who can self-approve

Some setups may allow a requester to approve their own request, or allow an administrator to bypass the rule. If self-approval is possible in your version, decide deliberately whether to allow it. A review by the same person who made the change is not a real second look.

6Switching Approvals On for an Environment

Approvals are not on by default everywhere. They are a setting that administrators choose per environment.

Choosing where to require approval

Not every environment needs the same protection. Requiring approvals in Development would only slow people down. Requiring them in Production is wise for most teams.

EnvironmentSuggested ruleReason
DevelopmentNo approvalFast experiments with no customer impact
StagingOptional, often noneRehearsal space, speed matters
ProductionOne or two approvalsReal customers feel every change
Regulated or payment environmentsTwo approvals, restricted publishersStrong control and evidence

The settings an administrator usually sees

  • A switch to require change requests for the environment.
  • A number for how many approvals are required, where the version allows.
  • Choices about who may approve, based on users or groups.

What changes for people once it is on

After the switch, editing a flag in that environment no longer saves the change directly. The editor is guided to create a change request instead. This is a gentle but clear change of habit. Tell your team beforehand, explain why, and offer help in the first week.

Test first

Try the setting on a spare environment or a test project. Create a request, approve it with a second account and publish it. Seeing the real screens once prevents confusion later.

Analogy

A library keeps ordinary books on open shelves, and rare manuscripts behind a desk where you must ask. Approval settings are the desk. You put it where the valuable things are, not in front of every shelf.

7Creating a Good Request

The quality of an approval depends on the quality of the request. A clear request is approved faster and more safely.

The title

Say what and where in a few words. “Enable checkout_v2 for 10 percent in Production” is clear. “Update flag” is not.

The description

Answer these questions in short sentences:

  • Why? What problem or goal is behind the change?
  • What exactly? Old setting, new setting, who is affected.
  • When? Now, or at a chosen time, and why that time.
  • How will we check? Which graphs or tests show success.
  • How do we undo it? The simple way back.
  • Link. The ticket or plan that explains the background.

The approvers

Choose people who understand the area. For a payment flag, include someone from the payments team. Do not pick a random colleague just because they are online.

A sample description

“We want to turn on the new checkout page for 10 percent of users in Production. Ticket 1234 has the test results. Staging has been on for a week without errors. If payment success drops below 97 percent, switch the flag off. Graphs are on the payments dashboard. Please approve before 10:00 so we can watch traffic during the busy hour.”

A strong request

  • Clear title with flag and environment
  • Reason and ticket link
  • Exact old and new values
  • Check plan and undo plan
  • Relevant approvers

A weak request

  • Vague title
  • Empty description
  • No explanation of risk
  • No undo plan
  • Random approvers
Analogy

When you ask a friend to lend you their car, you say when, for how long and why. A friend who knows these details says yes with confidence. A friend who only hears “can I have the keys?” will ask many questions.

8Reviewing and Approving with Care

An approval is a promise: “I looked, and I agree.” Here is how to keep that promise honestly.

What an approver should check

1
Right flag. Is it the feature that the title describes? Names can look alike.
2
Right environment. Production, not Staging. The environment name should be read aloud.
3
Right values. Compare the old and new settings line by line, including percentages and overrides.
4
Right timing. Does it clash with a sale, a release or a maintenance window?
5
Right safety net. Is there a check plan and an undo plan?
6
Right dependencies. Does the flag rely on other flags or on a code release that has not happened yet?

How to say no kindly

If something looks wrong, do not approve. Write a short comment: what worries you and what would help. A good reviewer is a helpful colleague, not a gatekeeper who enjoys blocking.

The danger of rubber stamping

Rubber stamping means approving without reading. It happens when reviewers are busy, requests are huge or approvals feel like a formality. The result is the worst of both worlds: the delay of review, with none of the safety. If every request is approved in under ten seconds, ask whether anyone is truly reading.

!
Never approve what you did not read

If you do not understand a request, say so. Asking one question is a service to the team. Silent approval only spreads the risk to two people instead of one.

Analogy

A proofreader who skims and signs off has not proofread. The signature is only worth something when the reading really happened.

9Publishing: The Moment of Truth

Approval says “yes, you may”. Publishing is the act of actually doing it.

Two different steps

New users often think that approval and publishing are one thing. They are separate. An approved request still waits on the shelf until somebody publishes it. This gap is useful: it lets the team choose the best moment to go live.

What happens when you publish

  • The system checks that the request is still valid and fully approved.
  • The proposed settings replace the live settings for that feature state.
  • An entry is written in the audit log.
  • Caches are refreshed, so apps will see the new setting.
  • The request is marked as published and closed.

One step, not many

The live flag is replaced in one action. Customers never see half of a change. This matters when a request changes several things at once, such as the state, the value and an override.

Who should publish

Two common patterns exist:

PatternHow it worksGood for
Requester publishesThe person who asked clicks publish after approvalSmall teams, trusted engineers, fast flow
Separate publisherA release manager or on-call engineer publishesRegulated work, strict release windows

Watch after publishing

The work is not finished when the button is pressed. Watch the graphs for a few minutes. If something looks wrong, use the undo plan from the request.

Analogy

A train guard may be told “you are cleared to leave”, yet the train waits for the right moment on the timetable. Approval is the clearance. Publishing is the whistle.

i
Tip

Many teams add one line to the request after publishing: the time it went live and what the graphs showed ten minutes later. It is a precious record later.

10How Many Approvals and Who Should Give Them

More approvals mean more safety and more waiting. The skill is to match the number to the risk.

Think in risk levels

Not all flags are equal. A flag that changes the colour of a button is not like a flag that changes how payments are routed. Group your flags into levels and attach a rule to each level.

Risk levelExamplesSuggested approvalsWho approves
LowText, colours, small layout choicesOne, or none in lower environmentsAny teammate
MediumNew features behind a flag, limits, rolloutsOneOwner team member
HighPayments, login, data handling, pricingTwoOwner team and a second team
CriticalSafety switches, regulated functionsTwo, with restricted publishersNamed leads plus security

Different approvers for different reasons

  • Technical approver. Checks that the change is correct and safe for the system.
  • Business approver. Checks that timing and content fit the plan.
  • Security or compliance approver. Checks sensitive or regulated changes.

Avoid approval chains that are too long

A request that needs five people will often wait for days. Reviewers assume that someone else is looking carefully. Two focused reviewers usually give better safety than five distracted ones.

Match the count to what the tool allows

Some versions let you set the number of required approvals per environment. Others offer simpler rules. If your version cannot enforce two approvals, you may agree a team rule, and check it in the weekly review of requests.

Analogy

A small household expense needs no permission. A big purchase needs both partners to agree. A giant loan needs the bank, the family and a lawyer. You do not call a lawyer to buy bread.

Safety comes from attention, not from the number of signatures.

11Scheduling Approved Changes

Sometimes the right moment is not now. Scheduling lets a request be approved today and applied later.

The idea

When creating a request, you can often choose a go-live time. The request then goes through approval as usual. When the time comes, the system applies it by itself. Nobody has to be awake at the keyboard.

Good uses

  • A launch at a time announced to customers.
  • A sale that starts at midnight local time.
  • A change that must wait for a quiet traffic period.
  • A temporary switch that should turn off after a campaign.

The risks of scheduling

  • Stale approvals. The plan changes after approval, but the schedule stays.
  • Nobody watching. The change happens while the team sleeps.
  • Time zone mistakes. The change fires hours earlier or later than intended.

Safer scheduling habits

  • Choose a go-live time when the right people are awake.
  • Write the time with its zone in the description, using UTC as well as local time.
  • Keep a shared list of scheduled changes for the coming week.
  • Withdraw or update a request at once if the plan changes.
  • Decide who will watch the graphs at the scheduled moment.
flowchart TD
    A["Request created with go-live time"] --> B["Approved"]
    B --> C["Waits for the scheduled time"]
    C --> D{"Plan still valid?"}
    D -- "Yes" --> E["Applied automatically"]
    D -- "No" --> F["Withdrawn or edited before the time"]
    E --> G["Audit entry and team watching"]
Figure 2: A scheduled change and the point where the plan must be re-checked
Analogy

Setting an alarm clock the night before works well, unless your plans change in the morning. If you do not cancel the alarm, it rings anyway. Scheduled changes are alarm clocks for flags.

12The Life of a Request: States and Transitions

A request has a short life with clear stages. Knowing them helps you see where things get stuck.

The stages

stateDiagram-v2
    [*] --> Open: Requester creates
    Open --> Approved: Enough approvals
    Open --> Open: Edited after comments
    Open --> Closed: Withdrawn or declined
    Approved --> Published: Publish now or at schedule
    Approved --> Closed: Withdrawn before publishing
    Published --> [*]
    Closed --> [*]
Figure 3: The life of a change request from creation to the end
StageMeaningTypical next step
OpenWaiting for reviewApprovers read and respond
ApprovedHas the required approvalsPublish now or wait for the schedule
PublishedApplied to the live flagWatch the graphs
ClosedWithdrawn or declined, never appliedMake a new request if needed

Edits after comments

If an approver asks for a change, the requester edits the request. Depending on the version, editing may reset earlier approvals. This is a good thing: an approval given for an older version should not silently apply to a different new one.

Withdrawing

A requester who changes their mind should close the request, not leave it waiting. Old open requests clutter the list and may be approved by mistake months later.

The danger of old requests

An old approved request that nobody published can be dangerous. Its values may no longer fit the current state of the system. Review the list of open and approved requests every week, and close anything stale.

Analogy

A boarding pass is valid for one flight on one day. If you try to use last month’s pass, the gate staff refuse it. Requests should also expire in spirit, even when the system lets them linger.

13When Two Requests Meet

Teams are busy, and two people may want to change the same flag at the same time. Let us see what can go wrong, and how to stay safe.

The collision

Asha proposes to raise a limit from 100 to 200. Ravi proposes to switch the same flag off. Both requests are open. If Ravi’s is published first, then Asha’s request still describes a world in which the flag was on, and publishing it may switch it back on, undoing Ravi’s work.

Why this happens

A request describes a desired end state, built from what the flag looked like when the request was written. If the live flag changes in the meantime, the request is based on old information. Some versions detect this and warn you. Others rely on people noticing.

How to stay safe

  • Before publishing, open the live flag and compare it with the request’s “before” values.
  • Give every shared flag one clear owner, who coordinates requests.
  • Announce in a team channel when you publish a Production change.
  • Prefer small requests over big ones, so collisions touch less.
  • If two requests overlap, combine them into one, or publish one and recheck the other.
sequenceDiagram
    participant A as Asha's request
    participant F as Live flag
    participant R as Ravi's request
    A->>F: Based on state S0
    R->>F: Based on state S0
    R->>F: Published first, state S1
    A->>F: Still based on S0
    Note over A,F: Publishing now could undo S1
Figure 4: Two requests built on the same old state
Analogy

Two editors correct the same copy of an essay, each on their own printed page. If the first sends their version back, and the second later sends theirs, the first editor’s corrections vanish. Both editors needed to start from the latest copy.

i
Habit

Make “compare with live” the last click before every publish. It takes ten seconds and prevents the most common workflow accident.

14Emergencies: The Fast Path

What if a flag must be changed this minute, and the only approver is asleep? A workflow that cannot handle emergencies will be bypassed, which is worse.

The problem with rigid rules

When a feature breaks Production, minutes matter. If approving takes an hour, people will find side doors: shared accounts, administrator overrides, direct database edits. These side doors destroy the audit trail you worked so hard to build.

Design an emergency path on purpose

  • Define “emergency”. For example, customer-facing outage, security issue or legal order.
  • Name who may use it. A small group, such as the on-call engineers.
  • Keep it fast but visible. One quick review by whoever is on call, or an approved way to bypass that still writes to the audit log.
  • Review afterwards. Within a day, someone checks what was done and why.

Kill switches

Many teams create special flags whose only purpose is to turn something off quickly, such as “disable_recommendations”. Such a kill switch should be simple, tested and owned by on-call staff. Changes to it can follow a faster approval rule than ordinary flags.

Emergency is not an excuse

If every week someone declares an emergency to skip review, the path is being abused. Count emergency uses and talk about them openly.

SituationNormal pathEmergency path
Planned launchRequest, review, approve, publishNot allowed
Outage caused by a featureToo slowOn-call turns off the flag, with a quick second look
Security issueToo slowSecurity lead may switch off, with a record
Someone is impatientWait for reviewNot an emergency
Analogy

A building has a fire exit with a glass-covered handle that anyone may break in a real fire. It is not locked away behind paperwork, but breaking it sets off an alarm and everyone knows it was used.

!
Remember

An emergency change should never be silent. The audit log must show who did it and when, and the team must be told afterwards.

15Notifications and Communication

A request that nobody notices will wait forever. Good communication is part of the workflow.

How approvers learn of a request

  • Email. Flagsmith can notify chosen approvers by email in many versions.
  • Chat messages. Through webhooks or integrations, a message can appear in a team channel.
  • The dashboard. A list of open requests that approvers can check.
  • Direct nudge. A friendly message from the requester, with the link.

What a good message says

“Please review: enable checkout_v2 for 10 percent in Production. Ticket 1234. Hoping to publish at 10:00 UTC.” It has the action, the place, the ticket and the time. A reviewer can decide in a few seconds whether they are the right person.

Response time agreements

Teams often agree on how fast reviews happen. For example, “Normal requests within four working hours. Urgent ones within thirty minutes.” Without such an agreement, requests wait in a silent queue and people grow frustrated.

Rotas for reviewers

If only one person can approve, a holiday stops the team. Use a rota, or a group of approvers, so someone is always available. Groups also remove the temptation to pick whoever answers fastest.

After publishing

Tell the team. A short chat message that says “published, graphs look fine” closes the loop for everyone who was waiting.

flowchart LR
    REQ["New request"] --> MAIL["Email to approvers"]
    REQ --> CHAT["Chat channel message"]
    REQ --> DASH["Open requests list"]
    MAIL --> REVIEW["Review and approve"]
    CHAT --> REVIEW
    DASH --> REVIEW
    REVIEW --> PUB["Publish"]
    PUB --> NOTE["Announcement after publishing"]
Figure 5: Ways a request reaches reviewers and how the news spreads afterwards
Analogy

A letter in a postbox is useless until someone collects it. Notifications are the postman. Without them, even a perfect request sits in the box.

16Segments, Overrides and Values Inside a Request

Flag changes are not only on and off. Reviewing richer changes needs a little extra care.

Percentage rollouts

A request may change a rollout from 10 percent to 50 percent. A reviewer should ask: has the 10 percent step been watched long enough? Are graphs healthy? Does the team have capacity for five times more traffic on the new path?

Segment overrides

If a request adds or changes a segment override, check the segment’s rules too. The segment itself may have been edited recently, and its edit may not be part of this request. Depending on version, segments might not go through the same approval path as flag states, so confirm how your setup treats them.

Order of overrides

The order of segment overrides decides which wins when a user belongs to several. A request that reorders them can change results for many users, even though no value changed. Reviewers should read the new order from the top and ask “who now wins?”

Multivariate values

For flags with several values, check that the percentages add up and that the default behaviour is safe.

Value content

If the flag carries text or configuration, read it carefully. A single wrong character in a configuration value can break an app. If the value is long, ask for a short explanation of what changed.

Kind of changeMain question for the reviewer
On or offIs this the right moment, and is the old state safe to return to?
Percentage rolloutWere the last steps watched and healthy?
New segment overrideWho is in the segment and who is affected?
Reordered overridesWho wins after the new order?
New text or configuration valueIs every character right and safe?
Identity overrideIs this a one-off special case, and who will remove it?
Analogy

Changing a recipe from “bake at 180” to “bake at 190” looks small. But in a bakery that sells thousands of loaves, it matters. Reviewers should know which small changes carry big effects.

17Approvals and the Audit Trail

The workflow creates a paper trail without anyone writing it. That trail is what auditors and incident reviewers will read later.

What is recorded

  • That a request was created, by whom and when.
  • That it was approved, by whom and when.
  • That it was published, by whom and when.
  • The resulting change to the flag.

Two sources, one story

The request holds the reason and the comments. The audit log holds the facts and exact times. To answer “who authorised this and why?” you read both.

QuestionWhere to look
Who proposed it?The change request
Who approved it?The approvals on the request
Who published it?The audit log entry
When did it take effect?The audit log time
Why was it needed?The description and linked ticket

Evidence for auditors

An auditor may pick ten Production changes and ask for proof that each was approved. If your requests have clear titles and reasons, and your approvers are real people, this takes minutes. Keep exports of requests and log entries for the period the auditor needs, since the dashboard may not keep everything forever.

Be careful with the actor

The person who published may differ from the person who proposed. When you review history, open the request, not only the log line.

Analogy

A signed purchase form says who asked and who agreed. The bank statement says who paid and when. Auditors want both pieces of paper, side by side.

18Architecture and Core Components

Let us look behind the screen. Understanding the parts explains why the workflow behaves as it does.

The big picture

flowchart TD
    UI["Dashboard and API"] --> AUTH["Authentication and permissions"]
    AUTH --> CR["Change request service"]
    CR --> STORE[("Database: requests and approvals")]
    CR --> RULES["Environment rules: approvals needed"]
    CR --> NOTIFY["Notifications and webhooks"]
    CR --> APPLY["Apply service"]
    APPLY --> STATE[("Live feature states")]
    APPLY --> AUDIT["Audit log"]
    APPLY --> CACHE["Serving caches"]
    CACHE --> SDK["Apps reading flags"]
Figure 6: The main parts involved in an approval workflow

The components in plain words

Gatekeeper

Authentication and permissions

Checks who you are and whether you may create, approve or publish.

Clerk

Change request service

Stores the proposal, collects approvals and tracks status.

Rulebook

Environment rules

Say how many approvals are needed in each environment.

Messenger

Notifications

Tell approvers and other tools what is happening.

Doer

Apply service

Replaces the live settings with the approved ones.

Scribe

Audit log

Writes an entry for each action.

Why the live flag stays untouched until publishing

The request is stored in its own place, separate from live feature states. Customers read only live states. So reviewers can take as long as they like without changing anything customers see.

Reading is separate from writing

Apps ask for flags through a fast serving layer. Requests and approvals live on the administration side. The two sides meet only at the moment of publishing, when caches are refreshed. This design keeps flag serving quick, even when many requests are open.

Self-hosted notes

If you host Flagsmith yourself, requests, approvals and the audit log live in your database. Their safety depends on your backups, access control and upgrades. The hosted service handles these tasks within the terms of your plan.

Analogy

In a restaurant, the order slip goes to the kitchen and waits there. The dining room is not affected until the dish is served. The request is the order slip, and publishing is the moment the dish reaches the table.

19Data Flow: From an Idea to a Change Customers See

Let us follow one flag change all the way from a thought in someone’s head to a different screen in a customer’s hand. Seeing the whole path helps you find where delays and mistakes can appear.

The full journey

sequenceDiagram
    participant Q as Requester
    participant S as Request service
    participant N as Notifications
    participant A as Approver
    participant L as Apply service
    participant C as Caches and apps
    Q->>S: Create request with title, reason, values
    S->>N: Notify approvers
    N->>A: Email or chat message
    A->>S: Read, comment, approve
    S->>S: Check approvals against environment rules
    Q->>L: Publish approved request
    L->>L: Replace live state in one step and write audit entry
    L->>C: Refresh caches
    C-->>Q: Customers see the new behaviour
Figure 7: The path of a flag change through the approval workflow to the customer

Where the time goes

StageTypical timeWhat makes it slower
DraftingMinutesMissing information
Waiting for a reviewerMinutes to hoursNo notification, no rota, reviewers away
ReviewMinutesVague descriptions, large requests
Waiting to publishAs chosenSchedules and release windows
PublishingSecondsRarely a problem
Reaching customersSeconds to a minuteCaches, SDK refresh intervals, app restarts

The last mile

After publishing, apps do not all notice at the same moment. Some ask Flagsmith for flags every time a page opens. Others keep a copy for several minutes. Server programs using local evaluation download the environment and refresh it on a timer. Mobile apps may hold flags until restart. A change is therefore not one instant, but a short spread of moments.

Analogy

When a city changes a speed limit sign, the law changes the moment the sign goes up. But drivers notice at different times, depending on which road they are on. A published flag works much the same way.

What to plan for

  • Allow a few minutes of settling time before judging a change by the numbers.
  • If two changes must happen together, make the app cope when they arrive slightly apart.
  • For mobile apps, expect old versions to keep old behaviour for longer.
  • For big launches, ask someone to check from outside your office network.

20Designing Roles and Permissions

The workflow is only as strong as the permissions under it. Let us design roles that match how real teams work.

The principle of least privilege

Give each person only the rights they need for their job. Fewer rights mean fewer accidents and fewer possibilities for misuse. This principle is simple, and many teams still break it by making everyone an administrator “to save time”.

Four useful roles

RoleDevelopmentStagingProduction
DeveloperChange directlyChange directly or by requestCreate requests only
ReviewerReadReadApprove requests
Release managerReadChangeApprove and publish
AdministratorManageManageManage rules and roles

Use groups, not individuals

Assign rights to groups such as “payments-reviewers”, then add people to the group. When someone joins or leaves a team, you change one membership, not dozens of settings. Groups also make it easy to answer the question “who can approve payment changes?” by listing one group.

Separate the duties

Where possible, the person who proposes a change should not be the only person who approves it. In regulated settings, the person who approves should also not be the person who publishes. This separation of duties reduces the damage that one mistaken or dishonest person can do.

Review access regularly

  • Every quarter, list members of reviewer and administrator groups.
  • Remove people who changed teams or left.
  • Check that each group has at least two members, so holidays do not block work.
Analogy

In a shop, one person counts the till, another carries the money to the bank. If one person did everything, a single mistake or a single bad day could hide a large loss. Splitting the roles creates natural cross-checking.

!
Watch for bypass rights

Some roles may be allowed to bypass approval rules. Find out which roles have that power in your version, and keep them to a very small group with a recorded reason.

21Speed, Throughput and Keeping the Queue Healthy

An approval workflow is a small production line for decisions. Like any line, it can clog. Let us see how to keep it flowing.

Cycle time

Cycle time is the time from creating a request to publishing it. If the average is a few hours, the workflow is healthy. If it is days, people will find ways around it, and flags will be changed outside the proper path or code will wait for approvals.

What causes queues

  • Too few approvers, so a few people become a bottleneck.
  • Requests that are too large, so reviewers postpone them.
  • Poor descriptions, which cause long back-and-forth questions.
  • No notifications, so requests are not seen.
  • Too many approvals required for low-risk changes.

How to speed up without losing safety

  • Use risk levels, with fewer approvals for low-risk flags.
  • Use groups for approvers, so any member can answer.
  • Provide a template for the description.
  • Keep requests small and focused.
  • Agree on response times, and show open requests on a team board.

Batching

If a launch involves many flags, it is tempting to bundle them all into one request. A single request that changes twenty things is hard to review. A better way is to group related flags into a few requests, each with a clear purpose, and a short overall plan that links them.

Watch the number of open requests

If open requests pile up, something is wrong. A healthy team has few open requests at any time, each recent.

Hours
Healthy cycle time
Few
Open requests at once
Small
Best request size
Groups
Better than single approvers
Analogy

A toll booth with one lane makes a long queue, however fast the clerk is. Adding a second lane, or sending cars through a faster lane for small vehicles, shortens waits without removing the booth.

A workflow that is too slow is not safe. It is simply avoided.

22Security: Protecting the Workflow Itself

An approval workflow is a security control. Like any lock, it must be protected from being picked.

Threats to think about

ThreatExampleDefence
Stolen accountAn attacker uses a leaked password to create and approve requestsSingle sign-on, strong passwords, multi-factor sign-in
Self-approvalA person approves their own risky changeDisallow self-approval where possible, review exceptions
CollusionTwo friends approve each other’s requests without readingSample reviews, rotate approvers, audit metrics
Leaked admin keyA program key bypasses the workflowVault storage, rotation, narrow key use, alerts
Rights creepPeople keep old rights after moving teamsQuarterly access review
Settings changedSomeone turns approvals off in ProductionAlert on rule changes, restrict who can change rules

Multi-factor sign-in

Because an approval is a trust decision, the account that gives it must be well protected. Require multi-factor sign-in, or single sign-on with multi-factor, for anyone who can approve or publish in Production.

Machine keys and the workflow

Programs that call the Flagsmith administration API may be able to change flags without going through a human review, depending on key type and settings. Make sure you know which keys can change Production, who owns them and how their use is recorded. Limit them to what they must do.

Protect the rules

The most dangerous change is the one that removes the rule. If someone turns off approvals in Production, every later change loses its safety net. Make rule changes rare, restricted to a few administrators and visible through an alert.

Think about insiders

Most mistakes are honest, but some risks come from people inside. Separation of duties, audit trails and reviews of unusual activity protect honest staff as much as the company, since they show clearly what each person did.

Analogy

A vault door is useless if the key hangs on a hook next to it. Protecting the approval rules, accounts and keys is the same as hiding the vault key somewhere safe.

23Compliance and Regulation

Many rules and standards ask companies to prove that changes to live systems are authorised and traceable. A clear approval workflow is strong evidence. This chapter is general information, not legal advice, so your own advisers should confirm what applies to you.

The common requirement

Most standards ask three simple things: that changes are authorised before they happen, that they are traceable afterwards, and that the records are protected. Change requests answer the first. The audit log answers the second. Access control and exports answer the third.

Where flags fall under the rules

A flag that changes how payments are routed, how prices are shown or how personal data is handled is a change to a controlled system, even though no code was released. Security and service standards such as SOC 2 and ISO 27001 expect change management for such things. Financial reporting rules, for companies subject to them, expect control over systems that affect reported numbers. Privacy law such as GDPR expects care over how personal data is processed and logged. Sector rules in banking and healthcare add stricter expectations.

What auditors ask

Auditor’s questionYour evidence
How do you ensure changes to production are authorised?Environment rule requiring change requests, with approvals recorded
Can a person approve their own change?Settings and role design showing it is blocked or reviewed
Who can publish to production?Group membership lists and access reviews
Show me ten recent changes and their approvalsRequests with titles, reasons, approvers and audit entries
How do you handle emergencies?A written emergency path and a log of its use
How long do you keep records?Retention policy and exports

Preparing for an audit

  • Write a one-page description of your workflow.
  • Export requests and audit entries for the whole period in question.
  • Run your own sample every quarter, as practice.
  • Check that leavers have lost their access.
  • Be ready to explain every emergency change.
Analogy

A school inspector who finds a tidy register, signed forms and clear records leaves quickly and happily. One who finds gaps starts to look at everything more carefully.

24Monitoring, Metrics and Reviewing the Workflow

A workflow that nobody measures drifts. Simple numbers show whether it is healthy.

Metrics worth tracking

MetricWhat it tells youHealthy sign
Cycle timeSpeed of the whole processHours, not days
Time to first reviewHow quickly requests are noticedWithin the agreed response time
Share of Production changes via requestsWhether the workflow is usedNearly all
Rejection or rework rateWhether reviews really happenNot zero, not very high
Open request ageStale proposalsNo old approved requests
Emergency usesAbuse of the fast pathRare, always explained
Rule changesTampering with safeguardsVery rare, always known

A rejection rate of zero is suspicious

If no request is ever questioned or sent back, either every proposer is perfect or reviewers are not reading. A modest rate of comments and reworks shows that people are actually looking.

Alerts

Start with a few. Alert when approvals are switched off or loosened in Production, when a permission group changes, and when someone publishes outside the usual path. Too many alerts teach people to ignore them.

The weekly walk-round

Once a week, one person looks at the list of open and approved requests, closes stale ones, and checks the week’s Production changes in the audit log. Ten minutes is enough.

Retrospectives

After an incident related to a flag, ask three questions: Did the workflow help or hinder? Was the reviewer given enough information? What small change would have caught it earlier? Write the answers down, and adjust the template or the rules.

Analogy

A smoke alarm rings only in a fire, but a caretaker who walks round every week notices a loose cable before it sparks. Alerts are the alarm. The walk-round is the caretaker.

25Failure Scenarios and Recovery

Every process fails in predictable ways. Knowing them beforehand lets you respond calmly.

Scenario 1: The only approver is away

A request waits because the one person who understands the payments system is on holiday. Do not ask a stranger to click approve. Name a deputy in advance, and write short notes so a second person can learn the essentials. Treat a one-person group as a risk to be fixed.

Scenario 2: An approved request is stale

On Monday a request was approved. On Tuesday the plan changed. On Wednesday somebody publishes it. Customers see a half-ready feature. Fix: withdraw or update the request when plans change, and compare with the live flag before publishing.

Scenario 3: Two requests collide

One person’s publish undoes another’s. Fix: one owner per shared flag, announcements after publishing and a compare-with-live check.

Scenario 4: The rubber stamp

Approvals arrive in seconds and a mistake slips through. Fix: smaller requests, templates that make key facts visible, sampling of approvals in the weekly review, and a friendly culture that welcomes questions.

Scenario 5: The side door

People bypass the workflow with shared accounts or admin keys because it is too slow. Fix: an honest look at cycle time, a proper emergency path and removal of shared access.

Scenario 6: The workflow is turned off

Someone disables approvals in Production, perhaps “just for a moment”, and forgets. Fix: restrict rule changes, alert on them and review rules weekly.

Scenario 7: An emergency at night

A broken feature must be turned off while the approver sleeps. Fix: a defined emergency path, a kill switch owned by on-call staff and a review the next day.

Scenario 8: An approved scheduled change fires at a bad time

A launch was scheduled before a news event or a system outage. Fix: a shared list of scheduled changes, and a quick way to cancel.

FailureQuick responsePrevention
Approver awayUse a deputy from the groupGroups with at least two people and a rota
Stale approvalWithdraw and recreateCompare with live before publishing
CollisionPublish one, recheck the otherFlag owners and announcements
Rubber stampPause and review again togetherSmall requests and sampling
Side doorRemove it and fix the causeFaster legitimate path
Rules turned offTurn on and review what changedRestricted rights and alerts
Night emergencyUse the emergency pathKill switches and a clear definition
Bad scheduleCancel or edit the scheduleShared schedule list
Analogy

Lifeboat drills happen on calm days so that nobody guesses in a storm. Walking through these failures on a quiet afternoon is the same kind of drill.

26Advantages, Disadvantages and Trade-offs

Every control has benefits and costs. An honest comparison helps you choose how much workflow your team needs.

Advantages

  • Catches slips before customers see them
  • Shares knowledge between teams
  • Records who agreed and why
  • Supports audits and regulation
  • Separates deciding from doing
  • Allows scheduled, planned launches

Disadvantages

  • Adds waiting time
  • Can become a rubber stamp
  • Needs reviewers with spare attention
  • Can be bypassed if too strict
  • Needs upkeep of roles and groups
  • Does not prove that a change is wise

Trade-offs worth thinking about

Speed versus safety

Every approval costs time. Skipping approvals is fast, but leaves the audit log as your only protection, and a log can only tell you about a problem afterwards. The balance depends on the damage a mistake can do.

Strictness versus bypass

Very strict rules push people towards side doors. Rules that are strict where the risk is high and light where it is low are followed far more willingly.

Central control versus team freedom

One central group approving everything is safe in theory, but slow and ignorant of the details. Letting each owning team review its own flags is quicker and better informed, with central oversight only for the highest risks.

Detail versus readability

Requiring long descriptions improves quality, but long forms are skipped. A short template with five questions gives the best of both.

ChoiceBenefitCostBalanced approach
Approvals everywhereUniform controlSlows low-risk workProduction only, plus risk levels
Two approvalsStronger reviewMore waitingHigh and critical flags only
Central reviewersConsistencyBottleneckOwner team reviews, central for critical
Strict rulesComplianceSide doorsA fast, visible emergency path
Analogy

Locks make a house safer and make entering slightly harder. Nobody removes every lock to save seconds, and nobody puts a vault door on the shed. The skill is in picking the right lock for the right door.

27Design Patterns and Anti-Patterns

Teams that run approvals well tend to follow the same few patterns. Teams that struggle repeat the same few mistakes.

Good patterns

Pattern

Risk-tiered approvals

More approvals for riskier flags, fewer for harmless ones.

Pattern

Group-based approvers

Any member of a named group may approve, so holidays do not block work.

Pattern

Request template

Five questions: why, what, when, check, undo.

Pattern

Compare with live

The last click before publishing is a comparison with the live flag.

Pattern

Staged rollout requests

Big launches are split into steps, each reviewed and watched.

Pattern

Emergency path with review

Fast, visible, reviewed the next day.

Anti-patterns

Anti-pattern

Approval theatre

Approvals happen in seconds with no reading.

Anti-pattern

The one-person gate

Only one approver exists, so work waits for them.

Anti-pattern

The monster request

One request changes twenty flags and nobody can review it.

Anti-pattern

Shared admin login

Everyone uses the same account, so no approval means anything.

Anti-pattern

Forever-open requests

Old requests sit approved and unpublished for months.

Anti-pattern

Approvals everywhere

Even Development needs approval, so people resent the whole system.

Analogy

A tidy kitchen has a label on every jar and a rota for cleaning. A messy kitchen has unlabelled jars and one person who “just knows”. The first still works when that person is away.

Patterns turn good intentions into habits. Anti-patterns turn small shortcuts into future incidents.

28Best Practices and Common Mistakes

Here is a practical list of habits to adopt and traps to avoid.

Best practices

  1. Require requests in Production only at first, and widen later if needed.
  2. Use groups of approvers with at least two members each.
  3. Write requests from a template with why, what, when, check and undo.
  4. Keep requests small and focused.
  5. Compare with the live flag before publishing.
  6. Schedule at human hours and share a list of scheduled changes.
  7. Agree on response times and watch cycle time.
  8. Define an emergency path and review each use.
  9. Protect accounts and rules with multi-factor sign-in and restricted rights.
  10. Review roles quarterly and remove old access.

Common mistakes

MistakeWhy it hurtsBetter way
Approving without readingSafety is only an illusionRead the values and ask questions
Vague titles and reasonsSlow reviews and poor recordsUse a template
Forgetting scheduled changesSurprises at odd hoursKeep a shared list
Publishing old approvalsApplies out-of-date plansCompare with live and close stale requests
Letting people self-approveNo real second lookBlock it or review exceptions
Too many approversSlow and diluted attentionTwo focused reviewers
No emergency pathSide doors appearDesign one on purpose
Not telling peopleNobody knows what is liveAnnounce after publishing

Troubleshooting quick guide

  • Cannot create a request. Your role may lack permission, or the environment may not require requests. Ask an administrator.
  • Cannot approve. You may not be a listed approver, or you may be the requester. Check the rules.
  • Cannot publish. The request may lack approvals, or you may not hold publishing rights.
  • Approvals vanished after an edit. Your version may reset approvals on edit. Ask approvers to look again.
  • Change did not appear for customers. Wait for caches and SDK refresh, then check the environment key and app settings.
i
Culture note

The aim of approvals is learning and safety, not blame. Teams that treat questions as welcome catch more mistakes. Teams that treat them as an attack hide problems.

29A Complete Walkthrough: The Holiday Sale Launch

Let us follow an imaginary company, “Acme Cart”, through a full launch to see all the ideas working together.

The situation

Acme Cart plans a holiday sale starting at 06:00 UTC on a Friday. The new “holiday_pricing” flag will show discounted prices. Prices are sensitive, so the team treats this as a high-risk flag in Production: it needs two approvals, one from the pricing team and one from the payments team.

Stage 1: Rehearsal in Staging

On Monday, an engineer, Asha, turns on the flag in Staging. Staging has no approval rule, so she changes it directly. She checks prices in the test shop, tries a percentage rollout and tests the undo step. The audit log shows her work.

Stage 2: Writing the request

On Wednesday, Asha creates a change request in Production with the title “Enable holiday_pricing for everyone at 06:00 UTC Friday”. Her description answers the template:

  • Why: Holiday sale approved by the business, ticket 4521.
  • What: Flag off to on, value “holiday_v1”, all users.
  • When: Friday 06:00 UTC, which is 11:30 in Kolkata. Chosen because the team is online and traffic is low.
  • Check: Prices on the product page, checkout total and payment success graph.
  • Undo: Switch the flag off. Takes under one minute.

She selects approvers from the pricing group and the payments group, and sets the go-live time.

Stage 3: Review

Ravi from the pricing team reads the request, compares the values with the sale plan and approves. Meera from the payments team asks one question: “Have you tested the discount with the gift card payment type?” Asha replies that she has not. She tests it in Staging, finds a rounding error and fixes the flag value. She edits the request, so earlier approvals reset in this version. Both reviewers read it again and approve.

sequenceDiagram
    participant A as Asha
    participant R as Ravi (pricing)
    participant M as Meera (payments)
    participant F as Production flag
    A->>F: Create request, scheduled Friday 06:00 UTC
    R->>A: Approve
    M->>A: Question about gift cards
    A->>A: Test and fix in Staging
    A->>F: Edit request
    R->>F: Approve again
    M->>F: Approve
    Note over F: Waits for scheduled time
    F->>F: Friday 06:00 UTC applied and logged
Figure 8: The holiday sale request from drafting to going live

Stage 4: Waiting and re-checking

On Thursday, a small outage in the pricing database delays another project. The team lead looks at the shared list of scheduled changes and asks: “Is the sale still safe to launch?” The pricing team confirms that the outage is fixed. The schedule stays.

Stage 5: Going live

At 05:55 UTC on Friday, Asha and Meera are online with the dashboards open. At 06:00 the flag turns on. Prices change. The payment success graph stays at 98 percent. Ten minutes later, Asha adds a note on the request: “Live at 06:00, graphs stable at 10 minutes.” The audit log has the full record.

Stage 6: Ending the sale

The team creates a second scheduled request to turn the flag off on Monday morning, with the same two approvers. After the sale, they remove the flag in a clean-up request, recorded in the log.

What worked well

  • Rehearsal in Staging before the request
  • Clear template, with check and undo
  • Two approvers from relevant teams
  • A reviewer who asked a real question
  • People watching at go-live

What could be better

  • Gift card test should have been in the plan
  • The outage showed that schedules need a shared list
  • The end-of-sale request was written late
DECISION RECORD 01 Accepted
Context

Acme Cart needs a controlled launch of price changes in Production, with evidence for finance and auditors.

Decision

Pricing flags are high risk. They require two approvals from pricing and payments groups, a template-based request, a stated go-live time with people watching, and a matching end request.

Consequences

Launches need a day or two of planning, but price mistakes are rare and every decision has a recorded owner.

30Governance: Policy, Ownership and Training

Tools enforce rules. People keep them alive. A small amount of written governance keeps an approval workflow healthy for years.

A one-page workflow policy

The policy should answer a few plain questions, and everyone should be able to find it in under a minute.

  • Which environments require change requests?
  • How many approvals are needed for each risk level?
  • Who may approve, and who may publish?
  • What is an emergency, and what is the emergency path?
  • How fast do we respond to requests?
  • Where are the records, and how long do we keep them?

Owners for each piece

ItemOwnerDuty
Flagsmith account and planPlatform teamAccounts, settings, upgrades, backups
Environment approval rulesPlatform team with securitySet and review rules
Each flagOwning product teamDecide, review, clean up
Approver groupsTeam leadsKeep membership accurate
Request templateRelease managerUpdate after incidents
Audit exportsPlatform or security teamRun and monitor

Teach new people early

New teammates should learn four things in their first week: how to create a request, how to review one, where the emergency path is and where the policy lives. A short walk-through using a real past request is worth more than a long manual.

Naming rules help everyone

Clear flag names make reviews easier. “holiday_pricing_discount” tells a reviewer much more than “flag7”. Agree on a pattern and use it in all projects.

Regular reviews of the workflow

  • Weekly: look at open requests, scheduled changes and the past week’s Production changes.
  • Quarterly: review groups, roles, rules and metrics.
  • After incidents: update the template and the rules.
Analogy

A town keeps a register of who may do what, and checks it each year. The register itself does nothing, but the yearly check keeps the town tidy. Governance is the yearly check.

31Advanced Topics: Many Teams and Many Projects

When a company grows, one small workflow becomes many. New questions appear about consistency and speed.

Many projects, one standard

Large companies often have a Flagsmith project per product. Each project can have its own approval rules. Without a shared standard, one team may require two approvals while another requires none for the same level of risk. Agree on a company standard for risk levels, and let teams add stricter rules if they wish.

Cross-team approvals

Some flags touch several teams. A pricing flag might involve pricing, payments and legal. Name approvers from each team in the request, or choose a standing cross-team group for such flags.

Follow the sun

Teams in several time zones can hand over review duties. A request created in Kolkata in the afternoon can be reviewed by colleagues in London in the morning and published in the evening in San Francisco. This needs clear notes, time-zone-aware descriptions and shared groups that span regions.

Automation and the workflow

Pipelines that manage flags as configuration may create requests instead of applying changes directly, so that human review still happens for Production. A pipeline can fill in the template, link the ticket and tag the right approver group, saving time while keeping control.

Combining flags with release approvals

If your company already approves software releases, you can link both: the release approval covers the code, and the flag request covers the exposure. A short link between them in the description keeps the story together.

Measuring for improvement

Once you have request data, you can ask better questions. Which flags take longest to approve? Which teams get the most questions? Where do reworks come from? These answers help refine templates and training.

flowchart TD
    C["Company standard: risk levels and rules"] --> T1["Team A project rules"]
    C --> T2["Team B project rules"]
    C --> T3["Team C project rules"]
    T1 --> X["Cross-team approver group for shared flags"]
    T2 --> X
    T3 --> X
    X --> M["Shared metrics and reviews"]
Figure 9: One company standard with team-level rules and shared groups
Analogy

A country has national traffic laws, and each town adds local rules, such as a lower speed near a school. Drivers cross borders without confusion, because the basics are the same everywhere.

i
Start small

You do not need a complicated structure on day one. Begin with Production-only approvals and two groups, then add detail as your team grows.

32Testing and Rehearsing Your Workflow

A fire alarm is only useful if it rings. Test your workflow before you need it.

The first-time test

  1. On a test project, create an environment that requires one approval.
  2. Create a request with one account and try to approve it with the same account. See what happens.
  3. Approve it with a second account.
  4. Publish it and check the audit log entry.
  5. Schedule another request for five minutes ahead and watch it apply.

The permission test

Use a test user with a low role. Check that the user cannot approve, cannot publish and cannot change environment rules. Then test a reviewer account and a release manager account the same way. The results should match your role design.

The emergency drill

Once a quarter, practise the emergency path in a safe setting. Who turns off a flag at three in the morning? How do they find the kill switch? Who reviews the use the next day? Time it.

The rubber stamp test

Take five recent approved requests and ask reviewers what they checked. If they cannot remember, the approvals may not be thorough. Adjust templates and sizes accordingly.

The notification test

Create a request and see how long it takes for approvers to notice. If nobody sees it for an hour, fix notifications.

TestHow oftenSuccess means
First-time testAfter setup or upgradeWorkflow behaves as designed
Permission testQuarterlyRoles match the policy
Emergency drillQuarterlyDone within minutes, reviewed next day
Rubber stamp checkQuarterlyReviewers remember what they checked
Notification testAfter any change to channelsApprovers notice within the agreed time
Analogy

Pilots practise engine failures in a simulator so that the real thing feels familiar. These drills are your simulator.

33A Maturity Roadmap

Nobody builds a perfect workflow in a day. Here is a path with four levels, so you can see where you are and what comes next.

1
Level 1: Informal. People mention flag changes in chat. Production changes are made directly. Reviews happen when someone remembers.
2
Level 2: Required. Production needs a change request with one approval. A simple template exists. Accounts are personal.
3
Level 3: Tiered. Risk levels decide the number of approvers. Groups and rotas exist. Emergency path and kill switches are defined. Metrics are tracked.
4
Level 4: Measured. Pipelines create requests. Cross-team groups handle shared flags. Drills run each quarter. Audit evidence is ready within minutes.

How to move up

FromToFirst actions
Level 1Level 2Switch on requests in Production, remove shared accounts, write a template
Level 2Level 3Define risk levels, create approver groups, write the emergency path, track cycle time
Level 3Level 4Automate request creation, set up cross-team groups, run drills, prepare audit exports
1
Informal
2
Required
3
Tiered
4
Measured
Analogy

Learning to cook goes from boiling an egg to preparing a feast. You do not need to become a chef in the first week. Each level is useful on its own.

34Request Examples: Weak, Better and Strong

Seeing the same request written three ways shows why details matter. Imagine the same change each time: turning on a new search ranking flag for a small share of users.

The weak version

Title: “Update search flag”. Description: “Please approve”. A reviewer reading this has no idea which flag, which environment or which users. They must either ask five questions or approve blindly. Both are bad outcomes.

The better version

Title: “Enable search_ranking_v2 for 5 percent in Production”. Description: “New ranking was tested in Staging for one week. We want to start with 5 percent of users.” This is already much clearer. The reviewer knows the flag, the place and the size of the step. But they still do not know how success is measured or how to go back.

The strong version

Title: “Enable search_ranking_v2 for 5 percent in Production, 10:00 UTC Thursday”. Description:

  • Why: Product goal in ticket 3310, aiming for better search clicks.
  • What: Flag off to on, percentage split 5 percent new ranking, 95 percent current.
  • When: Thursday 10:00 UTC, when traffic is moderate and the search team is online.
  • Check: Search click rate and error rate on the search dashboard, watched for thirty minutes.
  • Undo: Set the split back to 0 percent, under one minute.
  • Next step: If healthy for two days, request 25 percent.
Feature of the requestWeakBetterStrong
Flag namedNoYesYes
Environment namedNoYesYes
Size of stepNoYesYes
Reason and ticketNoPartlyYes
Time and zoneNoNoYes
Check planNoNoYes
Undo planNoNoYes
Next stepNoNoYes

Why the strong version is faster, not slower

It takes the requester two extra minutes to write. It saves the reviewer ten minutes of questions and prevents the back-and-forth that can add a day. Good requests are the cheapest speed-up a team can make.

Analogy

Asking a taxi driver to “go somewhere” wastes time. Giving the exact address and the time you must arrive makes the trip smooth. A strong request is an address and a deadline.

35The Reviewer’s Playbook: Three Worked Reviews

Reading rules is one thing. Practising on examples is better. Here are three short review stories and what a careful reviewer would do.

Review 1: The wrong environment

A request is titled “Disable promo_banner”. The description says “Staging test finished”. But the request is in Production. A careful reviewer notices the mismatch between the story and the place. They ask: “The description mentions Staging, but this request is in Production. Do you want the banner off for real customers?” The requester realises the slip, closes the request and creates the correct one. A rubber-stamping reviewer would have switched off a live banner during a campaign.

Review 2: The rollout that jumps

A request changes a rollout from 5 percent to 100 percent. The description says “went well”. A careful reviewer checks the audit history: the flag has been at 5 percent for only twenty minutes. They reply: “Can we go to 25 percent first and watch for a few hours?” The requester agrees. At 25 percent, a small error appears in a rare browser. It is fixed before the whole audience sees it.

Review 3: The reorder with hidden effects

A request says “Minor tidy of overrides”. The new order places a broad segment above a narrow premium segment. A careful reviewer reads from the top and asks: “Who wins now when a user is both in the broad segment and premium?” They see that premium customers would lose their special setting. The request is changed before approval.

What the three stories share

  • The reviewer compared the story with the actual change.
  • They asked a specific, polite question.
  • They thought about who is affected, not only what changed.
  • They used history to understand the current state.
flowchart TD
    A["Open the request"] --> B{"Does the story match the change?"}
    B -- "No" --> Q1["Ask a clear question"]
    B -- "Yes" --> C{"Do I know who is affected?"}
    C -- "No" --> Q2["Ask or check segments and history"]
    C -- "Yes" --> D{"Are the check and undo plans clear?"}
    D -- "No" --> Q3["Ask for them"]
    D -- "Yes" --> E{"Is the timing sensible?"}
    E -- "No" --> Q4["Suggest another time"]
    E -- "Yes" --> OK["Approve"]
Figure 10: A short decision path a careful reviewer can follow
Analogy

A good proofreader does not only check spelling. They also ask whether the sentence says what the author meant. A good reviewer checks that the change does what the request says it does.

36Adapting the Workflow to Different Teams

One size does not fit every team. A tiny start-up, a big bank and a game studio need different amounts of ceremony. Here is how to adapt.

A small start-up

Five engineers share one project. Everyone knows everyone. A heavy process would only slow them. A light setup works well: Production needs one approval from any other engineer, a short template and a chat message after publishing. Emergency changes are allowed, with a note in the channel.

A growing product company

Several teams share a project. Mistakes now affect more people. Introduce risk levels, approver groups per team and a weekly review of requests. Keep low-risk flags light, and require two approvals for payments and login.

A regulated business

Banks, insurers and healthcare companies must show control to auditors. Require two approvals for sensitive flags, separate approving from publishing, keep exports of requests and the audit log, and review access quarterly. Document everything, and test the emergency path.

A game or media studio

Live events, such as a weekend tournament, depend on exact timing. Use scheduled changes heavily, keep a shared calendar of events, and name the people who watch during go-live. Reviews focus on timing and load more than on money.

A platform team serving many teams

A central team owns Flagsmith for the whole company. They provide the standards, templates and training, while product teams own their flags and approvals. Central staff review only the highest risks.

Team typeApprovals in ProductionMain focusExtra practice
Small start-upOne, from any peerSpeed with a safety glanceChat announcement
Growing companyOne or two by risk levelClear ownershipApprover groups and weekly review
Regulated businessTwo, separate publisherEvidence and controlExports and access reviews
Game or media studioOne, scheduled launchesTiming and loadShared calendar
Platform teamSet by risk, owned by product teamsStandards and trainingCompany-wide metrics
i
Grow with the team

Start with the lightest workflow that feels safe. Add steps only when a real incident or a real requirement shows that you need them. Rules that people understand are rules that people follow.

Analogy

A village shop and an airport both need security, but not the same kind. A good design matches the protection to the size of the risk and the number of people involved.

37The Human Side: Talking Well in Reviews

Approval workflows are made of conversations. The way people speak to each other decides whether the workflow feels helpful or hostile.

Why tone matters

A request is a small act of trust: someone shows their work and asks for a check. If the reply sounds like an attack, the next person will hide details, or skip the process. If the reply sounds like help, people start to share earlier and more openly. Over months, this difference decides the culture of the whole team.

Useful ways to ask

  • “Could you tell me how we will know if this works?”
  • “I see this is in Production. Is that on purpose?”
  • “What is the way back if the graphs look wrong?”
  • “Who is affected by this segment?”
  • “Would it be safer to start at a smaller share?”

Useful ways to decline

  • “I cannot approve yet, because the undo plan is missing. Could you add it?”
  • “The timing clashes with the sale. Could we move it to Thursday?”
  • “I do not know this area well enough. Could someone from the payments team look too?”

Each reply says what the concern is and what would fix it. That keeps the request moving.

Useful ways to approve

A short note makes an approval more meaningful: “Checked flag, environment and values. Undo plan is clear. Approved.” This one line tells later readers that the reviewer looked, and what they looked at.

Things to avoid

  • Sarcasm or blame, such as “Why would you do this?”
  • Public shaming in a large channel when a private note will do.
  • Long silent delays, followed by a rushed approval.
  • Approving as a favour to a friend without reading.

Thanking catches

When a reviewer catches a real mistake, thank them publicly. When a requester fixes a mistake quickly, thank them too. Celebrating catches shows everyone that the process exists to help.

Keeping a catch log

Some teams keep a simple list of mistakes that reviews caught: the wrong environment, the missing undo plan, the unsafe jump in rollout. Reading the list every few months reminds everyone why the workflow exists, and gives new teammates real stories instead of abstract rules. It also shows where the template should ask better questions, so that the next mistake is caught even earlier.

SituationUnhelpful replyHelpful reply
Missing undo plan“This is incomplete.”“Could you add how we go back if graphs look wrong?”
Bad timing“Not now.”“The sale starts at 06:00. Could we publish after it settles?”
Unclear change“What is this?”“Can you list the old and new values, please?”
Big jump“Too risky.”“Could we go to 25 percent first and watch for a few hours?”
The best reviews sound like a colleague helping, not a guard blocking.
Analogy

A good coach points out a mistake in the swing and shows how to fix it. A bad coach only shouts. Both may be right about the mistake, but only one improves the team.

38Real-World and Industry Examples

Approval before action is an old idea. Almost every serious industry uses it. The descriptions below are general patterns that are widely discussed, not details of any private system.

Software code review

Most software teams require another engineer to review code before it merges. Platforms such as GitHub and GitLab have built approval rules directly into this process, with required reviewers, protected branches and recorded approvals. A flag change request is the same idea for behaviour changes that do not need new code.

Cloud infrastructure changes

Companies that manage infrastructure as code usually require review of infrastructure changes before they are applied, and often keep a separate step for the final apply. This mirrors the split between approval and publishing in Flagsmith.

Banking

Banks have long used a principle often called “four eyes”: important actions need two people. Large payments, changes to limits and changes to account settings often require a maker and a checker. Payment-related flags fit this model well.

Healthcare

Hospitals use double-checks for risky actions, such as certain medications. A second qualified person confirms the dose before it is given. The principle is the same, with a different level of stakes.

Aviation

Pilots use checklists with challenge and response. One person reads, another confirms. Aviation also shows the cost of a culture that blames: people hide mistakes. Open reviews help everyone learn.

Large technology companies

Companies that run products at huge scale have written publicly about reviewing configuration changes, staged rollouts and fast rollback. Their common message is that configuration changes can break products as badly as code changes, so they deserve review too.

FieldApproval practiceLesson for Flagsmith
Software developmentRequired code reviewersAnother person looks before the change lands
InfrastructureReview then applyApproval and publishing are separate steps
BankingMaker and checkerTwo people for high-risk changes
HealthcareDouble-check of risky actionsThe checker must really check
AviationChallenge and response checklistsUse templates and welcome questions
i
The pattern

Wherever a small action can cause a large effect, mature fields add a second look. Feature flags are exactly such a place.

39Reusable Checklists

Copy these into your team wiki. Short lists, used often, beat long manuals read once.

Before creating a request

  • Rehearse the change in Staging.
  • Check the environment name twice.
  • Write a clear title with the flag and the place.
  • Fill in why, what, when, check and undo.
  • Link the ticket.
  • Pick approvers who know the area.

When reviewing a request

  • Confirm the right flag and the right environment.
  • Compare old and new values line by line.
  • Check timing against sales, releases and maintenance.
  • Check the undo plan.
  • Ask a question if anything is unclear.
  • Approve only what you have read.

Before publishing

  • Compare the request’s “before” values with the live flag.
  • Confirm that plans have not changed since approval.
  • Check that someone will be watching.
  • Tell the team that you are about to publish.

After publishing

  • Watch graphs for at least ten minutes.
  • Add a note to the request with the result.
  • Announce completion.
  • Close related requests.

Every week and every quarter

  • Close stale open requests.
  • List scheduled changes for the next week.
  • Review approver groups and roles.
  • Check metrics and rule changes.
  • Practise the emergency path.
Analogy

A pilot never trusts memory for routine steps. Checklists are not a sign of weakness, but of care. They free the mind to think about the unusual parts.

40Plain-English Glossary

A short reference for the words used in this guide.

Term

Feature flag

A switch outside the code that changes behaviour.

Term

Environment

A separate stage such as Development or Production.

Term

Feature state

The setting of a feature in one environment.

Term

Change request

A saved proposal to change a flag, waiting for review.

Term

Approval workflow

The steps and rules a request passes through.

Term

Requester

The person who proposes the change.

Term

Approver

A person who reviews and agrees to a request.

Term

Publisher

The person who applies an approved request.

Term

Publish

Apply an approved request to the live flag.

Term

Scheduled change

A change set to take effect at a later time.

Term

Group

A named set of people who share rights.

Term

Permission

A right to perform a certain action.

Term

Separation of duties

Spreading steps among different people to reduce risk.

Term

Least privilege

Giving only the rights a person needs.

Term

Rubber stamp

Approving without reading.

Term

Cycle time

Time from creating a request to publishing it.

Term

Kill switch

A flag made to turn something off quickly.

Term

Emergency path

A fast, visible way to change a flag in a crisis.

Term

Audit log

A time-ordered record of important actions.

Term

Webhook

A message one program sends to another when something happens.

41Frequently Asked Questions

Quick answers to the questions that come up most often.

Q1What is the difference between approving and publishing?
Approving means reviewers agree. Publishing means the change is applied to the live flag. They are separate steps, which lets you choose the best moment to go live.
Q2Does the live flag change while the request waits?
No. The live flag keeps its current setting until the request is published.
Q3Should every environment require approvals?
Usually not. Production is the common choice. Requiring approvals in Development slows people without protecting customers.
Q4How many approvals should I require?
Match the number to the risk. One for medium risk, two for high and critical flags. More than two rarely adds safety.
Q5Can I approve my own request?
It depends on your version and settings. Where possible, block it, because a review by the same person is not a second look.
Q6What happens if I edit a request after approval?
In some versions, approvals reset, which is wise because reviewers approved an older version. Check how your version behaves and tell reviewers to look again.
Q7How do I handle emergencies?
Design an emergency path in advance, name who may use it, keep it visible in the audit log and review every use the next day.
Q8Can I schedule an approved change?
Yes, in versions that support scheduling. Choose a time when people are awake, write the time in UTC as well as local time, and re-check the plan before it fires.
Q9What if two requests change the same flag?
Compare the request with the live flag before publishing, give shared flags an owner and combine or sequence overlapping requests.
Q10Do segment and override changes follow the same workflow?
This varies by version. Check how your setup treats segments and overrides, and write the answer in your policy.
Q11How do I know approvals are not rubber stamps?
Watch the time to approve, the rate of questions and rework, and sample past approvals by asking reviewers what they checked.
Q12Where is the record of who approved what?
The change request holds approvals and comments. The audit log holds the publish action and exact times. Read both together.
Q13Does this help with compliance?
It is strong evidence for authorised and traceable change. It works best with access control, exports and a written policy. Confirm exact requirements with your own advisers.
Q14What are the first three things I should do?
Turn on change requests for Production, create at least one approver group with two members, and write a short request template.

42Summary and Key Takeaways

Let us pull the whole story together in a few lines you can remember.

Key Takeaways

  • A change request is a proposal, not a change. The live flag stays untouched until the request is approved and published.
  • Four steps, four roles. Request, review, approve and publish, carried out by requesters, approvers, publishers and administrators with the right permissions.
  • Match approvals to risk. Production first, one approval for medium risk, two for high risk, and never more approvers than attention.
  • Quality in, quality out. Use a short template with why, what, when, check and undo, and keep requests small.
  • Compare with live before publishing. Stale approvals and collisions are the most common accidents.
  • Design the emergency path and protect the rules. Fast, visible and reviewed, with multi-factor sign-in, restricted rights and alerts on rule changes.
  • Measure and stay kind. Watch cycle time and rework, review weekly, practise drills and use approvals to learn, not to blame. Confirm version-specific details in the Flagsmith documentation.