Dynamic Tags: Bind Content Without Code
title: Dynamic Tags: Bind Content Without Code description: The complete reference for all 59 Elementor dynamic tags Protuno registers, organized by group with the Twig token each tag maps from during AI import.
Protuno registers 59 Elementor dynamic tags that you can attach to any slot field in the Proton widget panel, text fields, link URLs, and image pickers, without writing any code. Click the database icon on any field and pick a tag to bind that slot to live WordPress data.
4 core tags are available in the free version: Post Title, Post Content, Post Permalink, and Featured Image. All other tags require Protuno Pro. 29 additional tags appear only when their required plugin is active (WooCommerce, ACF, or JetEngine).
How To Bind A Field
- Select a Proton widget in Elementor
- Go to the Content tab
- Click the dynamic data icon (database symbol) on the right edge of any text, URL, or image field
- Pick a tag from the group that matches your data source
- Configure any sub-options the tag requires (meta key name, image size, etc.)
The slot now shows live data. On archive pages and post templates, it automatically adapts to the current item being rendered.
Post Group: 8 Tags (partial Free, partial Pro)
Data from the current post, page, or custom post type being viewed.
| Tag | Free | Returns | Twig equivalent |
|---|---|---|---|
| Post Title | Yes | The post's title | {{ post.title }} |
| Post Content | Yes | Rendered post body | {{ post.content }} |
| Post Permalink | Yes | Full URL to the post | {{ post.link }} |
| Featured Image | Yes | Featured image (id + URL) | {{ post.thumbnail }} |
| Post ID | Pro | Numeric post ID | {{ post.id }} |
| Post Excerpt | Pro | Manual or auto-generated excerpt | {{ post.excerpt }} |
| Post Date | Pro | Published date (format configurable) | {{ post.date }} |
| Post Custom Field | Pro | Value of a meta key you specify | {{ post.meta('your-key') }} |
Site Group: 4 Tags (Pro)
Global site information, same on every page. Requires Protuno Pro — site.* fields return empty in the free version.
| Tag | Returns | Twig equivalent |
|---|---|---|
| Site Title | The WordPress site name | {{ site.name }} |
| Site Tagline | The WordPress site description | {{ site.description }} |
| Site URL | The site's home URL | {{ site.url }} |
| Site Logo | The custom logo (id + URL) | {{ site.logo }} |
Archive Group: 4 Tags (Pro)
Data from the current archive or term page, used in Archive templates. Requires Protuno Pro.
| Tag | Returns | Twig equivalent |
|---|---|---|
| Archive Title | Current archive or term title | {{ archive.title }} |
| Archive Description | Current archive or term description | {{ archive.description }} |
| Archive Term Meta | A term meta value (key configurable) | {{ archive.meta('your-key') }} |
| Archive URL | URL of the current archive | {{ archive.url }} |
User Group: 6 Tags (Pro)
Data from the currently logged-in user. Requires Protuno Pro — user.* fields return empty in the free version.
| Tag | Returns | Twig equivalent |
|---|---|---|
| User Info | A chosen user field (name, email, first name, etc.) | {{ user.name }} · {{ user.email }} |
| User Custom Field | A user meta key value | {{ user.meta('your-key') }} |
| User Website URL | The user's website URL | {{ user.url }} |
| Author Posts URL | The user's author archive URL | {{ user.link }} |
| Login / Logout URL | Contextual login or logout link | — |
| User Avatar | Avatar image URL | {{ user.avatar }} |
Term Group: 5 Tags (Pro)
Data from the current term, used in archive templates and dynamic tag contexts where a term is in scope. Requires Protuno Pro — term.* fields return empty in the free version.
| Tag | Returns | Twig equivalent |
|---|---|---|
| Term Title | Term name | {{ term.name }} |
| Term Description | Term description | {{ term.description }} |
| Term URL | Term archive URL | {{ term.link }} |
| Term Post Count | Number of posts in the term | {{ term.count }} |
| Term Image | Term image (id + URL) | {{ term.image }} |
Twig Bridge Group: 3 Tags (Free for post data, Pro for site/user/term)
These are fallback tags that accept any Twig expression you type. Use them when no named tag covers your use case, for example, a filtered value like post.title|upper. In the free version, expressions using post.title, post.content, post.link, and post.thumbnail work. Expressions using site.*, user.*, term.*, request.*, or extended post fields like post.author.name require Pro.
| Tag | Use for |
|---|---|
| Twig Value | Any Twig expression returning text |
| Twig URL | Any Twig expression returning a URL |
| Twig Image (URL) | Any Twig expression returning an image URL |
During AI-generated HTML import, any {{ expression }} that does not map to a named tag automatically binds to the appropriate Twig bridge tag.
WooCommerce Group: 22 Tags (active when WooCommerce is installed)
Product data from the current WooCommerce product, used in Single Product templates.
| Tag | Returns | Twig equivalent |
|---|---|---|
| Product Title | Product name | {{ product.title }} |
| Product ID | Product ID | {{ product.id }} |
| Product SKU | SKU | {{ product.sku }} |
| Product Price | Price HTML (formatted) | {{ product.price }} |
| Stock Status | In stock / Out of stock | {{ product.stock_status }} |
| Stock Quantity | Numeric stock count | {{ product.stock_quantity }} |
| Product Type | simple / variable / grouped / etc. | {{ product.type }} |
| Average Rating | Average review rating | {{ product.average_rating }} |
| Sale Badge | On-sale flag | — |
| Short Description | Product short description | {{ product.short_description }} |
| Description | Full product description | {{ product.description }} |
| Product Categories | Product category names | — |
| Product Tags | Product tag names | — |
| Product Attribute | A chosen attribute value | — |
| Purchase Note | Post-purchase note | — |
| Product Slug | URL slug | {{ product.slug }} |
| Product URL | Product permalink | {{ product.link }} |
| Add to Cart URL | Add-to-cart link | {{ product.add_to_cart_url }} |
| Checkout URL | Checkout page link | — |
| Back to Shop URL | Shop page link | — |
| Product Featured Image | Featured image (id + URL) | {{ product.thumbnail }} |
| Product Gallery Image | A gallery image | — |
ACF Group: 4 Tags (active when Advanced Custom Fields is installed)
ACF fields are not auto-bound from Twig tokens, you must bind them in the panel UI and select the field from the ACF field picker.
| Tag | Returns |
|---|---|
| ACF Field | Text, number, or select field value |
| ACF URL | URL-type field value |
| ACF Image | Image field value (id + URL) |
| ACF Gallery (first image) | First image from a gallery field |
JetEngine Group: 3 Tags (active when JetEngine is installed)
JetEngine fields are also UI-bound only, no Twig token auto-binding.
| Tag | Returns |
|---|---|
| JetEngine Field | JetEngine meta value |
| JetEngine URL | URL-type JetEngine value |
| JetEngine Image | Image JetEngine value (id + URL) |
Twig Tokens and Auto-Binding
When you import a Figma design or AI-generated HTML that contains Twig tokens (like {{ post.title }}), Protuno automatically binds each token to the appropriate Elementor dynamic tag. The mapping is:
{{ post.title }}→ Post Title tag{{ post.thumbnail }}→ Featured Image tag{{ product.price }}→ Product Price tag- Any token without a direct match → Twig Bridge tag (Twig Value, Twig URL, or Twig Image)
This means AI-generated templates with Twig syntax become fully wired dynamic templates without manual configuration.
Frequently Asked Questions
Can I bind the same slot to different data on different pages?
Yes. Dynamic tags resolve to the current page context. A Post Title binding on a post template shows each post's own title. The same widget handles all posts.
What if the data source is empty (a post has no featured image)?
The slot renders empty. For fallback values, use a Twig bridge tag with a |default('fallback text') filter expression.
Can I use WooCommerce tags on a non-product page? They will return empty values outside a WooCommerce product context. WooCommerce tags are designed for use in Single Product templates.