You built a multi-step Contact Form 7 form. It works perfectly for email notifications. Every field arrives in your inbox. But when you connect it to an API through the "Contact Form to Any API" plugin, the data is incomplete. Fields from earlier steps are empty. Or worse, the API payload contains nothing at all.
This is one of the most frustrating problems in CF7 API integrations. The form works. The email works. But the API receives missing or empty data.
The good news is that this problem has a specific cause and a clear fix. This guide explains exactly why step data goes missing and how to ensure every field reaches your API.
Why Multi-Step Forms Break API Integrations
The root cause is how CF7 multi-step plugins work under the hood.
Multi-step form plugins split a single CF7 form across multiple pages. The plugin uses browser cookies to store data from earlier steps and pass it to the final submission. This works fine for email notifications because the final form submission contains all the accumulated data.
But when you connect an API integration plugin, the data flow changes. The API plugin intercepts the form submission at a different point in the process. If the multi-step plugin has not yet assembled all the step data into the final submission, the API receives only the fields from the current step.
A WordPress user described exactly this scenario: "I used to connect Contact Form 7 with Microsoft Flow using the 'CF7 to Zapier' plugin, but after changing my form using Contact Form 7 Multi-Step Forms the data isn't passed through anymore. The API works as it should be, but every field is empty."
The Cookie Storage Limit Problem
There is a second, less obvious cause: browser cookie size limits.
Multi-step plugins store step data in cookies. Cookies have a maximum size of approximately 4KB. If your form has many fields or long text inputs, the cookie can exceed this limit. When that happens, data from earlier steps is silently dropped.
A WordPress support thread documented this exact issue: "This plugin uses cookies to store the information from step to step and cookies do have a limit to the amount of information it can hold." The user reported that fields would go missing at random, sometimes step 6, sometimes step 7, and the pattern depended on how much data was entered in earlier steps.
This is why the problem appears intermittent. Short submissions work. Long submissions fail. The cookie limit is the hidden threshold.
The Hidden Field Trap
Even when the cookie storage works correctly, there is another layer of complexity: conditional fields within multi-step forms.
If your form uses conditional logic, fields that appear based on earlier selections may not be included in the final submission at all. A WordPress user reported: "The multistep can catch all the a-1 and b-1 info, but will get null value with a-2 and b-2 as there is no value display on the confirmation letter."
The solution for conditional fields in multi-step forms is to add hidden fields on the later steps that mirror the conditional field names. This ensures the multi-step plugin has a field to populate with the earlier step's data.
How the API Plugin Handles This
The "Contact Form to Any API" plugin provides conditional field logic in its API configuration settings. This allows you to define which fields appear in the API payload based on conditions.
However, the plugin cannot fix a problem that occurs before the form submission reaches it. If the multi-step plugin fails to assemble the full data due to cookie limits or missing hidden fields, the API plugin has nothing to work with.
The integration requires two layers of configuration.
Layer 1: The CF7 Multi-Step Form. Ensure all fields are properly carried through steps using hidden fields where needed.
Layer 2: The API Plugin. Configure conditional field logic to include only the fields that are actually populated for each submission path.
The Debugging Checklist
Work through this sequence when multi-step form fields are missing from the API payload:
| Step | Action | What It Tells You |
|---|---|---|
| 1 | Check the plugin's API Logs | Does the logged payload show missing fields? |
| 2 | Test with a short submission | If short submissions work, the cookie limit is the issue |
| 3 | Test with a long submission | If long submissions fail, cookie storage is the bottleneck |
| 4 | Add hidden fields to later steps | Ensures conditional field data is carried through |
| 5 | Verify field names are unique | Duplicate names cause data overwrites |
| 6 | Check for page caching | Caching can prevent form data from passing correctly |
For a deeper dive into JSON structure mapping and conditional payload construction, read this guide on Contact Form 7 JSON mapping.
Solutions That Work
Solution 1: Reduce Form Data Volume
If you are hitting the cookie limit, reduce the amount of data stored per step. Use shorter field names, limit textarea lengths, and avoid storing unnecessary data in the form.
Solution 2: Use Hidden Fields for Conditional Data
For conditional fields within multi-step forms, add hidden fields on the final step that mirror the conditional field names. The multi-step plugin will populate these hidden fields with the earlier step's data.
Example hidden field on the final step:
[hidden tour-bhutan]
[hidden tour-nepal]
This ensures the conditional field values are included in the final submission.
Solution 3: Switch to a Database-Backed Multi-Step Plugin
Some multi-step plugins save submission data to the WordPress database instead of cookies. This eliminates the cookie size limit entirely. The API plugin can then retrieve the full submission data from the database.
Solution 4: Disable Page Caching for Form Pages
Caching plugins can interfere with multi-step form data flow. Exclude pages containing multi-step forms from caching.
The Two-Layer Configuration Approach
Once the form data is flowing correctly, configure the API plugin's conditional logic.
In the CF7 form: Use conditional fields and hidden fields to ensure all data is captured.
In the API plugin: Use conditional field logic (Equals / Not Equals) to include only populated fields in the payload. This prevents empty fields from cluttering your CRM.
For a comprehensive breakdown of authentication and error handling across different APIs, see this guide on Contact Form 7 API authentication errors.
Beyond Multi-Step: One Form, Multiple Destinations
Once your multi-step form data flows correctly to your API, you might want to send the same submission to other tools: a CRM, an email marketing platform, or a help desk system.
A good connector plugin supports multiple API integrations from a single form submission. You can create a CRM contact, send an SMS via Twilio, and create a Zendesk ticket, all from one CF7 submission. For a cost comparison, see this article on Zapier vs a dedicated API plugin.
Key Takeaways
Multi-step plugins store step data in cookies. Cookies have a size limit. Long forms or many fields can exceed it, causing silent data loss.
Conditional fields need hidden field mirrors. Add hidden fields on later steps to ensure conditional field data is carried through to the final submission.
The API plugin cannot fix missing form data. It can only map what the form submission provides. Ensure the multi-step plugin delivers complete data first.
Page caching can break multi-step data flow. Exclude form pages from caching.
Test with short and long submissions. If short works and long fails, you are hitting the cookie limit.
With the right hidden fields, reduced data volume, and proper conditional mapping in the API plugin, your multi-step CF7 forms will deliver complete data to your API on every submission.
Top comments (0)