-
- Managing Form Submissions
- Searching and Filtering Submissions
- Submission Context Tracking
- Customizing Submission Columns
- Editing Submissions
- Deleting Submissions
- Importing Submissions
- Exporting Submissions
- Exporting Submissions with a Webhook URL
- Tracking the User's IP Address
- Tracking the User's Country
- Disable Submission Storage
- Auto-Delete Old Submissions
- Auto-Save Each Submission to a JSON file
- Increment a Count on Each Submission
- Add a Unique ID to Each Submission
-
- Email the Person Who Filled Out the Form
- Send an Email Only When a Checkbox Is Checked
- Attach the Submission PDF to Emails
- Send Email Based on Drop Down Selection
- Send Different Email Content Based on Form Responses
- Set up Auto-Responder Emails
- Styling Emails with CSS
- Sending Plain-Text Alternative Body Emails
- Troubleshooting Email Delivery
- Tracking Sent Emails
- Resending Emails
-
- Browser Autocomplete for Form Fields
- Redirect to a Menu Item After Form Submission
- Show a Form Only to Logged-In Users
- Adding an “Other” Option
- Show or Hide Form Fields Based on User Joomla User Group
- Scroll the Page to the Top When a Long Form is Submitted
- Display Submissions Count for a Specific Form
- Populate Drop Down, Radio Buttons or Checkboxes with a CSV File
- Silently POST Submitted Data to Any API or URL
- Create a Custom Login Form
- Auto-Populate Fields with Article Data
- Add a placeholder text to a Dropdown field
- Create Multilingual Forms in Joomla
- Redirect User to a URL After Form Submission
- Importing and Exporting Forms
- Display Convert Forms in a popup
-
- Troubleshooting Spam Submissions
- Updating from Convert Forms 5 to 6
- Troubleshooting Form Submission Errors
- Troubleshooting Form Rendering Issues with Joomla Cache
- Troubleshooting Issues with the Joomla Email Cloak Plugin
- Campaigns Feature Is Deprecated: Migrate to Tasks
- Prevent Form from Getting Covered by a Sticky Menu Bar
- Troubleshooting Convert Forms
-
- CSRF Token
- Does Convert Forms Use Cookies?
- Minimum Time to Submit
- Restrict Form Submissions Based on IP
- Enforcing a Custom Password Policy in Convert Forms
- Add ALTCHA Proof of Work to your Joomla form
- Add Cloudflare Turnstile to your Joomla Form
- Implement the Iubenda Consent Database in Joomla with Convert Forms
- Add Custom Validations to Fields and Forms
- Add Math Captcha to your Form
- Prevent a Field From Saving in the Database
- Add hCaptcha to your Form
- Enable Double Opt-in
- Allow Form Submissions in Specific Date Range
- Ensure a Unique Value is Entered Into a Field
- Block Form Submissions Containing Profanity (Bad Words)
- Block Email Addresses or Email Domains
- Honeypot
- Setting Up Google reCAPTCHA
- Create GDPR Compliant Forms
Smart Tags
Insert relevant information into your Joomla forms, much like how a programmer uses variables when writing code. Capture current URL, referrer URL or even the visitor's IP address in form fields.
Smart Tags are dynamic placeholders wrapped in curly braces, like {date} or {field.email}, that insert real data into your forms, emails, and notifications. Each time a submission is captured, they pull in details from the submission, the form, the visitor, and even site-wide information.
Form Fields
You’ve captured the submission. Now what? You’ll usually want to feed what people typed back to them: drop their name into a thank-you message, echo their answers in a confirmation email, or pass a value into a hidden field.
That’s what Field Smart Tags are for. The syntax is simple:
{field.NAME}
where NAME is the field name from its settings. A field named Email becomes {field.email}, and on submit it outputs whatever the user entered.
Beyond the plain value, you can also pull the field’s label, an HTML-formatted version, or the raw unescaped content. Each variation is covered below.
Output Field Label
Use this tag when you need to output a field’s label, so you don’t have to retype it manually.
{field.NAME.label_}
Note: The trailing underscore _ is required.
Output Field HTML Version
Some fields provide an HTML-friendly version of their value. Useful when you want clickable links or formatted output.
{field.NAME.html}
Supported fields include:
- Email → Clickable mailto link (
<a href="mailto:...">) - Phone → Clickable tel link (
<a href="tel:...">) - URL → Clickable hyperlink (
<a href="/...">) - File Uploads → List of download links for uploaded files
- Password → Replaced with asterisks for privacy
- Signature → Renders as an
<img>tag with the actual signature
Output Field Raw Value
Use this tag if you want the raw submitted value without any modifications. For example, to preserve HTML tags exactly as entered by the user.
{field.NAME.raw}
Output Dropdown, Radio Button and Checkboxes Data
Use these tags with Dropdown, Radio Button or Checkboxes fields when you need the selected option’s label or its calculated value.
To output the label of the selected option, use:
{field.NAME.selected.label}
Note that if you're populating the field's choices using PHP, the above Smart Tag will always output the value of the selected option instead of the label. This happens because the PHP script that populates the choices runs only during form rendering.
If you use Calculations, to output the calculation value of the selected option, use:
{field.NAME.selected.calcvalue}
A Checkboxes field can have more than one ticked option, so the tags work a bit differently there:
{field.NAME.selected.label}outputs the labels of all ticked options, separated by commas, like Fuel allowance, Parking.{field.NAME.selected.calcvalue}outputs the sum of the calculation values of all ticked options. For options with calculation values 7.50 and 2.50, it outputs 10.00.- When no option is ticked, the label is empty and the calculation value is 0.
{submission.fields}
Field Smart Tags print one value at a time. That's fine for a field or two, but if your form has numerous fields, adding them one by one isn't clever.
That's where {submission.fields} comes in. With a single Smart Tag you output all the values the visitor submitted. Very handy.
The syntax is simple. Use {submission.fields} and you get a label/value list like the one in the screenshot below:

