Elementor Pro's Dynamic Tags integration with ACF is the most mature reference implementation of "page builder bound to custom fields" in the WordPress ecosystem. Every ACF field type has a corresponding Dynamic Tag. The Loop widget (Elementor Pro) handles Repeater rendering visually. Theme Builder uses ACF values for archive templates. Here is the canonical reference for what works, what does not, and where the integration shines compared to alternatives.
Jump to:
- The setup: Elementor Pro plus ACF Pro
- Binding ACF fields via Dynamic Tags
- Field-type coverage
- Repeater rendering with the Loop widget
- Flexible Content limitations
- Theme Builder integration for archive templates
- Conditional display based on ACF values
- When this combination is the right pick
The setup: Elementor Pro plus ACF Pro
The integration requires both Elementor Pro (free Elementor does not include Dynamic Tags) and ACF Pro (free ACF does not include Repeater or Flexible Content, both of which the integration leverages). No additional plugin needed for the integration itself; Elementor Pro detects ACF Pro automatically and exposes the relevant Dynamic Tags.
Once both are active, the Dynamic Tags icon (the database stack) appears on most Elementor widget properties.
Binding ACF fields via Dynamic Tags
On any compatible widget property, click the Dynamic Tags icon, find the "ACF" group in the dropdown, pick the Dynamic Tag for the field type you need:
- ACF Field: generic, works for Text/Textarea/WYSIWYG/Email/URL/Number.
- ACF Image Field: for binding to Image widgets or section backgrounds.
- ACF Gallery Field: for binding to Gallery widgets.
- ACF Date: formatted per the widget's date format setting.
- ACF Color: binds to color picker properties.
- ACF File: for download links.
- ACF Boolean: for True/False fields used in conditional display.
After picking the Dynamic Tag, configure it: select the field name, optionally specify a fallback value, optionally pick a different post to read from (for cross-post field access).
The bound widget shows the field's current value in the editor preview and re-renders on every post that uses the template.
Field-type coverage
| ACF Field Type | Elementor Coverage |
|---|---|
| Text / Textarea / WYSIWYG | Full (ACF Field tag) |
| Number | Full |
| Email / URL | Full |
| Image | Full (ACF Image Field tag) |
| Gallery | Full (ACF Gallery Field tag) |
| File | Full |
| Select / Radio | Full |
| Checkbox | Full (returns array; works with comma-joined render or in Loop) |
| True/False | Full (best used with conditional display) |
| Date / Time | Full with format settings |
| Color Picker | Full |
| Post Object | Full (returns linked post; useful for "related post" links) |
| Relationship | Loop widget (renders each related post) |
| Taxonomy | Full |
| User | Full |
| oEmbed | Full |
| Google Map | Full (ACF Map tag) |
| Repeater | Loop widget (Elementor Pro 3.8+) |
| Flexible Content | Limited; usually needs custom code |
| Group | Sub-field access via dot notation in some places |
| Clone | Inherits the cloned field's behavior |
| Page Link | Full |
Elementor Pro's ACF coverage is more thorough than any other page builder's I have worked with. The Repeater integration via the Loop widget is the standout feature.
Repeater rendering with the Loop widget
The Loop widget (Elementor Pro 3.8+) renders one template per row of a Repeater (or per post in a query, or per term in a taxonomy). For ACF Repeater specifically:
- On the page, add a Loop widget.
- Set the source to "ACF Repeater."
- Pick the Repeater field name.
- Click "Edit Template" to design the per-row layout in the visual builder.
- Inside the template, bind sub-fields via Dynamic Tags (the ACF group now exposes the Repeater's sub-fields).
The result is a visually-designed Repeater render with no template code. For agencies that ship many sites with Repeater patterns, this is a significant time saver.
The trade-off: the Loop widget's templates are stored in Elementor's database structure rather than as PHP files. Version control is harder; the templates do not travel with the theme.
For projects where the Loop widget's flexibility is the point (editor needs to redesign the Repeater rendering frequently), this is fine. For agency builds where you want the template in code, the ACF + custom template path is still cleaner. See A Cleaner Way to Render ACF Flexible Content Layouts Using Template Parts for the code-first version.
Flexible Content limitations
Flexible Content support in Elementor is incomplete. There is no native "Loop widget for Flexible Content" that switches templates per layout.
The workarounds:
- Use the Theme Builder with multiple templates and conditional logic to pick which template renders. Heavyweight but works.
- Custom shortcode that walks the Flexible Content and renders the right markup, then dropped into a Shortcode widget. Same pattern as the Using ACF with Divi escape hatch.
- Avoid Flexible Content in Elementor-driven sites. Use Elementor's own section/column structure for the page builder, and use ACF only for individual field bindings.
The third option is the most common in practice. Elementor IS a page builder; if you have Elementor, you usually do not need Flexible Content for the same job.
Theme Builder integration for archive templates
Elementor Pro's Theme Builder lets you visually design archive templates (category archives, custom post type archives, search results) with ACF values bound to widget properties for each post in the loop.
The pattern:
- Theme Builder > Add New > Archive (or Single).
- Set the conditions (e.g., "Archive: Posts in Category 'News'").
- Design the layout with widgets bound to ACF fields and post fields via Dynamic Tags.
This is the right pattern for sites where archives need rich custom design driven by ACF data. Especially useful for directory sites where each listing in an archive renders with ACF data (location, rating, hours).
Caveat: archive page performance with many ACF Dynamic Tag bindings can be slower than a hand-coded archive template. The trade-off is dev time vs runtime performance.
Conditional display based on ACF values
Elementor's Display Conditions (per-widget setting) include ACF field comparisons:
- "Show this widget if ACF field
is_featuredequals true." - "Show this widget if ACF field
tierequals 'pro' or 'enterprise'."
Useful for editor-driven variations without custom code. The condition runs on render; the widget either appears or does not.
For more complex conditional logic, custom widgets that read ACF directly are the alternative.
When this combination is the right pick
Elementor + ACF is the right pick when:
- The agency standardizes on Elementor for visual building.
- The site needs ACF for structured content modeling (custom post types with many fields).
- The editor team prefers Elementor's UI over alternatives.
- Theme Builder is needed for custom archive templates.
- The Loop widget covers your Repeater rendering needs.
It is the wrong pick when:
- The site is custom-development-first (use ACF + custom templates).
- The page is dominated by Flexible Content with many layouts (Elementor handles this poorly).
- Performance is a hard constraint (custom templates beat any page builder).
- The team is already on Divi or another builder.
For the broader page-builder vs custom-template decision, see Custom WordPress Themes vs Page Builders and Divi vs Elementor for Agency Workflows. For the Divi-side equivalent of this article, see Using ACF with Divi for Dynamic Content.
Sources
Authoritative references this article was fact-checked against.
- Dynamic Content in Elementor (Elementor documentation)elementor.com
- Loop Builder (Elementor documentation)elementor.com
- Advanced Custom Fields (official site)advancedcustomfields.com





