🎉 Celebrate with 10% OFF on All Products! Use Code: GFEX10 Or Buy Any 2+ Items for 30% OFF with Code: GFEX30!

Gravity Forms Open-Source Tables Premium Add-on Setup Guide

Updated 9 min read Gravity Forms Integrations A–Z
On this page
  1. Video walkthrough
  2. Gravity Forms Open-Source Tables Premium Add-on
  3. What you need before you start
  4. Install and activate
  5. Connect your database server
  6. Add a feed to a form
  7. How a submission becomes a row
  8. Safe retries and never a duplicate
  9. Merge tags and the entry box
  10. Notification events
  11. Bulk actions and the daily cap
  12. Developer hook
  13. Privacy and where your data goes
  14. Troubleshooting

Video walkthrough

Gravity Forms Open-Source Tables Add-On Setup Guide: Baserow, NocoDB & SeaTable (WordPress Side)
Video setup guide: Gravity Forms Open-Source Tables Watch on YouTube

Gravity Forms Open-Source Tables Premium Add-on

The Gravity Forms Open-Source Tables Premium Add-on turns every form submission into a row in your own open-source database. The moment an entry is saved, the add-on sends the data you choose, as a single row, to a table on your own self-hosted Baserow, NocoDB or SeaTable server. You use your own base URL and your own API token, so the data lands on infrastructure you control and nothing passes through GravityExtra. This guide covers installation, connecting your server, building a feed, the merge tags and notification events, and how the background job keeps your tables clean even when the network is not.

This add-on is for teams that run their database themselves. If you keep customer records, bookings, applications or support tickets in a self-hosted open-source table, you can now feed that table straight from your WordPress forms without copy-and-paste, a spreadsheet export or a third-party automation service in the middle.

What you need before you start

  • Gravity Forms 2.5 or newer and a form that collects the data you want to store.
  • A running, reachable Baserow, NocoDB or SeaTable server with a table to write to. The server must answer over https, because your API token is sent with every request.
  • An API token for that server that is allowed to create rows in the table. In Baserow this is a database token; in NocoDB it is an API token used as the xc-token header; in SeaTable it is a base API token.
  • Your GravityExtra licence key for this add-on, for updates and support.

Install and activate

Upload the plugin zip under Plugins → Add New → Upload Plugin, activate it, and open Forms → Settings → Open-Source Tables. Paste your licence key into the licence box at the top of the page and activate it. The licence unlocks the feed, the background job and the connection check; without an active licence the add-on stays dormant and writes a note on any entry it would otherwise have processed.

Connect your database server

On the same settings page, below the licence box, is the Your database server section. Three choices connect you to your own server.

  • Provider — choose Baserow, NocoDB or SeaTable. This is the global default; a feed can override it later, so a single site can write to more than one kind of database.
  • Base URL — the https address of your own server, for example https://baserow.your-company.com. The add-on validates that it is a well-formed https host and stores it. Every request this add-on makes is locked to exactly this address, so your token can never be sent anywhere else.
  • API token — the token that may write to your table. It is encrypted the moment you save, using your site’s own secret salts, and is never shown again. To replace it, type a new one; to clear it, tick Remove the stored API token when saving.

Two optional fields finish the setup. Default table is the table id (Baserow and NocoDB) or table name (SeaTable) used by feeds that do not set their own. Default SeaTable base UUID is only for SeaTable, where a base is addressed by its UUID. Finally, Daily cap of rows stops the add-on from creating more than a set number of rows in a UTC day across all feeds, a simple guard against a form that is being hammered. Leave it empty for no cap.

https://gravityextra.com/wp-content/uploads/2026/10/gfost-settings-scaled.png
The settings screen: the licence box, the provider, your base URL, the encrypted API token, the default table, the SeaTable base UUID, the daily cap and the Check the connection button.

When the base URL and token are saved, press Check the connection. The add-on reaches your server once with an empty row so the server validates your base URL, token and default table; nothing is stored. A green message confirms the connection, and a clear message tells you if the token was refused or the table could not be found. The check sends nothing that looks like a real row.

Add a feed to a form

Open a form and go to Settings → Open-Source Tables → Add New. A feed decides, for this form, which table to write to and how a submission becomes a row.

  • Feed name — a label for your own reference.
  • Provider — leave it on Use the global default, or pick a different provider for this feed only.
  • Table — the table id for Baserow and NocoDB, or the table name for SeaTable. Leave it empty to use the global default table.
  • SeaTable base UUID — only needed when this feed writes to SeaTable and uses a different base from the default.
  • Columns — the heart of the feed. Each row of this map pairs a column in your table with a value from the form. On the left, type the column name exactly as it appears in your table. On the right, choose a form field, or choose a custom value and type text with merge tags. Map as many columns as your table needs.
  • Condition — turn this on to create the row only for entries that match a rule, for example only when a plan field equals Premium.
https://gravityextra.com/wp-content/uploads/2026/10/gfost-editor.png
A feed: the provider, the table, the SeaTable base UUID, the column-to-field map and the condition.

Because the column names you type are matched against your table, they must be spelled exactly as they are in Baserow, NocoDB or SeaTable. A value that does not fit its column, or a column that does not exist, is reported by your server and recorded on the entry, so a mismatch is easy to find and fix. Save the feed and submit a test entry; within a moment a new row appears in your table.

