DEV Community

Cover image for CF7 Form Submits Successfully But Nothing Appears in Airtable Here Is Why
Rahul Sharma
Rahul Sharma

Posted on

CF7 Form Submits Successfully But Nothing Appears in Airtable Here Is Why

You set up a CF7 form, connected it to Airtable, and submitted a test entry. The form showed the success message. But when you opened your Airtable base, the record was nowhere to be found.

No error. No failed notification. Just silence.

This was posted on the WordPress support forums and it is one of the most common Airtable integration complaints. The form appears to work perfectly. Airtable receives nothing. Here are the reasons this happens and exactly how to fix each one.

Reason 1: The API Token Has Insufficient Scopes

Airtable moved from legacy API keys to Personal Access Tokens (PATs) in 2024. A PAT only has the permissions you explicitly grant it when you create it.

To write records to an Airtable base from an external integration, the token needs the data.records:write scope. Without it, the API call authenticates successfully but Airtable rejects the write operation. Your form submits. The plugin fires. The API call returns a 403 error that the plugin either logs silently or ignores entirely.

Go to airtable.com/create/tokens, open the token you are using, and confirm data.records:write is listed in the scopes. If it is not there, add it and save. Then test again.

Reason 2: The Base ID or Table Name Is Wrong

Airtable's API uses the base ID and table name to route your records to the correct location. Both have to be exactly right.

The base ID looks like appXXXXXXXXXXXXXX. It appears in the URL when you open the base in your browser. Do not use the base name. Use the ID.

The table name must match exactly what appears in Airtable, including capitalisation and spacing. If your table is called Contact Form Leads in Airtable, your integration must send that exact string. contact form leads or ContactFormLeads will not match and Airtable will return a 404 or route to nothing.

Reason 3: The Field Names in the Payload Do Not Match Airtable

Every record sent to Airtable contains field names and values. The field names in your API payload must exactly match the field names in your Airtable table.

If your Airtable table has a field called Full Name and your integration sends name or fullname, Airtable either creates an empty record (if required fields are missing) or ignores the value entirely.

The safest way to confirm your field names is to open your Airtable table, click on any field header, and note the exact name. Then check your integration's field mapping and make sure every name matches character for character.

Reason 4: The Plugin Is Catching a Silent Error

Some CF7 to Airtable plugins do not surface errors visibly when the API call fails. They fire the request, get a 401 or 403 back from Airtable, log nothing or log to a file nobody checks, and the form appears to succeed from the user's perspective.

Enable WordPress debug logging and submit a test form. Check wp-content/debug.log immediately afterward for any error from the Airtable API call. A 401 means authentication failed. A 403 means authenticated but not authorised. A 422 means the payload was received but failed validation.

Reason 5: CF7 Is Flagging the Submission as Spam

CF7 has a spam detection layer that runs before any integration fires. If the submission is caught by Akismet, CF7's honeypot, or a CAPTCHA that fired incorrectly, the form shows a success message but CF7 marks the submission internally as spam and does not fire the hooks that trigger Airtable integrations.

Submit the form with clearly non-spam data during testing. Temporarily disable Akismet if you have it active. If Airtable starts receiving records after disabling spam filtering, the submission was being flagged.

A More Reliable Way to Connect CF7 to Airtable

Dedicated CF7 to Airtable plugins handle the connection for you but give you limited visibility when things go wrong. When the record does not appear and there is no visible error, debugging is guesswork.

Contact Form to API connects CF7 directly to Airtable's REST API. You configure the Airtable endpoint URL, add your PAT as a Bearer Authorization header, and map your CF7 form fields to the exact Airtable field names your table uses. Every submission attempt logs the response from Airtable, so you see whether the record was created, and if not, you see the exact error Airtable returned. No guesswork about whether the token scope is right or whether the field name matched.

Checklist Before Debugging Further

Before spending more time on this, go through these quickly.

Confirm your PAT has data.records:write in its scopes.

Confirm the base ID in your integration starts with app and matches the URL of your Airtable base.

Confirm the table name in your integration matches exactly what appears in Airtable including capitalisation.

Confirm field names in the payload match field names in the table exactly.

Enable WP_DEBUG_LOG and check the log after a test submission for any API error response.

Temporarily disable Akismet and retest to rule out spam flagging.

Top comments (0)