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

Gravity Forms + Airtable Integration Premium

Updated 11 min read Gravity Forms Integrations A–Z
On this page
  1. Integration Overview
  2. Key Capabilities
  3. Step 1: Locate the Airtable Feed Menu
  4. Step 2: Generate Airtable Personal Access Token (PAT)
  5. Step 3: Connect Base URL & Map Form Fields
  6. Step 4: Test & Verify Real-Time Synchronization
  7. Populate a form field from an Airtable table (new in 1.1.0)
  8. Before you start
  9. Set the cache time and refresh the data
  10. Populate a field from a table
  11. What happens if Airtable is briefly unavailable
  12. Two-way sync: prefill a form from Airtable and update the record on edit (new in 1.2.0)
  13. Update the same record when an entry is edited
  14. Prefill a form from an Airtable record
  15. Who can see which record (the security model)
  16. How a record is matched and filled
  17. Prefill links in notifications
  18. For developers
  19. Updating from 1.1.0
  20. Changelog: 1.2.0
  21. Troubleshooting & FAQs
  22. Explore More Resources

Integration Overview

The Gravity Forms Airtable Integration Premium Add-on connects your WordPress forms directly to Airtable bases and tables in real time. Submit entries seamlessly without paying recurring monthly subscription fees to third-party automation tools like Zapier or Make.

Plugin: Gravity Forms Airtable Add-On
Latest Version: 1.2.0
Requirements: Gravity Forms 2.5+, PHP 7.4+, Airtable Account

Key Capabilities

  • Real-Time API Dispatch: Submissions are instantly pushed to your designated Airtable base upon form completion.
  • Dual Connector Support: Connect via direct REST API or configure Airtable Automation Webhooks.
  • Dynamic Custom Field Mapping: Map standard and custom Gravity Forms fields to Single Line Text, Long Text, Numbers, Dates, Single/Multi Select, and Checkbox columns in Airtable.
  • Multiple Feeds per Form: Send entry data to different Airtable bases or tables based on specific conditional rules.
  • Conditional Logic: Filter and route submissions so only qualifying records are dispatched to Airtable.
  • File Uploads & Attachments: Transfer files submitted through Gravity Forms directly into Airtable Attachment columns.

Step 1: Locate the Airtable Feed Menu

After installing and activating the plugin, navigate to Forms → Forms in your WordPress Dashboard. Hover over the form you wish to connect, click Settings, and select Airtable from the settings menu. Click Add New to create a new feed.

Add New Airtable Feed
Figure 1: Click Add New inside Form Settings → Airtable.
Airtable Feed Configuration Screen
Figure 2: The Airtable Feed configuration screen.

Step 2: Generate Airtable Personal Access Token (PAT)

Airtable requires a secure Personal Access Token (PAT) to authorize API requests. Go to Forms → Settings → Airtable. You can click the provided link or navigate directly to the Airtable Developer Hub.

Airtable Settings Account Link
Figure 3: Global Airtable settings link in WordPress.

In your Airtable account, click your profile icon in the top-right corner and select Developer Hub.

Airtable Profile Menu
Figure 4: Accessing Developer Hub from the user profile dropdown.

Inside the Developer Hub, click the Personal access tokens tab, then click Create token.

Airtable Personal Access Tokens Hub
Figure 5: The Airtable Personal Access Tokens interface.
Mandatory Token Scopes:

When configuring the token, assign a descriptive name (e.g. Gravity Forms Sync). Add the following scopes:

• data.records:read — Allows reading records and validating fields.

• data.records:write — Allows creating new records when forms are submitted.

• schema.bases:read — Allows reading table column structures.

Under Access, select either All current and future bases or choose the specific base you want to connect.

Create Token Dialog
Figure 6: Configuring token scopes and base access permissions.

Click Create token. Airtable will display your generated token once. Copy this token immediately to your clipboard.

Copy Generated Token
Figure 7: Copying your newly created Personal Access Token.

Return to WordPress, navigate to Forms → Settings → Airtable, paste your token into the API Key field, and save settings. A green checkmark confirms that your credentials are authenticated.

Paste Token in Settings
Figure 8: Entering your token into the WordPress Airtable settings.

Step 3: Connect Base URL & Map Form Fields

Open the target Airtable base and table in your browser. Copy the complete URL from your browser address bar (it contains your base ID starting with app... and table ID starting with tbl...).

Airtable Browser URL
Figure 9: Copying the full Airtable table URL from your browser.

Paste this URL into the Airtable URL field in your form feed settings. The add-on connects to the table and enables the Airtable Fields — Form Fields mapping table. Map each Airtable column to the matching Gravity Forms field.

Pro Tip for Field Detection:

