Connections to other form plugins
7 min read
If you already build forms with Contact Form 7, Gravity Forms, WPForms or Fluent Forms, a connection copies every submission into a data table of this plugin. The other plugin keeps working as before (its emails, its own entry storage, its confirmations); the connection only adds a row. You can then list the rows on your site, export them, use them in Programmatic SEO, or fill other forms' choices from them.
Open WPM Fields › Forms and the tab Connections. A connection can also work the other way: it can fill the choices of a form (dropdown, radio, checkbox) from a data table, see Choices from a data table.
Requirements
- Plan: Pro or higher (forms and data tables).
- The other plugin must be active to set up a connection (otherwise the editor says "None of the supported form plugins is active. Activate Gravity Forms, Contact Form 7, WPForms or Fluent Forms first.").
- A data table whose columns the submission can fill (see Create a data table).
The Connections list
Column | Meaning |
|---|---|
Connection | The connection's name and key. |
Form | The plugin and the form ( |
Data table | The table the rows go to. |
Status | Active or Inactive. |
Last submission | When the last submission was handled and whether it succeeded (Success) or Failed; Never before the first. |
Added / failed | Counters of rows added and entries that could not be stored. |
Click Add connection. With none yet the screen says No connections yet: "Connect a form built with Gravity Forms, Contact Form 7, WPForms or Fluent Forms to a data table. Every submission then becomes a row of that table."
Create a connection
The editor is titled Add connection. Its sections:
1. Connection
Setting | Notes |
|---|---|
Name (required) | "For you only." |
Key | "Filled in from the name until you edit it." Cannot be changed later ("The key can't be changed after the connection is created."). A key must start with a letter and use lowercase letters, numbers and underscores; |
Active | "When off, submissions of the form are not added to the data table." |
2. Form
Choose the Form plugin (only active plugins are enabled), then the Form ("Select a form..."). Changing either resets the matching below.
3. Data table
The switch Store submissions in a data table ("Every submission becomes a row. Turn this off to only fill choice fields from data tables.") is on by default. Choose Add submissions to the table ("Select a data table..."). With no table the card says "There are no data tables yet. Create one first, then connect the form to it." If the connection's table was deleted: "The data table of this connection no longer exists. Choose another one."
4. Match the fields
"Choose which form field fills each column of the data table. Columns left unfilled stay empty. File columns take upload fields only."
- Match by name fills the columns that have no source yet from form fields whose id or label equals the column's key or label (ignoring capitals). A note tells you how many were matched ("3 columns matched by name.") or "No more columns share a name with a form field."
- For each column choose a source from the picker. It has two groups:
- Form fields: the fields of the chosen form, or - Not filled -. A file column offers upload fields only; every other column offers the form's other fields.
- Submission details (not for file columns): Entry ID, User ID, IP address, Page URL, Submission date.
The submission date is the time of the submission in UTC. Entry ID is the ID the form plugin gave the entry; Contact Form 7 does not store entries, so that source stays empty for it. User ID is empty for a guest.
A connection that stores submissions needs at least one matched column: "Match at least one column with a form field." A connection that neither stores submissions nor fills choices is not saved: "Store the submissions in a data table, fill choice fields from one, or both."
5. What happens to the rows
Setting | Options |
|---|---|
On every submission | Add a new row, or Update the row when a column matches. |
Match on column | With update: the column that identifies a row. Help: "A new row is added when no row has the same value." |
Update needs a column that is marked Unique (and indexed) in the data table and filled from a form field. Otherwise the option is disabled with "To update existing rows, mark a column unique and indexed in the data table, then fill it from a form field." and saving says "Choose a unique, indexed column that the form fills."
With update, a submission whose match value exists updates that row; otherwise a row is added. An empty value of an optional field does not overwrite what the row already has. (Rows added with Add a new row simply store the empty value.)
6. Fill choices from data tables
Optional, described in the next page.
Click Create connection. The toast says Connection created. (Connection saved. on later saves).
How submissions are stored
Plugin | When the row is added | Notes |
|---|---|---|
Gravity Forms | After the entry is saved ( | A name is mapped part by part (Name – First, Name – Last); checkbox choices form one field; the values of a multi-choice are joined with |
Contact Form 7 | Just before CF7 sends its mail ( | Fields are the form's tag names. The row is stored whether or not the mail itself could be sent. Uploads are copied from CF7's temporary folder. |
WPForms | After the entry was processed ( | Fields are the form's field ids. |
Fluent Forms | After the submission was inserted ( | Fields are the form's input names. |
Values:
- Text, numbers and dates are converted by the column's type exactly like for a typed row, with the same rules and the same refusals: see Browse, search and edit rows. A required column that the form does not fill, a malformed email for an Email column, a unique value that exists in Add mode ... make that entry fail (below).
- Several values (checkboxes, multi-select) are joined with
,into the column. - File columns (Image, File) get the first file of the upload field. The file is checked with the same rules as in File uploads and copied into the Media Library; the form plugin keeps its own copy. A file that fails gives a warning, and the row is saved without it. Text typed into a form can never fill a file column: an attachment ID written in a text field is ignored.
- Files are only taken from the other plugin's own upload folder inside this site's uploads, never from other places.
Statistics and errors
The list counts, per connection, the rows added and the entries that failed, and shows the last time and result. Open the connection to see the last message. A submission can fail when:
- a required column is not filled, a value does not fit its column, or a unique value already exists;
- the data table was deleted ("The data table of this connection no longer exists.");
- the license is inactive ("License inactive: the entry was not stored.");
- something unexpected happened ("An unexpected error stopped this entry. See Settings › Health.").
A failure never breaks the other plugin's form: the visitor still sees the other plugin's normal confirmation, the other plugin still sends its emails and keeps its own entry. Only the copy in the data table is missing. Check the list regularly for Failed if the table must be complete.
Switching a connection off
Set Active off, or delete the connection (Delete connection?). The other plugin is hooked only while at least one active connection exists for it, so a site without connections pays nothing.
A data table used by a connection cannot be deleted (it shows Form connection: Name in Used by).
For developers
- Action
wpmcf/forms/connected_submissionfires after a submission was stored: the connection, the row ID and the submission. - Filter
wpmcf/forms/connection_pluginsadds adapters for other form plugins (objects that implementPro\Forms\Connections\FormPlugin). - Upload size:
wpmcf/forms/upload_max_bytesreceives the connection as its context. - See the hooks reference.
Still stuck? Contact support