If that output doesn't fit your needs, this Smart Tag can also render the values in a tabular style, using the --tmpl=table modifier:
{submission.fields --tmpl=table}

Supported options:
| Option | What it does |
|---|---|
--hideLabels=true |
Output values only, without the field labels. |
--excludeEmpty=true |
Skip fields that have no value. |
--excludeFields=text1,dropdown2 |
Exclude specific fields by name. |
--excludeTypes=hidden |
Exclude fields by type. |
--excludeHiddenByLogic=true |
Exclude fields hidden by conditional logic at the time of submission. |
--tmpl=table |
Render as a table instead of the default list. |
--styles=false |
Output the bare table without inline CSS, so it inherits your own styling. Only applies when --tmpl=table is used. |
Options can be combined. For example, {submission.fields --excludeEmpty=true --excludeTypes=hidden} outputs only the fields that have a value and drops all Hidden fields.
{all_fields} is deprecated. Use {submission.fields} instead, which produces the same output and supports more options. {all_fields} and {all_fields_filled} still work as aliases.
{submission.fields} outputs only fields that capture a submitted value. Non-input elements, such as Heading and HTML fields, aren't included. To print one of those, add its own Smart Tag using {field.ID}, where ID is the ID of the non-input field. Submission Identity
These tags output the submission's own identity: its ID and status, the dates it was received and last updated, and the form it belongs to. Each value is exposed as a {submission.<name>} Smart Tag.
| Title | Syntax | Description |
|---|---|---|
| ID | {submission.id} |
The unique ID of the submission. |
| Date Submitted | {submission.dateCreated} |
The date and time the submission was received. |
| Date Modified | {submission.dateModified} |
The date and time the submission was last updated. |
| Status | {submission.status} |
The submission status as a raw value: 1 for confirmed, 0 for unconfirmed. |
| Status Label | {submission.status_label} |
The submission status as a readable label: Confirmed or Unconfirmed. |
| Form ID | {submission.form_id} |
The ID of the form this submission belongs to. |
| Form Name | {submission.form_name} |
The name of the form this submission belongs to. |
{submission.identity}
{submission.identity} outputs the submission's identity in one go: its ID, the form it belongs to, its status, and the dates it was submitted and last modified. Internal notes are excluded.
It renders a label/value list by default, or a table when you add --tmpl=table.
Supported options:
| Option | What it does |
|---|---|
--hideLabels=true |
Output values only, without the detail labels. |
--excludeEmpty=false |
Include blank values. By default, details with no value are skipped. |
--exclude=status_label |
Exclude specific details by name. |
--tmpl=table |
Render as a table instead of the default list. |
--styles=false |
Output the bare table without inline CSS, so it inherits your own styling. Only applies when --tmpl=table is used. |
Submission Context
These tags output the context Convert Forms captures for each submission: who submitted it, where they came from, the device they used, and the campaign that brought them in. Each value is exposed as a {submission.<name>} Smart Tag, mirroring the details on the Submission Context Tracking screen.
| Title | Syntax | Description |
|---|---|---|
| Joomla User ID | {submission.user_id} |
The Joomla user ID of the submitter, when logged in. Use {submission.user_id.html} to link to the submitter's Joomla user profile. |
| Joomla User Login | {submission.user_login_name} |
The Joomla username of the submitter, when logged in. |
| Joomla User Name | {submission.user_name} |
The full name of the submitter, when logged in. |
| Joomla User Email | {submission.user_email} |
The account email of the submitter, when logged in. Use {submission.user_email.html} for a clickable mailto: link. |
| Visitor ID | {submission.visitor_id} |
An anonymous identifier for the visitor who submitted the form. |
| IP Address | {submission.ip} |
The IP address the submission was sent from. Requires IP address tracking to be enabled (it is by default). |
| Country Code | {submission.country_code} |
The two-letter country code resolved from the IP address. Requires Geolocation Features to be enabled; otherwise it stays empty. |
| Country Name | {submission.country_name} |
The full country name, derived from the Country Code. As long as a Country Code is stored, it resolves even if geolocation is later disabled. |
| Device Type | {submission.device} |
The device type detected: Desktop, Mobile or Tablet. |
| Operating System | {submission.os} |
The operating system detected from the user agent. |
| Browser | {submission.browser} |
The web browser detected from the user agent. |
| User Agent | {submission.user_agent} |
The raw browser user-agent string. |
| Source Page Title | {submission.page_title} |
The title of the page where the form was submitted. |
| Source URL | {submission.source_url} |
The URL of the page where the form was submitted. Use {submission.source_url.html} for a clickable link. |
| Source Domain | {submission.source_domain} |
The domain of the page where the form was submitted, parsed from the source URL (without www). |
| Source Path | {submission.source_path} |
The path of the page where the form was submitted, parsed from the source URL (without the domain or query string). |
| Referrer URL | {submission.referrer_url} |
The page the visitor came from before submitting. Use {submission.referrer_url.html} for a clickable link. |
| Referrer Domain | {submission.referrer_domain} |
The domain the visitor came from before submitting, parsed from the referrer URL (without www). |
| UTM Source | {submission.utm_source} |
The utm_source campaign parameter from the landing URL (e.g. google, newsletter). |
| UTM Medium | {submission.utm_medium} |
The utm_medium campaign parameter from the landing URL (e.g. cpc, email). |
| UTM Campaign | {submission.utm_campaign} |
The utm_campaign campaign parameter from the landing URL. |
| UTM Term | {submission.utm_term} |
The utm_term campaign parameter from the landing URL (paid keywords). |
| UTM Content | {submission.utm_content} |
The utm_content campaign parameter from the landing URL (A/B variant). |
{submission.context}
Convert Forms also auto-captures context about every submission, like the IP, browser, location, and the campaign that brought the visitor in, the same details listed in the table above.
Instead of printing them one by one, {submission.context} outputs the whole context block at once, as a label/value list like the one in the screenshot below:

