Releases: vincentrathbone-web/formidable-flat-api
Release list
Formidable Flat API v3.3.1
A follow-up correction to v3.3.0's entry-status fix, found through direct verification against a live site.
Fixed: status codes 2 and 3 were swapped
v3.3.0 mapped is_draft = 2 to "Abandoned" — inherited from older code that was never actually verified against Formidable's real behavior. Checked directly against the official Formidable Abandonment add-on's source on a live production install, and confirmed against real entry data: the correct mapping is 2 = In Progress, 3 = Abandoned. Every genuinely in-progress entry was being mislabeled "Abandoned" until this release.
Full, now-correct mapping: 0 = Submitted, 1 = Draft, 2 = In Progress, 3 = Abandoned.
Install
Download formidable-flat-api-v3.3.1.zip and install via Plugins → Add New → Upload Plugin. Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.
Formidable Flat API v3.3.0
Join type for the source-tables merge
Step 1's multi-table merge (2+ Formidable tables joined on a shared key) always behaved as a full outer merge — every row from every table, matched or not — with no way to ask for anything else. There's now a "Keeping" dropdown below the key-field pickers, shown once 2+ tables are added:
- full outer (default, unchanged from before this existed) — every row from every table.
- inner — a key must exist in every table.
- left — every row from the first table.
- right — every row from the last table.
This is separate from the join-type control already on step 1b's query-to-query joins (added in v3.2.1) — that one still works the same way it did.
Fixed: entry status was blank for every normal entry
The Entry Status field (and the legacy Draft Status column) showed a blank value for every normal, fully-submitted entry. The cause: is_draft = 0 — Formidable's own "Submitted" status, and the status the overwhelming majority of real entries have — mapped to an empty string instead of a label, in four separate places in the code. Because drafts are excluded from a query by default, this meant every row that ever reached the status column had status 0, making the field look completely non-functional rather than wrong for one value.
Now shows Submitted / Draft / Abandoned correctly. Any status code the plugin doesn't recognize is shown as its raw number instead of silently going blank, so a future status won't reintroduce this same problem.
Install
Download formidable-flat-api-v3.3.0.zip and install via Plugins → Add New → Upload Plugin. Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.
Formidable Flat API v3.2.2
Three fixes to the join-type and joins-only work shipped in 3.2.1, all found and fixed through real hands-on use rather than code review alone.
Grouped match-field dropdowns
The "match my" and "nearest before" date-field pickers listed every field from every source table and joined query as one flat, undifferentiated list — if two sources shared a field name (e.g. "Pump" from both a Samples form and a Calibrations form), there was no way to tell which one you were actually selecting. Both dropdowns now group their options by source, labeled by form/table name or by the joined query's own label.
Combining two queries now takes one click, not two
Building a query from step 1b alone (no source table — combining two existing saved queries directly) required clicking "+ Add join" twice: once for a bare "pick a query" row with no way to actually join it to anything, and again to configure the real match. The first click alone looked like it required a source table to do anything useful. A single click now sets up the starting query and its match row together, ready to configure — removing one of the pair removes both, so there's no orphaned half-configured row left behind.
Remove button, anchored properly
Each join row's "×" remove button could end up wherever the row's controls happened to wrap onto multiple lines (most noticeably on a "nearest before" join, which has several extra fields) instead of staying in a predictable spot. It's now anchored to the top-right corner of the row regardless of how the row's content wraps.
Install
Download formidable-flat-api-v3.2.2.zip and install via Plugins → Add New → Upload Plugin. Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.
Formidable Flat API v3.2.1
Join type control: left / inner / right / full outer
Query-to-query joins (the "1b Join other saved queries" step) always kept every unmatched row from your own query and had no way to ask for anything else. There's now a "keeping" dropdown next to each join's match-mode picker:
- all of mine (left) — default, same behavior as before. Every row from your query is kept, matched or not.
- only matched rows (inner) — drops a row that found nothing on the other side.
- all of theirs (right) — the mirror image of left: drops your unmatched rows, and adds rows that exist only in the joined query instead.
- everything (full outer) — keeps both kinds of unmatched row.
The row-count banner under each join now shows live matched / no-match counts for every join (previously this only worked for "nearest before" joins), plus a "+N theirs-only" count when a right/full join pulls in joined-only rows — so a key mismatch between two queries is visible immediately instead of discovered later in an export.
Joins-only queries — no source table required
A saved query can now be built entirely from step 1b, with no Formidable table in step 1 at all. Useful when what you actually need is two existing saved queries combined, and neither one maps cleanly to a single form.
The first join row now reads "start from this saved query" instead of asking for a match key — it supplies the starting rows. Any join added after that works exactly as normal, matching against the accumulated result, and its "match my" dropdown correctly offers the first query's own output fields (previously this dropdown had nothing to offer at all with no source table selected).
Fixed
Saving a joins-only query silently dropped its base-supplying first join — it would preview correctly, then come back broken after a reload, because the save-time sanitizer required a match key on every join unconditionally. Fixed in both the normal save path and the legacy no-JS fallback.
Install
Download formidable-flat-api-v3.2.1.zip and install via Plugins → Add New → Upload Plugin. Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.
Formidable Flat API v3.2.0
Query Builder redesign: split view
The Query Builder is now a resizable split view, Power BI / Power Query Editor-style: a top pane for building the query, a drag handle to resize, and a dominant bottom pane with a live results grid — defaulting to a 2:1 top/bottom split.
- Live preview runs automatically as you edit — no more clicking "Preview" and waiting. Every change to a table, filter, join, or calculated column reruns the query after a short debounce (~600ms). A "↻ Refresh now" button is still there for an immediate, un-debounced rerun.
- Per-step row-count flow: a breadcrumb above the grid shows how many rows survive each stage — source → after joins → after filters → final output — so a faulty join or an overly strict filter is visible immediately instead of only showing up later in Excel.
- Save Query is now available in two places: the header (as before) and next to "Refresh now" in the preview toolbar, so you don't have to scroll back up to save.
- Live preview now shows the first 100 rows by default (was 10).
Typography cleanup
Admin UI font sizes standardized to exactly two: 13px for body/label content, 11px for captions, hints, and mono/code text — across the Query Builder and the shared design tokens used by every admin tab.
Install
Download formidable-flat-api-v3.2.0.zip and install via Plugins → Add New → Upload Plugin. Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.
Formidable Flat API v3.1.2
Formidable Forms compatibility note
If your Query Builder / Saved Queries admin page ever shows a blank screen on a site running a different Formidable Forms Core version than usual, this release fixes it. The admin script's enqueue check matched an exact hardcoded WordPress hook string, but the hook WordPress generates for this plugin's submenu depends on how Formidable's own top-level menu registers — different Formidable Forms Core versions have been observed producing different prefixes (formidable_page_... vs formidable-1_page_...). When they didn't match, the admin UI silently never mounted — no PHP error, no fatal, just an empty page. The check is now suffix-based instead of exact-match, so it's correct regardless of what Formidable does on its side. Verified against Formidable Forms 6.28 and 6.34.
Regression fix
v3.1.1 was accidentally built from a stale base and silently shipped without several features already validated in production:
- The five
date_*filter operators (date_equals/date_before/date_after/date_on_or_before/date_on_or_after) — reported as "date filtering stopped working." - The
nearest_before"as-of" join match mode, used to match records with no shared ID by finding the latest match on or before a given date (e.g. matching a calibration to a sample). - The join key-picker's live sample-value preview and "Matches found" indicator.
- A composite-key cast bug that was silently zeroing out multi-field merges, and a self-referential parent-form guard.
KeyFieldPicker.sveltehad also reverted to an implementation with a known click-race condition; restored on Slim Select.
All of the above is back, verified end-to-end with real data (both the date filters and the nearest_before join produced mathematically correct results in testing).
Kept from 3.1.1: the system-field-picker pruning and the Select all/Deselect all buttons.
Install
Download formidable-flat-api-v3.1.2.zip and install via Plugins → Add New → Upload Plugin. Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.
v3.1.1
Changes in this release
- Fixed: selecting only parent-form fields no longer fans out one row per child/repeater entry — the engine skips repeater expansion when no child-form fields are in the selection.
- Added: Select all / Deselect all button per field group in the Query Builder field picker.
- Added: Live slug preview shown next to the query name as you type when creating a new query.
- Fixed: saving a new query whose slug collides with an existing one now auto-suffixes (
-2,-3, …) instead of creating a duplicate. - Removed: six redundant system fields from the field picker — Created by User ID, Modified by User ID, Entry Key, Entry Name, Entry Description, Post ID. Existing saved queries referencing them continue to work.
Install
Download formidable-flat-api-v3.1.1.zip and install via Plugins → Add New → Upload Plugin.
Requires WordPress 5.8+, PHP 7.4+, Formidable Forms 5.0+.