---
title: "May - Jun 2026 Product Updates"
description: "Everything new across Convert Forms, Google Structured Data, Code Snippets, and Advanced Custom Fields in May and June 2026, headlined by automatic Submission Context Tracking in Convert Forms."
url: "https://www.tassos.gr/blog/product-updates/2026-may-jun"
date: "2026-07-25T16:54:32+00:00"
language: "en-GB"
---

#  May - Jun 2026 Product Updates

 ![Tassos Marinos](https://www.gravatar.com/avatar/cc4c5cd6974bf2cd8bfa2d6efcc60843?s=48)  Tassos Marinos  [Follow](https://x.com/tassosm)

 Published in [Product Updates](https://www.tassos.gr/blog/product-updates)

 3 weeks ago

 11 min read

 Last updated 2 weeks ago

 ![May - Jun 2026 Product Updates](https://www.tassos.gr/images/2026/06/product_updates_mayjun_2026.png)May and June kept us busy. Convert Forms got the lion's share of the work, headlined by a feature that quietly records the story behind every submission. Google Structured Data, Smile Pack, and Advanced Custom Fields all picked up meaningful improvements, too.

If you missed the last two rounds, catch up on the [Mar - Apr 2026 Product Updates](https://www.tassos.gr/blog/product-updates/2026-mar-apr) and the [Jan - Feb 2026 Product Updates](https://www.tassos.gr/blog/product-updates/2026-jan-feb).

Let's get into it.

In This Article

- [Convert Forms](#convert-forms)

    - [Introducing Submission Context Tracking](#introducing-submission-context-tracking)

    - [Choose exactly what lands in your export](#choose-exactly-what-lands-in-your-export)

    - [A Submissions table you can actually shape](#a-submissions-table-you-can-actually-shape)

    - [Smart Tags get sharper](#smart-tags-get-sharper)

    - [Brevo now supports double opt-in](#brevo-now-supports-double-opt-in)

    - [Full control over browser autocomplete](#full-control-over-browser-autocomplete)

    - [Fresh installs no longer include Campaigns](#fresh-installs-no-longer-include-campaigns)

    - [CAPTCHA plugins tidied up](#captcha-plugins-tidied-up)

- [Google Structured Data](#google-structured-data)

    - [More control over what goes into the Markdown](#more-control-over-what-goes-into-the-markdown)

    - [Keeping Markdown URLs out of search results](#keeping-markdown-urls-out-of-search-results)

    - [A round of fixes](#a-round-of-fixes)

- [Code Snippets](#code-snippets)

    - [One-click snippet duplication](#one-click-snippet-duplication)

    - [Rename a snippet's shortcode from the edit screen](#rename-a-snippet-s-shortcode-from-the-edit-screen)

- [Advanced Custom Fields](#advanced-custom-fields)

    - [File Upload field](#file-upload-field)

    - [Video field](#video-field)

    - [Gallery field](#gallery-field)

    - [Map field](#map-field)

- [Security Fixes](#security-fixes)

    - [Submissions exports could reach the wrong files](#submissions-exports-could-reach-the-wrong-files)

    - [Old vulnerable files left behind on update](#old-vulnerable-files-left-behind-on-update)

## [Convert Forms](#convert-forms)

Our [contact form builder](https://www.tassos.gr/joomla-extensions/convert-forms), saw the busiest cycle of all. Most of the work went into submissions: what you capture, how you view it, and how you get it out. Here are the highlights.

### [Introducing Submission Context Tracking](#introducing-submission-context-tracking)

Say you wanted to know the visitor's IP, the country they submitted from, or the exact page a form lived on. Until now, that was a manual project. You'd add a [hidden field](https://www.tassos.gr/docs/convert-forms/fields/hidden-field) for each value, wire each one to a Smart Tag, and so on, then repeat the entire setup on every form you run. With a dozen forms, that's the same busywork a dozen times over. And if you forgot a field on one form, that data was gone for good, with no way to recover it.

Introducing [Submission Context Tracking](https://www.tassos.gr/docs/convert-forms/submission-management/context-tracking). Convert Forms now records all of it automatically, the same way on every form. No fields to add, nothing to maintain. On top of the basics, you get details you'd almost never wire up by hand: the country, device type, operating system, browser, referrer, and UTM parameters, all captured on every submission.

![The Submission Context card showing the tracked data for a single submission](https://www.tassos.gr/images/2026/06/Viewing_Tracked_Data.png)

Three pieces make this work:

- New [Submission Context Smart Tags](https://www.tassos.gr/docs/convert-forms/features/smart-tags#submission-context-smart-tags) so you can drop any of these values into emails and notifications.
- A [Store IP Addresses](https://www.tassos.gr/docs/convert-forms/submission-management/ip-address) privacy option in the extension configuration lets you turn off IP recording when your privacy policy calls for it.
- A redesigned [Submission Edit page](https://www.tassos.gr/docs/convert-forms/submission-management/edit) with a dedicated Submission Context card that lays all of this out at a glance.

### [Choose exactly what lands in your export](#choose-exactly-what-lands-in-your-export)

The Submissions export used to be all-or-nothing on the field side. If you only needed three columns in your spreadsheet, you still got everything the form collected, then cleaned it up by hand afterward.

The export pop-up now includes a **Properties to Export** picker. Tick the form fields you want, skip the ones you don't, and pull in the new context properties (IP, country, device, referrer, and the rest) if you need them. Your selection is remembered per form, so the next export starts where you left off.

Details are in the [Exporting Submissions](https://www.tassos.gr/docs/convert-forms/submission-management/export) doc.

![The Properties to Export picker grouping Core Fields, Form Fields, and Submission Details](https://www.tassos.gr/images/2026/06/Export_Submissions_Select_Columns.png)

### [A Submissions table you can actually shape](#a-submissions-table-you-can-actually-shape)

A busy form can collect a dozen fields or more, and the Submissions list tries to show all of them. That meant a lot of sideways scrolling to find the two or three columns you actually cared about.

We rebuilt the columns picker from the ground up. Search to find a column fast, hide the ones you don't need, and drag the rest into whatever order makes sense for that form. The best part: your layout is saved against your own user account, per form. It sticks between logins, and it doesn't step on what your colleagues see.

More in [Customize Columns](https://www.tassos.gr/docs/convert-forms/submission-management/customize-columns).

![The redesigned columns picker with search, Shown in table and Hidden in table sections, and drag handles](https://www.tassos.gr/images/2026/06/Click%20Columns.png?v=1)

### [Smart Tags get sharper](#smart-tags-get-sharper)

A few refinements landed for anyone building custom emails and notifications:

- `{all_fields}` is now `{submission.details}`. The old tag still works, so nothing breaks in your existing templates.
- `{submission.fields}` picked up a `--tmpl=table` option that renders all fields in a clean tabular layout instead of the default list. Handy for admin notification emails. See the [Smart Tags reference](https://www.tassos.gr/docs/convert-forms/features/smart-tags#submissionfields).

    ![The {submission.fields} tag rendered as a table with the --tmpl=table option](https://www.tassos.gr/images/2026/06/submission_fields_table.png?v=1)

- A new `{submission.identify}` aggregate tag outputs the submission's core metadata (its ID, the form it belongs to, its status, and its submission and modification dates) in a single block. More in the [identity Smart Tags docs](https://www.tassos.gr/docs/convert-forms/features/smart-tags#submission-identity-smart-tags).

### [Brevo now supports double opt-in](#brevo-now-supports-double-opt-in)

![cf tasks brevo select step](https://www.tassos.gr/images/cf-tasks-brevo-select-step.png)

If you [sync form entries to Brevo](https://www.tassos.gr/docs/convert-forms/integrations/email-marketing/brevo#double-opt-in), you probably want new contacts to confirm their email before joining your list. Standard practice for clean lists and GDPR peace of mind, and the Brevo Task couldn't do it.

It can now. Flip on Double Opt-In in the Brevo task's Setup Action step, pick a confirmation template from your Brevo account, and optionally set a redirect URL. Brevo emails the subscriber, and the contact only joins your list after they click the link in the email.

### [Full control over browser autocomplete](#full-control-over-browser-autocomplete)

Autocomplete on a field used to be a simple on/off switch. Fine most of the time, but not when you needed the browser to treat a field as something specific.

Input fields now have a Browser Autocomplete dropdown with three options.

- **Default** leaves it to the browser.
- **Off** stops suggestions entirely, which is exactly what you want on confirmation fields or one-time reference numbers.
- **Custom** lets you enter your own HTML autocomplete token, like `email` or `given-name`, to tell the browser precisely what the field is for.

Full breakdown in the [Browser Autocomplete docs](https://www.tassos.gr/docs/convert-forms/functionality/browser-autocomplete).

![The Browser Autocomplete dropdown with Default, Off, and Custom options](https://www.tassos.gr/images/2026/05/Browser_AutoComplete.png)

### [Fresh installs no longer include Campaigns](#fresh-installs-no-longer-include-campaigns)

We flagged this a year ago: Campaigns is deprecated, and Tasks is its more flexible replacement. As of this cycle, Campaigns is entirely removed from fresh installations.

If you already use Campaigns, nothing changes for you. Existing installs continue to work, and the update mechanism handles the transition automatically when the section is eventually removed. Only brand-new installs start clean on Tasks.

The full picture, including the migration path, is here: [Campaigns deprecated](https://www.tassos.gr/docs/convert-forms/troubleshoot/campaigns-deprecated).

### [CAPTCHA plugins tidied up](#captcha-plugins-tidied-up)

The standalone reCAPTCHA Checkbox and reCAPTCHA Invisible plugins were doing a job the generic [reCAPTCHA form field](https://www.tassos.gr/docs/convert-forms/security/google-recaptcha) already handles, so they were both deprecated. We removed them. You can still use either mode; just pick it directly from the reCAPTCHA field. While we were in there, we moved all CAPTCHA plugins into their own group in the form builder's field list, so they're easier to find.

![CAPTCHA Fields](https://www.tassos.gr/images/2026/06/CAPTCHA_Fields.png)

## [Google Structured Data](#google-structured-data)

Every improvement this cycle for our Joomla SEO extension centered on [HTML-to-Markdown](https://www.tassos.gr/docs/google-structured-data/functionality/html-to-markdown), the feature we shipped back in May.

Quick recap on what it does: when an AI agent or LLM crawls one of your Joomla pages, it normally has to wade through a full HTML document stuffed with menus, scripts, ads, and footers. HTML to Markdown hands it a clean version instead. Append `.md` to any page URL, or send an `Accept: text/markdown` header, and you get just the page's content as tidy Markdown, with the title, description, and structured data included. Agents get the signal without the noise.

We just published a full write-up on the thinking behind it: [Same Joomla page, fewer tokens: serve Markdown to ChatGPT](https://www.tassos.gr/blog/same-joomla-page-with-fewer-tokens-serve-markdown-chatgpt).

Here's what we improved.

### [More control over what goes into the Markdown](#more-control-over-what-goes-into-the-markdown)

The default output includes a YAML frontmatter block and a schema summary, which is great for agents who want the full picture. Some sites, though, just want the raw page content and nothing else.

Two new levers cover both cases. A `data-gsd-markdown-ignore` HTML attribute lets you exclude specific elements from the Markdown output, so anything you mark gets stripped out. And new options let you toggle the YAML frontmatter and the schema summary on or off, for a leaner Markdown version when that's what you're after.

### [Keeping Markdown URLs out of search results](#keeping-markdown-urls-out-of-search-results)

Left alone, search engines could index both the HTML and the Markdown version of the same page, which is textbook duplicate content.

Markdown responses now send a `X-Robots-Tag: none` header that is equivalent to `noindex, nofollow`, so crawlers skip the Markdown URL entirely and index only the canonical HTML page. The `nofollow` half also means crawlers don't chase links inside the Markdown response. Those links already exist on the canonical page, so there's nothing new to discover there anyway.

### [A round of fixes](#a-round-of-fixes)

We also cleaned up several rough edges in the Markdown pipeline:

- Markdown requests were sometimes served as cached HTML when JCH Optimize or another page-cache plugin was active. Fixed.
- Shortcodes were left unparsed in the Markdown output. Fixed.
- Cached Markdown responses weren't cleared after you changed the extraction method. Fixed.
- SEF URLs were returning 404 in some setups. Fixed.

## [Code Snippets](#code-snippets)

If you missed its launch a few months back, [Code Snippets](https://www.tassos.gr/joomla-extensions/code-snippets) is our newest Joomla extension. It gives you one central place to write, organize, and run custom JavaScript, CSS, HTML, and PHP, without touching your template files or piling on a plugin for every little tweak. Handy for admins, developers, and agencies who want their customizations in one spot and safe from updates.

![hero](https://www.tassos.gr/images/joomla-extensions/code-snippets/hero.png)

This cycle brought two small quality-of-life additions for snippet management. Both save you a couple of clicks on things you do often.

### [One-click snippet duplication](#one-click-snippet-duplication)

Duplicating a snippet meant reaching for the Batch Process action button, which is more detour than shortcut for a single copy. There's now a direct **Duplicate** button in the snippet's dropdown menu, so you can clone a snippet in one click.

![Code Snippets Duplicate](https://www.tassos.gr/images/2026/06/Code-Snippets-Duplicate.png)

### [Rename a snippet's shortcode from the edit screen](#rename-a-snippet-s-shortcode-from-the-edit-screen)

You can now set a snippet's shortcode to a name of your choosing, right from the edit screen. Give it a shortcode that actually reads like what it does.

![Code Snippets Modify Shortcode](https://www.tassos.gr/images/2026/06/Code-Snippets-Modify-Shortcode.png)

## [Advanced Custom Fields](#advanced-custom-fields)

A batch of fixes and a few additions across several field types. Let's run through them by field.

### [File Upload field](#file-upload-field)

Three issues cleared up in the [File Upload field](https://www.tassos.gr/docs/advanced-custom-fields/fields/file-upload):

- Deleting a File Upload field from inside a Subform wasn't removing the physical file from the server. It now deletes properly.
- The "Randomize File Names" setting was being ignored. It's honored again.
- When an uploaded file couldn't be moved to a non-writable or invalid upload folder, the field failed silently. It now shows a clear error instead, so you know exactly what went wrong.

### [Video field](#video-field)

Two improvements for the [Video field](https://www.tassos.gr/docs/advanced-custom-fields/fields/video):

- You can now read a Video field's start and end times straight from the video URL, overriding the global settings. Works for YouTube, Vimeo, and Dailymotion.
- The "Related Videos" option got a clearer description. It can show related videos from any channel or restrict them to the current channel.

### [Gallery field](#gallery-field)

Fixed the [Gallery field](https://www.tassos.gr/docs/advanced-custom-fields/fields/gallery) failing to upload images when the site's temporary folder sits outside the web root.

### [Map field](#map-field)

The [Map field](https://www.tassos.gr/docs/advanced-custom-fields/fields/map) now supports importing and exporting marker titles and descriptions, so your markers survive a round trip through import/export intact.

## [Security Fixes](#security-fixes)

Two security fixes shipped this cycle, both in Convert Forms 5.2.0. One is in Convert Forms itself. The other comes through the bundled **Tassos Framework**. If you run Convert Forms, update now.

### [Submissions exports could reach the wrong files](#submissions-exports-could-reach-the-wrong-files)

When you export your submissions, Convert Forms writes the file to a temporary folder and then hands it to your browser. It trusted the request about which file to hand over. It didn't check whether that file actually belonged to the export folder.

A crafted request could point at any file the server could read, and get it back. The export is deleted once it's been sent, so the same request could delete that file too. It took an administrator account to pull off. The server also didn't check that the request came from the Convert Forms admin screen. Your browser attaches your login automatically, so an admin who visited the wrong page could fire the request without realizing it.

The fix keeps every temporary file Convert Forms creates in one dedicated folder. Any request pointing outside that folder is rejected. Exports now also confirm the request came from the admin screen before anything is sent. [Exporting submissions](https://www.tassos.gr/docs/convert-forms/submission-management/export) works exactly as it did before.

### [Old vulnerable files left behind on update](#old-vulnerable-files-left-behind-on-update)

When we drop a file from an extension, Joomla's updater doesn't remove it from your site. It overwrites what's in the new package and leaves everything else alone. A retired file just sits there.

That's what happened to the old inline file upload field. We pulled it as part of the [Tassos Framework patch](https://www.tassos.gr/blog/company/security-update-tassos-framework-patch-released) released in February. Removing it from the package stopped us shipping it, but it didn't delete it from sites that already had it. The vulnerable code stayed on the server, and it was still reachable. That's why we're marking this as a security fix rather than housekeeping.

The Tassos Framework now cleans up after itself. On update it deletes the files it has retired. The cleanup only runs on sites that haven't had it yet, and running it twice is harmless. Nothing to do on your end beyond [updating your extensions](https://www.tassos.gr/docs/common/setup/install-or-update).