Ensure your Airtable table contains at least one record (even dummy data) so the API can read and populate all column header names accurately. You can delete the dummy record once field mapping is saved.

Map Fields in Feed Settings
Figure 10: Mapping Airtable table columns to Gravity Forms input fields.

Step 4: Test & Verify Real-Time Synchronization

Once settings are saved, submit a test entry through your Gravity Form. Check your Airtable base to verify that the record arrives instantly with all mapped field values in their respective columns.

Airtable Table Grid View
Figure 11: Airtable table grid ready to receive submissions.
Successful Record in Airtable
Figure 12: Submissions synchronized directly into Airtable in real time.

Populate a form field from an Airtable table (new in 1.1.0)

From version 1.1.0, the Gravity Forms Airtable Add-On can also work the other way round: instead of only sending entries to Airtable, a connected Airtable base/table can fill a form field with its records. This uses the Gravity Forms Dynamic Populate add-on, so the two work together.

The source runs entirely on your server, through the Airtable API key you have already saved on Forms → Settings → Airtable. Your API key is never exposed to the page: the field only stores which base and table to read, and the values are fetched server-side when the form is built.

Before you start

  • Make sure the Dynamic Populate add-on is installed and active. If it is not, the Airtable source simply does not appear — nothing else changes.
  • Save your Airtable API key on Forms → Settings → Airtable (the same key you use to send entries).
  • Create at least one Airtable feed whose connector is API and whose Airtable URL points at the base/table you want to read — that table is then offered as a source.

Set the cache time and refresh the data

When Dynamic Populate is active, a new Dynamic Populate source panel appears on Forms → Settings → Airtable.

Gravity Forms Airtable settings: the Dynamic Populate source panel with a cache time field and a manual refresh button

  • Cache time (seconds) — how long the fetched records are kept before Airtable is read again. The default is 300 seconds (5 minutes). Set it to 0 to turn caching off and read Airtable on every form view; any other value is kept between 30 and 86400 seconds.
  • Refresh Airtable data now — drops the cached records so the next form view reads Airtable again. Use it after you change the table and want the form to show the new records straight away.

Populate a field from a table

  1. Edit a form and add or open the field you want to populate (for example a drop-down).
  2. Open the field’s Dynamic Population settings (added by the Dynamic Populate add-on) and choose the source Connected GravityExtra integration.
  3. Pick an object named Airtable (GravityExtra) › <your feed> › <table>. The list shows every base/table you have connected through an API feed.
  4. Choose which Airtable field supplies the choice value and which supplies the label. Fields are listed by their Airtable field names.
  5. Save the form. The field is now filled from the table, with Dynamic Populate’s own filtering, sorting and limits applied on top.

What happens if Airtable is briefly unavailable

Records are cached for the time you set. If Airtable cannot be reached when the form is built, the last good records are used instead, so the form never breaks; once Airtable is reachable again the fresh records are read on the next cache miss. The source never contacts any host other than Airtable, and it adds no requests at all when Dynamic Populate is not active.

Two-way sync: prefill a form from Airtable and update the record on edit (new in 1.2.0)

From version 1.2.0, the Gravity Forms Airtable Add-On works both ways. Besides sending each new entry to Airtable, it can prefill a form from a matching Airtable record when the form loads, and update the same Airtable record when you edit the entry later. Both are options of an Airtable feed that uses the API connector, and both stay off until you tick them, so existing feeds work exactly as before.

Everything runs on your server with the Airtable API key you already saved on Forms → Settings → Airtable. The key never reaches the page, and only the fields you mapped in the feed are ever sent to the browser.

Gravity Forms Airtable feed settings: the Update the Airtable record on edit and Prefill the form from an Airtable record sections, each with its check box

Update the same record when an entry is edited

  1. Edit a form, open its Airtable feed and make sure the connector is API.
  2. Under Update the Airtable record on edit (two-way), tick Update the same Airtable record when the entry is edited, and save the feed.
  • From 1.2.0, every entry sent through an API feed remembers the id of the Airtable record it created.
  • When you edit that entry, on the entry screen or through the Gravity Forms API, the add-on updates that same record, found by its record id. It never creates a new record on an edit, so you never get a duplicate.
  • The mapped fields of the record take the entry’s current values; the entry is the source of truth. Airtable fields you did not map are not touched.
  • Before updating, the add-on checks that the record still exists. If it was deleted in Airtable (or can no longer be found in that table), nothing is written and no new record is added; the entry gets a note saying so and is no longer linked to a record.
  • Each update also leaves a short note on the entry (record updated, or could not be updated).
  • Entries sent before 1.2.0, or through the Webhook connector, have no stored record id, so editing them does not change Airtable.

