v7.3.0
20 October, 2026New
- Workflow Builder — The trigger's Capture tab marks the response in use for mapping and shows its first fields under Use selected response.
- Workflow Builder — Long step names wrap to a second line on the canvas, and hovering a step shows its full name.
- Workflows — Cloning names the copy "Name (copy)", then "(copy 2)", "(copy 3)", so clones never share a name.
- Connects — Ask a client or teammate for an app's credentials with a private link: choose "Ask someone for them" when creating a connect, optionally email the link with a message, and pick an expiry of 1, 3 or 7 days. The recipient opens a page that needs no login and shows only the fields still missing (API key, bearer token or basic auth), or a sign-in button for OAuth apps; the link works once and the values are never shown again. The connect can be picked in workflows straight away, its row shows the request status with Copy link, Resend request email and Cancel request, and you are emailed when it is connected. The request emails are designs in Email Templates. Needs HTTPS; not available for FTP/SFTP and AWS connects.
- Connects — Editing a connect with a pending request opens on the request; adding the credentials yourself closes the link (optionally letting the person asked know), so nothing sent later can replace them. For OAuth apps the link closes once the sign-in succeeds. The workflow builder's connect picker marks connects still waiting for credentials.
- Triggers — Skip Duplicate Events on any trigger's Conditions tab: a key built from the trigger data (e.g. {order_id}) and a window; a repeat of the same event within the window is recorded in Task History as skipped instead of running again, even when the copies arrive at the same moment. Re-execute from Task History and test runs are never skipped.
- Task History — Every step shows the inputs it ran with (dynamic tags filled; secrets masked, including inside headers and nested fields, while settings like max_tokens stay readable) under Request Payload, including apps that never reported their request, so a live run's values can be compared with a test.
- Task History — A run's trigger data can be loaded into the builder as the trigger's captured response, to map fields against what a live run received.
- Webhook — A Deliver via FlowMattic Cloud option on the trigger. Senders post to a hooks.flowmattic.com address; deliveries to the site retry for about five days, and a failed event can be re-sent from the Cloud screen — a site that is down no longer loses a webhook.
- Webhook — Generate the FlowMattic Cloud URL right in the trigger's Delivery settings, before saving, and see where Cloud forwards it.
- Webhook — Paste a sample JSON payload on the trigger's Capture tab when the sending app can't fire a test; it is stored as a captured response, processed like a live request, ready for mapping.
- Webhook Response — Set Webhook Response can answer with any HTTP status code from 200 to 599 and extra response headers such as Cache-Control, on both webhook URL styles.
- Router — Test the routes against a sample before saving: the Router's test button opens the data captured above it, ready to edit, and Test shows each route as Runs or Skipped with every condition and the values it compared. A condition that reads no run data is marked as fixed text. Nothing is saved or sent.
- Delay — Delay Until has a Time Zone setting (any region, UTC or a manual offset); left at its default it reads the date in the site time zone, as before.
- Iterator — Wait Between Items pauses up to 60 seconds before each item after the first, in both Direct and Batch methods, to stay under an API's rate limit.
- WordPress — New triggers for Plugin Activated, Plugin Deactivated, Plugin Updated (one run per plugin that actually updated), Plugin Deleted, Theme Switched and WordPress Core Updated, each with the plugin, theme or version details and the user who did it.
- FlowMattic Tools — Generate Magic Login Link has a Link Valid For setting, from 1 minute to 30 days (1 hour when empty), and reports when the link expires.
- FlowMattic Tools — A Stop and Error step ends the run as Failed with your own message, inside an Iterator and with Ignore errors ticked too, which Task History, the failure email and the Workflow Failed trigger all report.
- Data Transformer — Generate UUID, Generate Random String, Encrypt and Decrypt (AES-256), Create and Verify JWT (HS256) and Generate TOTP Code actions.
- JSON Parser — New Build JSON Object action (key/value rows, dotted keys for nesting, optional type conversion) and Edit JSON Fields action (rename, keep or remove keys).
- AI Agent — An Additional Parameters box on the model config: JSON merged into the provider request, for parameters the form does not cover.
- AI Agent — A `flowmattic_ai_agent_request_body` filter to adjust the outgoing request on any provider.
- AI Agent — An OpenAI-Compatible provider with your own Base URL (LM Studio, Ollama, vLLM, Azure OpenAI and other compatible APIs), an optional API key connection, and models loaded from the server. Its requests wait up to 5 minutes, because a local model on an ordinary processor can take that long to answer (filter `flowmattic_ai_agent_compatible_timeout`). A Base URL WordPress refuses to call (a private network address, or a port other than 80, 443 and 8080 on a host that is not localhost) is named in the error with the filters that allow it.
- AI Agent — Agent Limits on the Chat Model: Max Iterations (1–100) and a Tool Output Limit that cuts long tool results before they go back to the model.
- AI Chatbot — A `flowmattic_chatbot_retry_delay_seconds` filter to wait and retry once when the provider refuses a request, such as a rate limit.
- MCP Server — A wf_get_event_fields tool lists the fields an action takes, so a connected AI client can build workflows with each step filled in; replies name any action step left without values, and "fields" sent in place of actionAppArgs is moved and reported.
- MCP Server — Every FlowMattic tool reply names the site it came from (name and URL), for clients that manage several sites.
- MCP Server — FlowMattic publishes its MCP tools as WordPress abilities (flowmattic/list-workflows, flowmattic/get-table-rows and 19 more), for other plugins, the WordPress MCP Adapter and the wp-abilities REST API. Nothing is published until an administrator turns on the master switch in Settings → WordPress Abilities; after that the same screen turns each one on or off, grouped as read-only, changes data and overwrites or deletes (the MCP Server screen links there): the 12 read-only abilities start on, the 9 that change workflows or tables start off. Running one needs the Manage Workflows permission, changing the switches needs an administrator, and runs are recorded in MCP Tools History once the MCP Server has been set up. While the MCP Server module is off, the settings show a notice instead of switches. Needs WordPress 6.9 or later.
- MCP Server — Settings → WordPress Abilities has a Copy Claude Desktop config button: paste an Application Password and it copies a ready-made claude_desktop_config.json entry for the abilities server, with the sign-in already filled in. The password stays in the browser and is not saved.
- MCP Server — An MCP Tools History Cleanup (Days) setting under Settings → Advanced, default 30. It runs on its own daily schedule, separate from the task history cleanup. (Before, runs were kept for a fixed 30 days, cleaned weekly so some stayed up to 37 days, and the cutoff ignored the site timezone.)
- FlowMattic Tables — Views: save the grid's filters, sorting and visible columns as a named view, set a default, and choose which views visitors can switch between on a shared table.
- FlowMattic Tables — Card layouts show each row of a shared table as a card, with the fields and their order chosen per layout; Button columns can sit on a card for users allowed to run them.
- FlowMattic Tables — A Shortcode column type runs a shortcode for each row of the published table, with {{field_name}} filled from that row.
- FlowMattic Tables — HTML Templates publish a table with your own header, row, footer and empty-state HTML through [flowmattic_table_view id="N"], with date, currency, percent, yes/no and tag formats and CSS scoped to the template.
- FlowMattic Tables — An HTML Template can be shared at a secret link that opens without a login, and the link can be revoked at any time.
- Forms — A Rich Text field: respondents format their answer with headings, quotes, bold, italic, underline, inline code, bulleted and numbered lists, links and alignment, with undo/redo and clear formatting, on desktop and phones. Answers are cleaned to the editor's own tags on submit; Required and Min/Max characters count the visible text; the Responses view and the admin notification email show them formatted, while the respondent's confirmation email, CSV export and answer piping use plain text. Workflows receive the HTML plus a plain-text copy as <field key>_text, and Save & Resume keeps the formatting.
- Bookings — Custom questions on the booking form: add text, paragraph, dropdown, single-choice or multiple-choice questions, each required or optional, to qualify leads (budget, service, company size, topic). Answers show on the booking, in the New booking alert email ({{custom_answers}}, {{answers_block}} and {{answers_list}} merge tags) and in the workflow trigger data (question_1/answer_1 and so on, answer_<question id>, plus custom_answers). Multiple-choice answers also come as a JSON list in answer_1_list and answer_<question id>_list, so an option that contains a comma stays one item.
- Bookings — Sites updating from 7.2 get the answers in their New booking alert emails: seeded alert templates nobody edited are updated to the new design, and edited ones are left exactly as they are.
- Bookings — Let invitees choose the meeting location: offer several of Phone call, Zoom, Google Meet and In person on one calendar, and the invitee picks one while booking. Each option keeps its own address, number or call direction; the booking, emails and trigger data use the picked one.
- Bookings — Every new booking keeps the location it was made with, so changing a calendar's address or number later no longer changes bookings already made.
- Bookings — Rescheduling a Google Meet booking moves its Google Calendar event to the new time; the Meet link stays the same. If Google refuses, the booking still moves and its activity says so.
- Bookings — When the invitee chooses the location, only the phone number or address that location asks for is saved; the Add to Google Calendar link carries the real address, join link or number to call; the reschedule screen shows the booking's own location.
- Bookings — The host's new-booking alert shows phone meetings from the host's side ("Alex will call +1 555 0100" or "Call +91 98765 43210") and no longer shows empty brackets or an empty Company row; the Add Booking action can pick the location on calendars that let the invitee choose, plus the invitee's address for in-person meetings.
- Scheduler — Every FlowMattic timing (schedules, Delays, API Polling, booking reminders and follow-ups, approval timeouts, connection token refreshes and clean-ups) runs from FlowMattic's own job table instead of WordPress's single cron list, which two requests writing at once could lose or double. Each job is claimed before it runs, so it never runs twice, and a one-time job is deleted once it has run. A Delay already waiting when you update resumes at its original time; deactivating FlowMattic hands every timing back to WordPress cron.
- Scheduler — On a site connected to FlowMattic Cloud, Cloud wakes the site the moment the next timing is due, whether or not anyone visits: on the minute on the Free plan, to the second on paid plans, with no limit on schedules. On by default once connected; switch it off on the FlowMattic Cloud screen or under Settings. Sites without Cloud run their timings through WordPress cron every minute.
- Scheduler — If Cloud stops waking the site for 10 minutes (disconnected, unreachable, or a registration error), the admin sees a notice and gets an email, timings keep running through WordPress cron, and a second email follows once Cloud reaches the site again.
- Scheduler — Weekly and monthly schedules fire on the chosen day only; Every X Hours works for any number of hours; times follow the site timezone across daylight-saving changes. (On wp-cron these ran as daily events that skipped most fires, had intervals only for 2, 3, 4, 6, 8 and 12 hours, and drifted by an hour at DST.)
- Scheduler — A scheduled run carries fire_id, scheduled_for, fired_at, timezone and source (cloud or wp_cron) in the trigger data, so Task History shows when it was due and what started it.
- WP-CLI — `wp flowmattic workflows enable`, `disable` and `toggle` book or remove the workflow's schedule and polling, and `delete` removes them, as the admin screens do.
- FlowMattic Cloud — An optional add-on with a Free plan to start (FlowMattic works as before without it): FlowMattic → FlowMattic Cloud connects it in one click, shows your plan and usage for Cloud Webhooks and the Scheduler, and is where you pick a plan, upgrade and manage billing for Tables, Cloud Webhooks and the Scheduler together.
- FlowMattic Cloud — A `flowmattic_cloud_site_url` filter to register a public address other than the site URL, such as a tunnel.
- FlowMattic Cloud — Downtime alerts: when Cloud cannot deliver to the site for 30 minutes it emails you (or the Send alerts to address on the Cloud screen), reminds you once a day for up to four days, and emails again when deliveries go through.
Improved
- Workflow Builder — Every dropdown in the step, AI Agent component and tool settings opens the searchable picker, including dropdowns an app adds or reloads after the panel opens (those opened the browser's plain list before).
- Task History — The date filter is a dropdown of live ranges (Today, Yesterday, Last 7 days, Last 30 days, This month, Last month) plus a custom calendar range, and a saved default view keeps moving with the calendar: "Last 7 days" always opens on the last seven days.
- Task History — The filter dialog's workflow, date and status pickers are FlowMattic dropdowns; the workflow picker searches as you type instead of a separate box that filtered a browser-default list.
- Webhook — A delivery relayed through Cloud is verified by its Cloud signature, and a sender's own signature (Stripe, Slack, Paddle) is checked against the time the webhook was first received, so a retried delivery still passes the sender's replay window.
- Webhook — The Webhook URL switches between the direct and Cloud address as soon as Deliver via changes.
- Webhook — Saving warns when FlowMattic Cloud refuses the webhook, instead of failing silently.
- Webhook — A Cloud retry of a webhook the site already received (the site ran it, but its reply was lost to a slow run or a dropped connection) is answered as a duplicate and does not run the workflow again.
- Webhook Outgoing — A Body Format option sends the parameters as JSON (default), multipart/form-data or x-www-form-urlencoded, with nested values as bracket keys.
- WordPress — The Update Post trigger ignores editor autosaves (a draft open in the editor fired it every minute and ran the whole workflow each time) and gains optional Post Type and Post Status filters, so it can run only for published posts.
- WordPress — The New Post trigger can run when a new post is saved as a draft (once per post; autosaves never fire it), when it is published, or both, and can be limited to chosen post types.
- WordPress — Get Posts by Post Type and Get Posts by Meta take a Post Status (e.g. draft, pending, any); they returned published posts only.
- WordPress — Lookup actions (Get User by ID, Email or Username, Get Post by ID, Get Media by ID, Get Posts, Get Users by Meta) have an If Nothing Is Found option: continue the workflow with found = no instead of failing the run. Test Action returns the same result a live run will.
- WordPress — Duplicate Post keeps backslashes in copied meta (page builder data) and no longer copies FlowMattic's New Post markers, the edit lock or the old slug, so New Post fires when the copy is published.
- Custom Apps — A Use default when empty option on each body field: when the mapped value is empty at run time, the field's Default Value is sent instead. Variables such as {{cur_year}} work in it. Works for parameter bodies and Custom JSON bodies. Off by default, so existing apps behave as before.
- MCP Server — The server settings warn, while Authentication is off, that anyone with the server URL can use every tool it shares.
- FlowMattic Tables — The Tables screen keeps your records, writes, reads and tables stats; the plan picker, Upgrade and Manage billing moved to the FlowMattic Cloud screen, which the Stripe checkout return now lands on.
- WP Tables — The data screen's search box has its own full-width row above the table, clear of the header actions, so the header no longer squeezes on narrow screens.
- FlowMattic Cloud — Reconnecting updates the site address on Cloud, so a moved site keeps receiving webhooks.
- FlowMattic Cloud — Hook events show as a full-width table, with Load older events to page through any number of them.
- FlowMattic Cloud — Delivered webhook events are counted, not stored; failed and held events stay until replayed or expired.
- FlowMattic Cloud — When a site comes back after an outage, the webhooks that waited are delivered straight away instead of at their next retry, which could be up to a day later.
- FlowMattic Cloud — A failed event can be replayed for the plan's full replay window after its retries end; the window used to start at the first failure, so the retries alone used up Free and Starter's.
Fixed
- Iterator Storage — Test Action now starts from an empty store; each test used to append to the previous test's data, so the output repeated, and switching between Store as String and Store as Array could fail.
- Task History — On high-DPI (Retina) screens, the icon buttons on a run's steps, such as Run from this step, could ignore a click when their tooltip opened over the button.
- AI Workflow Generator — Router and Filter conditions in generated workflows, including those built over MCP with wf_create_workflow and wf_update_workflow, now reference earlier steps by their tags (e.g. {webhook1.subject}). They were written as plain step1.subject text, which is compared as fixed text, so a generated route always ran or never ran.
- Workflow Builder — Opening another dropdown while the picker is open now lists that dropdown's options and saves the choice to it, not to the dropdown opened first.
- Workflow Builder — The dropdown picker no longer flashes "No options found" and an empty title as it opens.
- Workflow Builder — The step, AI Agent component and tool panels fit short laptop screens; their Continue and Save buttons no longer end up below the window.
- Workflow Builder — A disabled dropdown in step settings no longer tiles the caret icon across the field while its options load.
- Workflow Builder — Skip Execution on a step's Conditions tab is kept after a single tick and Save, and the step shows the skipped style straight away; it used to need the box ticked three times.
- Workflows — The Folder filter scrolls when there are more folders than fit, so every folder can be picked.
- Workflows — A cloned workflow no longer keeps the original's custom webhook slug or extra trigger URLs, so the copy saves without an "already in use" error. Works for both builders.
- Webhook — The custom slug preview shows the full URL in the legacy workflow builder.
- Webhook — An additional webhook trigger no longer shows the primary trigger's Cloud delivery settings.
- Webhook Outgoing — Any 2xx answer (201, 202, 204) counts as delivered instead of failing the step. A failed delivery is marked as failed on sites in every language, and says why: the HTTP code with the endpoint's reply, or the connection error.
- Router — In workflows built in the visual builder, a route whose conditions don't match, or that ends with a Delay, no longer stops the routes after it from being checked. A Delay long enough to resume later now picks up at the next route instead of ending the run.
- Router — In the legacy builder, a Delay inside a route never resumed: the run stopped with an error when the delay ended. It now carries on with the rest of the route, Delay Until reads the date in the site time zone, and the delay can be cancelled from Task History.
- Delay — Cancel Delay in Task History works for a Delay inside a route; it only found delays outside a Router before.
- Delay — Delay Until fails the step and stops the run when its date or time zone can't be read, or the mapped date is empty, instead of running the next steps at once or waiting decades. A date with its own offset (2026-12-01T10:00:00+02:00) is read correctly with the site time zone too.
- Multi-trigger — A WordPress trigger such as Post Updated now runs the workflow when it is an additional trigger, not only when it is the first.
- FlowMattic Tools — Generate Magic Login Link says why no link was created (unknown user, or a user who can manage the site) instead of reporting success with an empty link, and accepts an email with surrounding spaces.
- Text Formatter — Title Case lowers the rest of each word, so "priya SHARMA" becomes "Priya Sharma".
- Text Formatter — An unknown or missing method fails the step and lists the valid methods, instead of succeeding with an empty result.
- Custom Apps — A body or header field that has no saved settings yet (added by hand or by cURL/JSON import) opens its Field Settings with the field key as the label, instead of an empty Field Label.
- Custom Apps — An action whose body field has no saved settings yet (added by hand or by cURL/JSON import) no longer leaves the action's fields blank in the workflow builder, and no longer logs PHP warnings when it runs.
- Custom Apps — An action run without a connect is now logged as failed; on non-English sites it was logged as a success.
- AI Agent — Temperature, Top P, Top K and the penalties changed from their defaults now reach the providers that accept them (Top K: Claude and Gemini); only OpenAI received them before. Untouched steps send what they always did, and Claude gets Temperature or Top P from these fields, never both.
- AI Chatbot — An Anthropic or Google refusal (rate limit, invalid key) is reported in the widget instead of ending the turn with an empty reply.
- MCP Server — The REST authentication allowance for the MCP OAuth routes applies only to requests dispatched to those routes, so it can no longer be triggered by another REST request whose query string contains that path.
- MCP Server — tables_get_rows and the other row tools report a table that does not exist instead of answering with no rows.
- MCP Server — MCP Tools History names FlowMattic's own tools (wf_…, tables_…) instead of showing "Unknown Tool", and a run's details show the tool that ran.
- MCP Server — Clients on the older SSE connection can run FlowMattic's own tools and tools added by plugins, and see their real input fields.
- MCP Server — Deleting tools and switching them on or off need an administrator, as creating and editing them already did; MCP Tools History loads for every user who can open it.
- MCP Server — wf_list_workflows and wf_get_workflow report the same step count, router branch steps included; router and placeholder nodes are no longer counted as steps. wf_get_workflow returns the workflow's saved connections in "edges" instead of an empty list.
- MCP Server — wf_create_workflow and wf_update_workflow name any step that is missing a required field while carrying field names the action does not list, so the client can correct them. wf_get_event_fields marks the fields an action's form requires.
- MCP Server — wf_get_event_fields lists the allowed values of Text Formatter's Method and Segment fields, and wf_create_workflow and wf_update_workflow name any step whose value is not one of them, so a wrong method is caught when the workflow is built instead of when it runs.
- MCP Server — A workflow read with wf_get_workflow can be saved back with wf_update_workflow when it has a Schedule trigger or a Router: the schedule keeps its interval and the router keeps its event, instead of the save failing.
- MCP Server — wf_get_workflow no longer shows saved passwords, tokens and API keys in step fields. They appear as "[stored secret: unchanged]" and are kept when the draft is saved back with wf_update_workflow; wf_create_workflow rejects that placeholder. Fields named in camelCase, such as accessToken or refreshToken, are masked too.
- MCP Server — MCP Tools History now marks runs that returned a failure as Error, not Success, in the list, the details and the CSV and JSON exports; the Date range filter works; Client Type names the real AI client from its user agent (Claude, Claude Code, ChatGPT, Cursor, a Node.js or Python client and others), also on WordPress Ability runs, the same on the page, the dashboard widget and the exports, and shows Unknown when the client sent no user agent, including when a cache plugin such as WP Fastest Cache fills in "Empty User Agent"; export files get an unguessable name.
- MCP Server — MCP Tools History no longer stores passwords, tokens, API keys or Authorization headers sent to or returned by a tool; they are saved as ******** in the list, the details and the exports. Runs recorded before this update keep what they stored.
- MCP Server — Claude Desktop and other clients connected to the FlowMattic abilities server through mcp-remote no longer lose the connection: requests without the MCP-Protocol-Version header are accepted, an expired session is replaced automatically, and an idle session now lasts 7 days instead of one.
- MCP Server — The FlowMattic abilities server now connects faster through mcp-remote: the bridge's startup check gets a direct answer, which skips two extra requests before the connection opens and stops Claude Desktop from giving up with "didn't respond within a minute" on busy sites.
- MCP Server — OAuth discovery URLs for the FlowMattic abilities server (/.well-known/oauth-protected-resource/wp-json/flowmattic/v1/abilities and the matching authorization-server and openid-configuration URLs) answer with a short JSON "not found" saying the server uses Application Passwords, instead of the theme's full 404 page.
- MCP Server — The validate-workflow ability (flowmattic/validate-workflow) is run with POST through the wp-abilities REST API instead of GET, so the workflow draft it checks, field values included, is no longer put in the URL, where it ended up in server access logs and failed on large workflows.
- MCP Server — MCP Tools History opened from the FlowMattic menu shows the site's history instead of "Server ID is required to view execution history".
- FlowMattic Tables — The dashboard shows your tables against the 500-table limit instead of "Unlimited".
- WP Tables — Import CSV uses a Dropdown column's own values as its options, so its rows are no longer skipped.
- WP Tables — Import CSV no longer suggests Date for a column of codes such as FR-3001; it suggests Text.
- WP Tables — Date columns show the month with two digits (25/09/2025), as the chosen format says.
- WP Tables — A date written by a workflow (Insert Record, Update Record, Update Cell) is saved as YYYY-MM-DD, the way the table editor saves it, so 30/10/2026 or 30-10-2026 shows and edits as 30 October. Day and month order follows the column's format, and trigger data no longer turns 10/30/2026 into a 2028 date or fills an empty date cell with today.
- WP Tables — CSV import saves dates the same way, and the table editor now reads dates saved earlier as 30/10/2026 using the column's format, so they show and edit as the right day. A date column with no format no longer sends an empty date to the workflow, and a new Date & Time column starts with a date and time format.
- WP Tables — Update Cell accepts "0" as a value. The tables_update_cell MCP tool and its ability can also clear a cell; a workflow step still refuses a blank value, so an unfilled tag cannot wipe the cell.
- FlowMattic Cloud — Cloud webhooks forward to the site's real webhook URL, keeping the custom slug and any filtered domain.
- FlowMattic Cloud — A site ID with stray whitespace no longer creates a second, Free Cloud account.
- Forms — The Responses list escapes quotes in answers, the referrer and the user agent, so a submitted value is always shown as text.
- Workflow Builder — Pressing Escape in an open dropdown or Insert data popup closes just that popup; it used to close the step panel too, losing fields not yet saved with Continue.
- Webhook — A challenge value sent to a webhook URL is answered as plain text, like hub_challenge, so it can't run as a web page in the visitor's browser.
- WP-CLI — wp flowmattic workflows delete frees the workflow's custom webhook slug and removes its Cloud webhook address, as deleting from the admin does.
- WordPress — Get Posts by Post Type no longer stops with a fatal error on posts whose ACF fields hold nested values or objects (repeaters, groups, image fields).
- Task History — A custom date range picked end date first is read the right way round instead of matching no runs.
- MCP Server — Saving a workflow back with wf_update_workflow keeps the trigger's own settings (Webhook Security, Tables and WooCommerce options), its captured sample, additional triggers and sticky notes; a protected webhook was left open before.
- FlowMattic Tables — An embed that doesn't allow editing or adding rows refuses those writes from the page too; before, a logged-in user with the table's capability could still send them.
- WP Tables — Insert Record and Delete Record report a failed write as an error and no longer fire the row added or row deleted trigger for it.
- WP Tables — Deleting a column that the database refuses to drop is reported as an error instead of removing it from the table settings only.
- WP Tables — A new column name with an underscore (tea_) is no longer refused as a duplicate of a similar one (team).
- Forms — Answers placed in the thank-you message and the respondent's confirmation email with {{field}} tags are shown as text, so a link typed into an answer is never sent live from your site.
- Bookings — Add Booking and Update Booking cut company, notes, address and phone to the public booking form's limits.
- Deactivation — Delete FlowMattic Data removes every FlowMattic table (bookings, forms, templates and approvals included), its settings and its scheduled events; before, the tables and settings came back as the plugin deactivated.
- FlowMattic Tools — A magic login link opened several times at the same moment signs in only once.
- Custom Apps — An action whose connect was deleted fails the step with a message instead of sending the request without authentication and logging a success.
- Custom Apps — A Boolean field in a Custom JSON body sends true when set to Yes; it was always sent as false.
- Connects and AI Agent — The Groq and Voyage AI icons show again; they pointed to images that no longer exist, so the integration picker showed a broken image.
- Workflow Builder — A step saved before any of its fields were filled reopens with empty fields: FlowMattic Tables' Sort by no longer shows code, and fields named filter, keys or length in other integrations no longer read a built-in value.
- Bookings — The calendar's reminder choices are followed: "1 hour before" sends a same-day reminder an hour before the meeting, and turning off "24 hours before" stops the day-before reminder.
- API Polling — An API key connect set to send its key in the query string adds the key to the polling URL.
- Unit Converter — Temperature accepts celsius, fahrenheit and kelvin as well as c, f and k, and a value of 0 converts in every unit type.
- Link Shortener — When the shortener service can't shorten a link, the step's error names the HTTP status the service answered with.
- MCP Server and Generate with AI — A workflow built with more than one trigger opens in the builder with its extra triggers stacked beside the first and numbered 1.2, 1.3, and the steps numbered from 2.
Security Tests
- Forms — Rich Text field: reviewed and tested with more than 50 hostile answers (script and event-handler injection, malformed and mutation-based HTML, disguised javascript: and data: links, CSS overlays, oversized posts), checking every place an answer appears: the thank-you page, both notification emails, the Responses list and detail views, CSV export, workflow data and Save & Resume drafts. Found and fixed before release: a quote in any text answer could break out of a tooltip in the Responses list (all text fields, not only Rich Text); the respondent's confirmation email now shows rich answers as plain text, so it cannot be used to send someone links; Required and Min/Max characters count the text that is stored; rich answers are capped at 64 KB.
- Connects — Credential request links: reviewed and tested the public page, its actions and the OAuth sign-in, including requests sent at the same moment and forged sign-in callbacks. Confirmed: single-use 192-bit links checked in constant time, expiry and cancel enforced on the server, private-page headers (no caching, no indexing, no referrer, no framing), per-IP rate limits, only the missing fields can be written, and no credential appears in logs, Task History or the Connects screen. Fixed before release: OAuth tokens are saved into a waiting connect only when the sign-in callback carries that request's own secret, and finishing, cancelling or closing a link is atomic, so two submits at the same moment can't both be accepted. For Connect any API OAuth 2.0 connects, when the person asked signs in through your own OAuth app its client secret stays on your site: the sign-in hands back a code that your site exchanges for tokens itself, so the secret never passes through their browser.
- FlowMattic Tables — Views, Card layouts, Shortcode columns and HTML Templates: tested as a logged-out visitor, a Contributor and an administrator. Fixed: [flowmattic_table] and [flowmattic_table_view] render only in posts whose author can manage that kind of table (FlowMattic Tables: administrators; WP Tables: users who can manage workflows), so other authors can no longer embed or edit any table (this also affected earlier versions); theme templates and widgets are unaffected, and the flowmattic_table_shortcode_author_cap and flowmattic_table_shortcode_author_trusted filters change the rule. Visitors can filter, search and sort only on the columns they are shown (also earlier versions). A pinned or visitor-chosen view's filter and hidden columns are enforced on the server. A Shortcode column runs only the column's own shortcode, with row values filled in as text; the new "Each row can set its own shortcode" setting (off by default) allows per-row shortcodes for trusted data. HTML Templates treat every href and src attribute (including xlink:href) as a link, keep row values out of srcdoc and allow only plain values in style. Share pages send Referrer-Policy: no-referrer. Confirmed: filters and sorting are safe from SQL injection, only administrators with unfiltered_html can edit templates, and share links use revocable 160-bit tokens.
- FlowMattic Cloud — Cloud Webhooks, the Cloud Scheduler and the Cloud screen: Confirmed: requests from Cloud are HMAC-signed, checked in constant time within a 5-minute window and never accepted twice; the site's Cloud secrets are stored encrypted and never sent to the browser; every Cloud screen action needs an administrator. Fixed before release: a Cloud wake runs only jobs this site booked, and a request from Cloud naming a workflow is refused; a schedule-triggered workflow can't be started through its webhook capture URL (on either URL style), so Cloud schedule data can't be faked; only administrators can connect the site to Cloud or create Cloud webhook addresses (a Workflow Manager saving a workflow no longer does either); the Cloud screen follows only https links from Cloud.
- Webhook and Task History — Set Webhook Response, Skip Duplicate Events, Request Payload, sample payloads and loading a run's trigger data: Fixed before release: Set Webhook Response sends status codes 200–599 only (including codes WordPress has no name for, which were sent as 200), takes header names from the saved step only, and drops headers that set cookies, change the status, redirect without a 3xx status, allow credentialed cross-origin requests or make the web server send a file (such as X-Accel-Redirect and X-Sendfile); dropped headers are listed in Task History. Request Payload and the run details given to AI clients mask many more secret shapes: key names such as secretKey, access_key, license_key, cookie and session ids, passwords and tokens inside URLs and query strings, header lines, name/value header pairs and JSON text inside fields, while values like max_tokens and token_url stay readable. Run details, trigger data and loading a run into the builder require access to the workflow, and runs are looked up by their exact id. Skip Duplicate Events stores only a short preview of each key and ignores keys over 1,000 characters. Webhook verification replies (hub_challenge) are sent as plain text (also earlier versions). The workflow failure email shows step output as text.
- AI Agent, FlowMattic Tools, Data Transformer and Iterator: Fixed before release: the OpenAI-Compatible provider doesn't follow redirects, so the private-network check covers every address and the API key stays with the configured server, and an unexpected reply is quoted to at most 200 characters; Additional Parameters fill dynamic tags as JSON text and ignore keys that would replace the model, messages, tools or streaming; a Magic Login link stops working if its user has since been made an administrator (also earlier versions); Verify JWT rejects a non-numeric exp or nbf; Encrypt derives its key with PBKDF2 and a random salt; Wait Between Items pauses at most 5 minutes in total per request. Confirmed: the Base URL check refuses disguised private addresses, JWT verification pins HS256 and compares signatures in constant time, Encrypt uses AES-256-GCM with a fresh IV, TOTP matches RFC 6238 and random strings use a secure generator.
- MCP Server — WordPress Abilities, wf_get_event_fields and MCP Tools History: Confirmed: running an ability needs Manage Workflows, the master switch and each ability's switch are enforced on the server, the settings need an administrator, and wf_get_event_fields returns no connect data. Fixed before release: FlowMattic abilities are hidden from users without Manage Workflows; MCP session recovery runs only for those users, and its sessions last 7 days instead of 30; MCP Tools History Cleanup (Days) is kept between 1 and 3,650.
- Bookings and WordPress triggers: Fixed before release: an address the invitee types can no longer become the Join meeting link in booking emails (only Zoom and Google Meet links can), and every value an invitee types is escaped in booking emails (both also earlier versions); updating the New booking alert design keeps a host's edited subject, pre-header and dynamic data; email template upgrades run only on an administrator's page load; address, phone, company and notes are length-limited. Confirmed: answers must match the question's options, the location must be one the calendar offers, reschedule links use 128-bit signed tokens, Add to Google Calendar links are encoded, and the new WordPress triggers fire only after WordPress's own permission checks.