The short answer
Send each post to the reviewer as it will appear, with the caption, artwork and planned date, and ask for one of two answers: approve, or change this. Record who answered, what they said and when, against that version of the post.
Do not schedule a post until its approval is recorded. Sign-off is a record of a decision; it only protects you if your process waits for it.
Why not just give the client a login
A client login sounds tidy and rarely is. Clients forget passwords, share one account among four people, and see drafts and internal comments they were never meant to. Every extra seat is also someone who can change a post you thought was finished.
Most reviewers want one thing: to see the post and say yes or no. A link that opens that post, with two buttons, asks less of them and gets answered faster. The trade-off is that a link is weaker proof of identity than a login, so treat it accordingly.
The workflow
- Agree who approves. Name one approver per brand, and a stand-in. "Anyone at the client" means the answer you get is from whoever saw the email first.
- Check the post before it goes out for review. Run your own checks first: the don't-say list, spent hashtags and figures, platform limits. A client should be approving the message, not proofreading.
- Send the final version. Caption, first comment, every slide or the video, the account and the planned date. If the reviewer approves something other than what ships, the approval is worth nothing.
- Ask for one decision. Approve, or request changes with a note. Open-ended "thoughts?" produces a thread, not a decision.
- Set a deadline. A link or request that expires forces an answer and stops an old version being approved weeks later. Two or three working days is a reasonable rule of thumb.
- Record the decision against the version. Who, what, when, and which version. If the post changes after approval, the approval no longer applies to it; send it again.
- Schedule only what is approved. Make this a step someone does, not an assumption. Before scheduling the week, check every post has a current approval.
Doing it by hand
A shared folder of exported post previews and a spreadsheet will do. The sheet needs one row per post with columns for version, sent on, approver, decision, note, decided on, and scheduled. Send the reviewer a link to the preview, not the folder, and ask them to reply with approve or a change.
Copy each answer into the sheet the day it arrives. An approval that lives only in someone's inbox cannot be found when the client later asks why a post went out. Add a simple rule to the sheet: a post whose version is newer than its approved version turns red.
Handling change requests
Most rounds end in a change request, not an approval, so plan for it. Ask the reviewer to say what is wrong rather than rewrite the post; "the second slide overstates the saving" is easier to act on than a new caption pasted into an email.
Change only what was asked for. A revision that also tidies three other lines forces the reviewer to read the whole post again and invites a second round. Keep every earlier version, so you can show what changed and go back if the new version is worse.
Then send the new version as a new request. Do not treat the earlier approval, or the earlier change request, as covering it. If the same point comes back twice, it probably belongs on your don't-say list so the next draft never makes it.
What approval is not
Be clear with your team about what sign-off enforces. In most setups, including a spreadsheet, recording an approval does not stop an unapproved post from being published; the scheduler does not know or care. The protection comes from the step where a person checks approvals before scheduling.
The same is true in CampaignFlow, described below. If you need a hard gate, it has to be your process.
How CampaignFlow does this
CampaignFlow sends a reviewer a link from which they can approve the post or ask for changes, without an account. Each link lasts 72 hours and records one decision. It is sign-off, not a gate: an approval is recorded, but it does not hold back an unapproved post, so schedule only what has been approved.
What is held back is a post that is not ready: each post is re-checked 15 minutes before it goes out. For agencies, every brand sits behind one login; see CampaignFlow for agencies and the features page.
Questions