Prefill a form from an Airtable record

  1. On the same API feed, map the Airtable fields to your form fields as usual. This one map is used both ways: what is sent, and what is prefilled.
  2. Under Prefill the form from an Airtable record (two-way), tick Prefill this form from the matching Airtable record.
  3. In Match on Airtable field, type the name of the Airtable field that identifies the record’s owner, usually an e-mail field such as Email.
  4. Under Lookup key, choose how the visitor is identified (see below). For A field of the logged-in user, type its user meta key, for example billing_email.
  5. Save the feed. When a record matches, the mapped fields are filled with its values as the form loads, and the visitor can still change them before sending.

A Gravity Forms form prefilled from an Airtable record: the name and e-mail fields already filled in

Who can see which record (the security model)

An Airtable table of form data usually holds personal details, so a visitor can only ever load a record with a key that belongs to them:

  • The logged-in user’s own value (the default): their e-mail address, their username, or a field of their profile. The key is taken from the signed-in account, never from the page address, so a visitor can only match their own record. A visitor who is not logged in gets an empty form, unless they open a signed link.
  • A signed link: the {gfairtable_prefill_link} merge tag (below) makes a link that carries a signed token. Only your site can create that signature, with a secret kept on your server. A link that was altered, has expired, or was made for another form or feed is refused. Choose Only a signed link to use signed links and never the logged-in account.
  • A plain link parameter such as ?gfat_key=someone@example.com is off by default. It can be turned on with Allow a plain URL parameter, shown next to a security warning, and is meant only for non-personal reference tables (a product or branch list, for example), because anyone who knows or guesses a value could open that record. Even then, a valid signed link or the logged-in user’s own value is used first.
  • Only mapped fields leave your server. The record is read on the server; a field you did not map, such as an internal note, is never sent to the page.
  • Lookups are rate limited: by default 20 per minute for each visitor (IP address and user), so a form cannot be used to read many records quickly.

How a record is matched and filled

  • The key is compared with the Match on Airtable field value of each record, ignoring upper/lower case and spaces around it. The first matching record is used.
  • Values become the fields’ starting values, including the parts of name and address fields. A list value (such as a multiple select) is filled as comma-separated text; attachment and linked-record fields are not prefilled. A drop-down shows the value only when it matches one of its choices.
  • If a form has more than one feed with prefill turned on, the first feed wins when two feeds fill the same field.
  • Prefill works on the front end only. If no record matches or Airtable cannot be reached, the form simply loads empty.

To let someone open a filled-in form from an e-mail without logging in, add the {gfairtable_prefill_link} merge tag to a notification or confirmation. It becomes a link to the page the entry was sent from (or your home page) with a signed token for that entry’s key: the entry’s value of the form field mapped to the Match on Airtable field field, so that field must be mapped. The link works for 24 hours; after that it is refused.

For developers

  • Filter gfairtable_prefill_rate_max (int): the most prefill lookups per visitor per minute (default 20, never below 1).
  • The signed token travels in the gfat_pf query parameter. It is signed with a per-site secret stored in the gfairtable_prefill_secret option, which is never sent to the browser.
  • Entry meta gfat_record_id, gfat_base, gfat_table and gfat_feed: the Airtable record an entry created and the feed that created it.

Updating from 1.1.0

Version 1.2.0 installs over 1.1.0 in the same plugin folder. Your API key, feeds, field maps and the 1.1.0 Dynamic Populate source are kept, and nothing changes until you turn on prefill or update-on-edit in a feed.

Changelog: 1.2.0

  • New: prefill a form from a matching Airtable record, looked up only by the logged-in user’s own value or a signed, expiring link ({gfairtable_prefill_link}). A plain link parameter is off by default; only mapped fields reach the page; lookups are rate limited.
  • New: editing an entry updates the same Airtable record it created, found by its record id, so no duplicate is ever added. A deleted record is detected; the entry gets a note and nothing new is created.

Troubleshooting & FAQs

Why do I get a ‘401 Unauthorized’ or ‘403 Forbidden’ error?

Check that your Personal Access Token has not expired and includes the mandatory scopes: data.records:read, data.records:write, and schema.bases:read. Ensure the base you are accessing is included in the token’s access permissions.

How do file attachments work?

Map your Gravity Forms File Upload field to an Airtable field configured with the Attachment type. When the form is submitted, public download URLs are forwarded to Airtable, which automatically fetches and stores the files inside your base.

Can I use conditional logic to send only certain entries?

Yes. Expand the Conditional Logic section at the bottom of the Airtable Feed settings and define your rules (e.g. only sync when Status equals ‘Approved’ or Service equals ‘Enterprise’).

Explore More Resources

Test the live integration in action or view the product overview.

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