If that output doesn't fit your needs, this Smart Tag can also render the values in a tabular style, using the --tmpl=table modifier:

Supported options:
| Option | What it does |
|---|---|
--hideLabels=true |
Output values only, without the detail labels. |
--excludeEmpty=false |
Include blank values. By default, details with no value are skipped. |
--exclude=ip,user_agent |
Exclude specific details by name. |
--tmpl=table |
Render as a table instead of the default list. |
--styles=false |
Output the bare table without inline CSS, so it inherits your own styling. Only applies when --tmpl=table is used. |
Other Smart Tags
Tags that don't belong to the submission's identity or its tracked context: the admin's internal notes, the generated PDF, and a running submission count.
| Title | Syntax | Description |
|---|---|---|
| Submission Notes | {submission.notes} |
Internal notes added to the submission from the admin. |
{submission.pdf} |
The absolute URL of the submission's generated PDF file. Requires the PDF Form Submissions addon. Use it as an email attachment or as a download link. | |
| Submissions Count | {submissions.count} |
The total number of times the current form has been submitted. Great for social proof, e.g. "Join 3,482 people who already signed up." The number updates on its own as submissions come in. |
Form Smart Tags
These tags provide access to form metadata and properties. They can be used either during form rendering or form submission.
| Title | Syntax | Description |
|---|---|---|
| Form ID | {form.id} |
The ID of the form that was just used. Useful for analytics tracking, database references, or API calls. |
| Form Name | {form.name} |
The name of the form that was just used. Handy in emails so recipients can tell which form was submitted, especially when several forms share one recipient or email template. |
Because the form is loaded into a Registry object, {form.NAME} can return any property of the form, not just the two above, as long as you know its key. Top-level properties are read directly, e.g. {form.state} or {form.created}. The form's Design settings are stored under params, so reach them with {form.params.KEY}, for example {form.params.bgcolor} for the form background color, {form.params.inputcolor} for the field text color, or {form.params.inputfontsize} for the field font size.
Global Smart Tags
You've seen how submission and form Smart Tags pull in data tied to a specific submission. But there's another group that works no matter what the user submits, or whether a form was submitted at all.
Global Smart Tags add context from outside the form: where the visitor is, what page they're on, their IP, the logged-in user account, the date, and more. Because they apply everywhere on your site (not just inside Convert Forms), they're handy for personalizing content, tracking analytics, or enriching your notifications.
For a full list of what’s available, see the Global Smart Tags documentation guide.
Where You Can Use Smart Tags
Smart Tags work both after a form is submitted and during form rendering, for example to pre-populate a field with a value or to display dynamic content inside an HTML field.
You can use them in many places, including:
- Email Notifications: Insert submission details into subject lines or message bodies.
- Form Field Settings: Set default values, placeholders, or hidden field values dynamically.
- Tasks & Integrations: Pass data to services like MailChimp, HubSpot, Emails, or Webhooks.
- Success Messages: Personalize the confirmation message the user sees after submitting a form.
Here are some practical workflows, with links to relevant guides:
- Auto-Populate Form Fields Using Query String: Capture URL parameters and insert them into form fields with
{querystring.NAME}. - Adding a Unique ID to Each Form Submission: Use
{randomid}to generate a unique reference number for every submission. - Display Submission Count for a Specific Form: Output the total number of submissions for a form with
{convertforms ID submissions_total}. - Create Multilingual Forms in Joomla: Dynamically output the current language with
{language.STRING}to build multilingual forms. - Attach a PDF of the Submission: Use
{submission.pdf}to attach the generated PDF to an email or offer it as a download link.
Rules
Values Are Escaped by Default
For security, Field Smart Tags escape their output by default. HTML tags are converted to entities, so user input can't inject markup into your emails or pages.
For example, if you accept user-generated content with a Rich Text Editor and the user submits:
<strong>Hello</strong>
then {field.NAME} outputs:
<strong>Hello</strong>
If you need the raw value with HTML preserved, use the .raw variation, {field.NAME.raw} (see Output Field Raw Value).
Frequently Asked Questions
Why is my Smart Tag showing up as plain text instead of a value?
Usually one of three things: the field name is wrong (it must match the field's name exactly, not its label), you're using a submission tag somewhere it runs before the form is submitted, or there's a typo in the curly braces. Double-check the field name in its settings.
Where do I find a field's NAME?
Open the field in the form editor and look at its Name setting (not the label). A field named email is used as {field.email}.
My HTML is coming out as <strong> instead of bold text. Why?
Field Smart Tags escape their output by default for security, so HTML turns into entities. If you trust the source and want the raw HTML preserved, use the .raw variation, {field.NAME.raw}.
What's the difference between {field.NAME}, {field.NAME.raw}, and {field.NAME.html}?
{field.NAME} outputs the value as safe, escaped text. {field.NAME.raw} outputs the exact value with no escaping. {field.NAME.html} outputs a formatted version for supported fields (a clickable email, phone, or URL link, a signature image, and so on).
A Smart Tag is coming out empty. What's wrong?
Some tags depend on optional features. Country and location tags need Geolocation enabled, the IP tag needs IP tracking on, and the Joomla account tags are only filled when the visitor was logged in.
Can I use Smart Tags in email notifications?
Yes. Drop them into the subject line or message body, and submission data gets inserted automatically when the email sends.
How do I attach the submission's PDF to an email?
Use {submission.pdf} in the Email Task's Attachments field. It returns the URL of the generated PDF and requires the PDF Form Submissions addon.
How do I output a dropdown's selected label instead of its value?
Use {field.NAME.selected.label}. For the calculation value of the selected option, use {field.NAME.selected.calcvalue}.
- Form Fields
- Submission Identity
- Submission Context
- Other Smart Tags
- Form Smart Tags
- Global Smart Tags
- Where You Can Use Smart Tags
- Rules
- Frequently Asked Questions
- Why is my Smart Tag showing up as plain text instead of a value?
- Where do I find a field's NAME?
- My HTML is coming out as <strong> instead of bold text. Why?
- What's the difference between {field.NAME}, {field.NAME.raw}, and {field.NAME.html}?
- A Smart Tag is coming out empty. What's wrong?
- Can I use Smart Tags in email notifications?
- How do I attach the submission's PDF to an email?
- How do I output a dropdown's selected label instead of its value?