Form Integrations
Per-plugin setup guides for all 12 core form builders, plus 5 more form builders and 3 commerce/LMS event sources (LearnDash, MemberPress, Easy Digital Downloads) added via the Integrations Bundle.
Overview
SheetLinkWP hooks into native WordPress form submission events - no extra configuration needed on the form side. Install the plugin, create a sync rule, select your form plugin, and map fields. Works the same way across all 12 core form plugins (plus the 5 added through the Integrations Bundle).
Each integration listens for the form plugin's built-in submission action, captures all field data, and sends it to your connected Google Sheet in real time. Column headers are generated automatically from the field names or labels defined in your form builder; Smart Mapping (bundled in the free core) also suggests cleaner column names when your form uses generic IDs.
The core 12 are covered below. JetFormBuilder, Bricks Builder, MetForm, Kali Forms, and HappyForms live under the Integrations Bundle section at the end.
E Elementor Pro Forms
elementor_pro/forms/new_record
How it works
SheetLinkWP listens to Elementor's elementor_pro/forms/new_record action, which fires every time a visitor submits an Elementor Pro form. The plugin captures all submitted field values and writes them to your mapped Google Sheet instantly.
Available fields
- All form fields are captured by their field ID
- Custom field IDs set in Elementor's form widget are used as column names
- Supports text, email, number, textarea, select, radio, checkbox, date, time, and file upload fields
Use short, descriptive Field IDs in Elementor (e.g., 'name', 'email', 'phone') - these become your Google Sheet column headers.
Requires Elementor Pro (the free version doesn't include forms).
CF7 Contact Form 7
wpcf7_mail_sent
How it works
SheetLinkWP hooks into wpcf7_mail_sent, which fires after CF7 has successfully processed a submission and dispatched its notification email. All submitted mail-tag values are captured and synced to your Google Sheet.
Available fields
- All mail-tags (form fields) are captured automatically
- Field names like
your-name,your-email,your-messageare used as column names - Supports text, email, URL, tel, textarea, select, checkbox, radio, date, and file fields
CF7 field names include hyphens by default (e.g., your-name). These work fine as Sheet column headers.
File upload fields are captured as file names, not file contents.
GF Gravity Forms
gform_after_submission
How it works
SheetLinkWP hooks into gform_after_submission, which fires after Gravity Forms processes and stores a new entry. All field values from the entry are captured and synced to your Google Sheet in real time.
Available fields
- All form fields are captured using their field labels
- Multi-part fields (name, address) have sub-fields captured individually
- Checkboxes are captured as comma-separated values
- Multi-select fields are fully supported
- File uploads are captured as URLs
Gravity Forms field labels become column headers. Keep them clean and descriptive.
Supports all field types including checkboxes (comma-separated values), multi-select, and file uploads (as URLs).
WP WPForms
wpforms_process_complete
How it works
SheetLinkWP hooks into wpforms_process_complete, which fires after WPForms finishes processing a submission. All field data is captured by field label and synced to your Google Sheet immediately.
Available fields
- All form fields captured by field label
- Supports all standard WPForms field types
- Both WPForms Lite (free) and WPForms Pro are fully supported
Both WPForms Lite (free) and WPForms Pro work with SheetLinkWP. No premium license required for the Sheet sync.
FF Fluent Forms
fluentform/submission_inserted
How it works
SheetLinkWP hooks into fluentform/submission_inserted, which fires after Fluent Forms stores a new submission in the database. All field values are captured and synced to your connected Google Sheet.
Available fields
- All form fields captured by field name/label
- Supports text, email, number, textarea, select, radio, checkbox, file upload, and more
- Clean field name conventions make column mapping straightforward
Fluent Forms uses clean field names by default, making column mapping straightforward.
FM Formidable Forms
frm_after_create_entry
How it works
SheetLinkWP hooks into frm_after_create_entry, which fires after Formidable Forms creates a new entry. All field values - including data from repeater fields and calculated fields - are captured and synced to your Google Sheet.
Available fields
- All form fields captured by field name
- Repeater fields are fully supported
- Calculated fields are captured with their computed values
- Supports all standard and advanced Formidable field types
Formidable's field names are used as column headers. Check Settings > Fields to see exact names.
NF Ninja Forms
ninja_forms_after_submission
How it works
SheetLinkWP hooks into ninja_forms_after_submission, which fires after Ninja Forms processes a submission. All field values are captured by their internal field key and synced to your Google Sheet.
Available fields
- All form fields captured by field key
- Supports text, email, number, textarea, select, radio, checkbox, and more
- Field keys (not labels) are used as column headers
Ninja Forms uses field keys (not labels) internally. Check the field settings to see the key used for each field.
Need a different form plugin?
We're always adding new integrations. Let us know which form builder you'd like us to support next.
Contact support@sheetlinkwp.comFR Forminator
forminator_custom_form_submit_before_set_fields
How it works
Forminator fires a custom action after every form, quiz, and poll submission. SheetLinkWP hooks into it, extracts the submitted field payload, and writes to your mapped Google Sheet. Works with contact forms, quizzes (including knowledge and personality quiz types), and polls.
Available fields
- Form submissions captured by field name (set in the Forminator field editor)
- Quiz answers + result categories are captured as separate columns
- Poll responses captured with the option label as the value
- Stripe and PayPal payment fields are captured as amount + status
- File upload fields captured as public URLs
Forminator field names default to generic keys like name-1 and email-1. Rename them in the field editor (e.g. email, first_name) before mapping, so your Google Sheet columns are readable.
EV Everest Forms
everest_forms_process_complete
How it works
Everest Forms stores every submission in its own database table; SheetLinkWP listens for the save-complete action, copies the captured field values, and sends them to your sheet.
Available fields
- All standard fields supported (text, email, number, textarea, radio, checkbox, select, date)
- Multi-part form submissions delivered as one row with all steps combined
- Conditional-logic fields are captured only if the user saw them
- File upload fields sent as attachment URLs
Set custom field IDs in the Everest Forms field editor - the plugin uses the ID on the left side of your SheetLink mapping.
BB Beaver Builder Forms
fl_module_contact_form_after_send
How it works
The native Contact Form module inside Beaver Builder (and the richer form builder inside Beaver Themer) emits a submission action that SheetLinkWP reads. All field values set in the Beaver module are captured verbatim.
Available fields
- Contact Form module fields captured by the Name attribute set in the module settings
- Beaver Themer forms supported via the same hook (richer field types: file upload, checkboxes, date, etc.)
- Multi-step forms deliver a single combined row after the final step
The free Beaver Builder Lite includes the Contact Form module. Beaver Builder Premium adds more field types and Beaver Themer form integration.
DV Divi Contact Form
et_pb_contact_form_submit
How it works
Divi's built-in Contact Form module emits a submission action when the form validates successfully; SheetLinkWP captures the payload and writes to your sheet. No second form plugin is required.
Available fields
- Divi form fields identified by the Field ID set in the module
- Custom-labelled fields use the Field ID as the column name
- Divi Theme Builder forms supported by the same hook
- Upload fields captured as URLs
Divi's default Field IDs are numeric (field_1, field_2). Replace them with readable IDs like name or email in the module settings for cleaner sheet columns.
WS WS Form
wsf_submit_post_complete
How it works
WS Form is a developer-focused builder with a rich hook API. SheetLinkWP uses wsf_submit_post_complete to capture every submission with validated field data.
Available fields
- All field types supported (text, email, number, textarea, repeater, calculated)
- Repeater field rows captured as JSON in a single cell (by design)
- Calculated fields captured with their final computed value
- Multi-column layouts and multi-step forms deliver one combined row per submission
WS Form's strict HTML output means every field has a stable name attribute. Use that exact name on the left side of your SheetLink mapping.
IB Integrations Bundle
Requires the Integrations Bundle add-on ($19/mo). See License Activation to unlock.
Five more form builders
The Integrations Bundle adds five additional form builders on top of the 12 core integrations:
- JetFormBuilder - Gutenberg-native form engine from Crocoblock (hook:
jet-form-builder/form-handler/after-send) - Bricks Builder Forms - native form element inside the Bricks site builder (hook:
bricks/form/custom_action) - MetForm - Elementor-native form widget from Wpmet (hook:
metform_after_store_form_data) - Kali Forms - drag-and-drop builder with a generous free tier (hook:
kaliforms_after_form_process) - HappyForms - accessibility-first form plugin (hook:
happyforms_submission_success)
Three commerce and LMS event sources
Beyond form builders, the bundle also turns non-form events into rows in your sheet:
- LearnDash - fires on course completion (hook:
learndash_course_completed). Captured fields: user_id, user_email, user_login, course_id, course_title, completed_at. - MemberPress - fires on a completed transaction (hook:
mepr-txn-store, status=complete). Captured fields: transaction_id, user_id, user_email, product_id, amount, gateway, subscription_id, status. - Easy Digital Downloads - fires on completed purchase (hook:
edd_complete_purchase). Captured fields: payment_id, email, first_name, last_name, total, currency, status, gateway, date, items.
Alternate destinations
The bundle also adds Airtable and Notion as alternate destinations - route submissions to an Airtable base or Notion database instead of (or alongside) a Google Sheet. Configure per-destination API keys inside the SheetLink -> Features -> Extra Integrations page after activating the add-on.
Once activated, the 5 extra form builders and 3 event sources auto-appear in the Sync Rules source dropdown. No separate setup per plugin.
Verifying the hook fires
If submissions aren't reaching your sheet, the first step is confirming the form plugin's action hook is firing at all. Each integration above shows the exact WordPress action SheetLinkWP listens on. Drop this snippet in your theme's functions.php or a code-snippets plugin to log a message every time your form plugin fires:
add_action('ninja_forms_after_submission', function($data) {
error_log('[debug] ninja_forms_after_submission fired: form ' . $data['form_id']);
}, 5);
Replace ninja_forms_after_submission with the hook from the plugin card above, then submit a test form and check wp-content/debug.log. Priority 5 runs before SheetLinkWP's default priority 10, so you'll see the log line even if SheetLinkWP later throws.
If the log line does not appear: the form plugin itself is not firing the action - check the form plugin's own configuration, server error log, and plugin version. If the log line appears but no row lands in your sheet: the issue is downstream - check SheetLink -> Log in the admin for a Delivery Log entry and the Troubleshooting guide for common errors.
Ready to Get Started?
Install SheetLink Forms and connect your first form in under 10 minutes.