How a submission becomes a row

Open-Source Tables is a Gravity Forms feed add-on, so it runs after the entry is saved. For each feed whose condition matches, the add-on queues a background job and returns at once, which means the visitor only ever waits for the normal form confirmation — never for your database server. The background job builds the row from your column map, replaces the merge tags, and sends one request to your server. The new row id and the status are written back onto the entry.

The request is locked to the base URL you saved. The add-on checks the host of every call against your own server and refuses to send anywhere else, so even a misconfiguration cannot leak your token to another host.

Safe retries and never a duplicate

Networks fail, and a database server is sometimes busy. The add-on handles this carefully so that a hiccup never turns one entry into two rows.

  • If the request never left your site — the server name could not be resolved, or the connection was refused — nothing could have been created, so the job tries again later, after 1, 5, 30, 120 and 720 minutes.
  • If your server answered that it is rate limiting (HTTP 429), the job waits and tries again.
  • If the request may have arrived but the answer never did — a timeout, a reset connection, a 5xx reply or a 2xx reply whose row id could not be read — the add-on marks the entry unsure and does not repeat the request, because a repeat could create a second row. The entry note tells you to check the table and, if the row is missing, to create it again from the entry list.
  • If the server rejected the request for good — a bad token (401 or 403), a missing table (404) or an invalid row (400 or 422) — the job stops and records the reason.

This is what idempotency means here: once a row has been created, or a request may have arrived, the add-on will never create a second row on its own. You stay in control of the few genuinely unsure cases through the entry list.

Merge tags and the entry box

After a row is created the entry carries the result. Open the entry to see the Open-Source Tables box with the feed name, the provider, the status and the new row id. Every step is also written as an entry note, including any columns that had to be left out and the reason a row failed.

https://gravityextra.com/wp-content/uploads/2026/10/gfost-entry-scaled.png
The Open-Source Tables box on an entry: the provider, the status and the new row id.

Three merge tags let you reuse the result in confirmations and notifications:

  • {ost_status} — the status of the row for this entry (created, unsure, fail and so on).
  • {ost_row_id} — the id of the row that was created in your table.
  • {ost_provider} — the provider the row was written to (Baserow, NocoDB or SeaTable).

When a form has more than one feed, add the feed id to a tag, for example {ost_row_id_7}, to read a specific feed’s result.

Notification events

The add-on adds two events you can attach a Gravity Forms notification to. Choose them under a notification’s Event drop-down on a form that has a feed:

  • Open-Source Tables: the row was created — fires when a row is written. Combine it with {ost_row_id} to email yourself the id of each new record.
  • Open-Source Tables: the row could not be created — fires when a row fails, so you hear about a problem without watching the entry list.

Bulk actions and the daily cap

From the entry list you can act on many entries at once. Create rows (skip created) creates rows for the selected entries that do not have one yet, which is handy after you add a feed to a form that already has entries. Create row again (adds another row) deliberately creates a new row for each selected entry, for the rare case where you really do want a second copy. The daily cap you set in the settings applies to all of this, so a bulk run stops once the cap is reached and continues the next UTC day.

Developer hook

You can change a row in code before it is created with the gform_ostables_row filter. It receives the array of columns keyed by column name, along with the feed, entry and form, and should return the array — or anything that is not an array to cancel the row for that entry. A common use is to add a fixed column, such as a source tag, to every row:

add_filter( 'gform_ostables_row', function ( $cols, $feed, $entry, $form ) {
    $cols['Source'] = 'website';
    return $cols;
}, 10, 4 );

Two action hooks let you react to the result: gfost_row_created fires with the result state, entry, feed and form after a row is written, and gfost_row_failed fires with the entry, feed, form and reason when a row could not be created.

Privacy and where your data goes

Every row is sent only to the base URL you entered, which is your own self-hosted server. GravityExtra never receives your form data or your token. Your server processes the data under your own terms, and the add-on adds a note to the WordPress privacy policy guide describing exactly this. Because the three providers are open-source and self-hosted, you decide where the data lives, who can read it and how long it is kept.

Troubleshooting

  • “The server did not accept the API token.” Check that the token is current and that it may write to the table. Press Check the connection after saving a new token.
  • “The server could not find the table.” Confirm the table id (or name) in the feed and the base URL. For SeaTable, check the base UUID.
  • A column is rejected. The column name must match your table exactly, and the value must fit the column type. The entry note names the column your server complained about.
  • An entry shows “unsure”. The request may have reached your server. Check the table; if the row is missing, use Create row again from the entry list.

With your provider chosen, your server connected and one feed in place, every matching submission becomes a clean row in a table you own — in the background, with safe retries, and never a duplicate.

Still need help?

Our support team answers tickets every day, usually within a few hours.

0
0
Your Cart
Your cart is emptyReturn to Shop
🔥 FREQUENTLY BOUGHT TOGETHER
Complete Combo & Save 40%!
ITEM IN YOUR CART
Gravity Forms Klaviyo Add-on
$39.00/yr
+
🎁 RECOMMENDED ADD-ON SAVE 40% OFF
Original Price: $39.00/yr
Bundle Special Price: $23.40/yr