{"id":690,"slug":"cms-workflow-decision-matrix","title":"CMS workflow decision matrix — Sanity/Storyblok (weekly editors, visual preview); Keystatic (monthly, technical-adjacent); Markdown-in-Git (engineers only)","kind":"reference","scope":"business","status":"current","audiences":["kevin","claude-code","candid-team"],"topics":["agency-methodology","content-extraction","cms-workflow"],"reference_body":"**The decision framework Candid uses for picking a CMS during migration:**\n\n| Client profile | Recommendation | Why |\n|---|---|---|\n| Edits weekly+, multiple editors, needs visual preview, non-technical | **Sanity (Presentation tool)** or **Storyblok (Visual Editor)** | Hosted, real-time collaboration, click-to-edit preview, no Git literacy required |\n| Edits monthly, single editor, comfortable with forms (not Word) | **Keystatic** (Astro/Next.js) | Git-based, no database, no SaaS bill, schema-as-TypeScript |\n| Weekly+ but team has engineers / dev on staff | **Markdown in Git, no CMS** | Maximum portability; PR review = editorial workflow |\n| Structured content reused across web + email + native app | **Sanity (only)** | Content Lake, GROQ queries, true headless |\n| Wants to keep the WordPress editor experience | **Headless WordPress + Next.js** | Preserves editor muscle memory; doubles infrastructure cost |\n| Daily editors, large team, complex publishing workflow | **Stay on WordPress** | Migration is the wrong project for this profile |\n\n**What non-technical clients actually need vs think they need:**\n\n- They *think* they need: Gutenberg-equivalent visual builder for every page.\n- They *actually* need: write blog posts, swap a hero image, edit a phone number, add a team member. All trivially handled by any modern CMS with a forms-based UI.\n- They *fear losing*: live preview. Real fear. Sanity Presentation, Storyblok Visual Editor, TinaCMS, and Payload Live Preview all solve it; Keystatic and Decap don't.\n- They *will reject*: any workflow involving Git, branches, or pull requests. Even Decap (technically Git-backed UI) confuses clients with the \"draft\" vs \"merged\" states.\n\n**FatLab's honest framing:** *\"This is the complaint we hear most often from clients who inherited headless systems. Staff publish something, and it doesn't show up on the website. They learn they need to 'trigger a build,' 'clear the cache,' or wait for the deployment cycle to complete.\"*\n\n**Real adoption note:** no reliable cross-agency survey exists on how often SMB clients edit post-launch. Anecdotally, modal SMB site goes 60-90 days between edits. Argument **for** simpler CMS (Keystatic) rather than paying Sanity seat fees the client won't exercise.","rationale_body":null,"metadata":null,"links":{"outgoing":[{"slug":"rule-prefer-astro-cloudflare-default-marketing-site","title":"RULE: Default stack for new marketing-site work is Astro 5/6 + Tailwind v4 on Cloudflare Pages","kind":"rule","scope":"business","link_type":"relates-to"},{"slug":"live-preview-state-of-the-art-2026","title":"Live-preview state of the art (May 2026): Sanity Presentation most mature; Storyblok Visual Editor pioneered iframe pattern; TinaCMS only Git-based with true visual editing","kind":"reference","scope":"business","link_type":"depends-on"}],"incoming":[{"slug":"migration-objection-handling-map","title":"Migration objection-handling map — sourced answers to every common client fear about migrating off WordPress","kind":"reference","scope":"business","link_type":"depends-on"}]},"created_at":"2026-05-22T21:24:18.434Z","updated_at":"2026-05-22T21:24:18.434Z"}