Advanced Custom Fields (ACF) Pro for Agencies: Workflow, Performance & Client Handoff
ACF Pro is the backbone of how I build editorial WordPress sites for agencies. After years of using it on client projects, I have refined a set of workflows that save time, improve editor experience and keep sites performing well. Here is what I have learned — and the mistakes I see agencies make most often.
Why ACF Pro Is Worth £49/Year
The free version of ACF is solid. But ACF Pro (£49/year) unlocks the features that make a real difference on agency projects:
Repeater Fields
Repeatable blocks of fields — team members, testimonials, FAQs, pricing cards. Without repeaters, you need separate custom post types for everything.
Flexible Content
A page builder that does not generate 10 levels of nested divs. Editors choose from pre-defined layout blocks that you have coded with clean HTML.
Gallery Field
Proper image gallery management with drag-and-drop reordering, not the awkward gallery block experience.
Options Pages
Global settings like site-wide banners, footer content, social media links — all editable from one admin page instead of scattered across widgets.
JSON Sync: The One Setting Most Agencies Miss
By default, ACF stores field group definitions in the database. This creates two problems for agencies: field groups can get out of sync between staging and production, and you cannot track changes in Git.
The fix is ACF Local JSON. Add this to your theme's functions.php:
add_filter('acf/settings/save_json', function($path) {
return get_stylesheet_directory() . '/acf-json';
});
add_filter('acf/settings/load_json', function($paths) {
$paths[] = get_stylesheet_directory() . '/acf-json';
return $paths;
});Now every field group change is saved as a JSON file in your theme. You commit it to Git, deploy it with your theme and never have to worry about syncing field groups manually between environments again. Field groups load from JSON instead of the database — faster, and you have a version history of every change.
Performance: Common ACF Mistakes and How to Fix Them
Mistake 1: Not Caching ACF Queries
Every get_field() call hits the database via get_post_meta(). On a page with 30+ ACF fields, that is 30+ database queries. Use WordPress transients or object caching (Redis) to cache complex field groups that do not change often.
Mistake 2: Loading All Fields on Every Page
ACF loads every field group, even if only one is used on the current post type. Use ACF's location rules properly to scope field groups to specific post types and templates. This reduces admin overhead and database queries.
Mistake 3: Over-Using Flexible Content
Flexible Content fields are powerful but can generate complex database structures. Limit layout options to what the design actually needs — do not create 15 layout types when 6 will do. Each unused layout still adds code that loads on every edit screen.
Client Editor Experience That Works
The most common complaint about ACF is that editors find it confusing. This is almost always a setup problem, not a tool problem. Here is how to make it intuitive:
- Use field labels that match client language: Call it "Hero Title" not "Page H1 Heading." Use your client's vocabulary, not developer jargon.
- Add clear instructions: Every field group has an Instructions field. Use it: "This appears at the top of the homepage. Keep it under 50 characters."
- Organise fields into logical tabs: Use tabs within field groups to separate content areas — "Hero," "Services," "CTA" — instead of dumping 30 fields into a single long list.
- Set conditional logic: Only show relevant fields. If the client selects "External Link," hide the "Internal Page" field. Reduces confusion and prevents content errors.
- Provide a cheat sheet: A one-page PDF or admin page with screenshots explaining what each field group controls. Hand it over at training; it saves support tickets later.
Reusable Field Groups: Save Time Across Projects
After building a few sites, you notice patterns. Every client needs testimonials. Every site has a CTA block. Every blog post has related posts. Instead of rebuilding these field groups from scratch each time, create a starter field group library.
The JSON sync setup from earlier makes this easy. Keep a starter theme with common field groups pre-configured. When starting a new project, copy the relevant JSON files, adjust labels to match the client's vocabulary and you have a proven field architecture in minutes instead of hours.
Need ACF Set Up on Your Agency Projects?
I build clean, editor-friendly ACF architectures for UK agency projects. Proper field groups, JSON sync, performance-optimised and documented so your team can pick up where I leave off.