You have built a Contact Form 7 form on your WordPress site. You have translated it into multiple languages using WPML. You have configured the integration to send submissions to your CRM. And yet, when a visitor submits the form in a non-default language, the CRM either receives nothing, receives the wrong data, or creates records with missing fields.
This is one of the most frustrating multilingual integration problems. The form works. The translation displays correctly. But the data pipeline breaks somewhere between the form submission and the CRM record.
This guide walks through the exact causes, the debugging process, and verified solutions.
Understanding the WPML + CF7 + CRM Architecture
When you use WPML with Contact Form 7, the architecture involves multiple layers:
WPML Translation Layer → CF7 Form Rendering → Form Submission → API Plugin → CRM
Each layer introduces potential failure points. The most common issues fall into four categories:
- Translation configuration problems (WPML not set up correctly for CF7)
- Field mapping issues (CF7 field names not matching API expectations)
- Pipe-separated value handling (dropdown options behaving unexpectedly)
- Integration settings not replicated (plugin configuration missing on translated forms)
The WPML + CF7 Translation Setup: What You Need to Know
Before debugging CRM integration, you must verify that WPML is correctly translating your CF7 form. WPML provides an official add-on called WPML Multilingual for CF7 that handles the translation glue between the two plugins.
How It Should Work
According to WPML's official documentation, the recommended workflow is:
- Build the form once in your site's default language.
- Send the form for translation through WPML's translation dashboard.
- Use the same shortcode on translated pages. WPML serves the translated version automatically based on the visitor's language.
The critical rule: Do not create separate forms for each language. Use one form, translated through WPML's system.
Common Translation Mistakes
Mistake 1: Creating separate forms per language. If you duplicate the form for each language, the API integration settings are also duplicated. Each form needs its own API configuration, and missing settings on any language's form will cause failures.
A WordPress forum user reported exactly this: their form worked in German but failed in English. The email sent correctly, but the Brevo (Sendinblue) CRM integration did not. The solution was to manually re-check the CRM list selection on the translated form's settings.
Mistake 2: Assuming translation is automatic for integration settings. WPML translates form tags, messages, and mail templates. It does not automatically replicate plugin integration settings. You must manually verify that your CRM integration is configured on each language version.
The Pipe-Separated Value Problem
This is the most subtle and damaging issue for multilingual CRM integrations.
What Pipe Syntax Does
Contact Form 7 supports pipe-separated values in dropdowns:
[select your-country "China" "India" "San Marino"]
With pipe syntax, you can display one label to the user but submit a different value:
[select your-country "China|CN" "India|IN" "San Marino|SM"]
The user sees "China" but the form submits "CN".
How WPML Handles This
According to WPML's official documentation, WPML Multilingual for CF7 translates the visitor-facing labels while keeping the submitted value canonical.
A French visitor sees "Chine" instead of "China". But the form submission, the email body, and your CRM receive the original English value "China" (or "CN" if you used pipe syntax).
Why This Breaks CRM Integrations
The problem occurs when:
- You did not use pipe syntax in the original form.
- WPML translates the label to "Chine".
- The submitted value becomes "Chine" instead of "China".
- Your CRM expects "China" (or a specific country code).
- The CRM rejects the value, ignores it, or stores incorrect data.
The Fix
Always use pipe syntax for dropdown values that feed into a CRM.
| Wrong | Right |
|---|---|
[select country "China" "India"] |
`[select country "China\ |
This ensures the submitted value remains stable regardless of the visitor's language. The CRM always receives the canonical value, while visitors see translated labels.
The Field Mapping Problem in Multilingual Contexts
Even when WPML works correctly, field mapping between CF7 and your CRM can fail.
Why Field Mapping Breaks
A field mapping problem is not a connection problem. The API can return a successful response while the data ends up in the wrong CRM fields.
Common scenarios:
- Your CF7 field is named {% raw %}
your-name, but the CRM API expectsfirst_name. - Your form field is named
company, but the CRM expectsorganization. - Your dropdown submits a label, but the CRM expects an ID.
The Translation Layer Analogy
Think of field mapping as a translation layer. The form field names and the CRM field names are not automatically the same. Your integration needs to explicitly translate:
company → organization
your-email → email_address
inquiry-type → lead_source
Without this mapping, the API may ignore the value, place it somewhere unexpected, or reject the request.
The Fix
Create a mapping table before configuring the API plugin:
| Contact Form 7 Field | API Field | CRM Field |
|---|---|---|
| your-name | name | Name |
| your-email | ||
| your-phone | phone | Phone |
| company | organization | Company |
| inquiry-type | lead_source | Lead Source |
Verify each mapping in the plugin's JSON payload configuration. Test with a hardcoded value first, then replace with CF7 tags. For a deeper dive into JSON structure mapping, read this guide on Contact Form 7 JSON mapping.
The Integration Settings Not Replicated Problem
This is specific to WPML's translation workflow.
What Happens
When WPML translates a CF7 form, it creates a translated version of the form. However, third-party plugin settings are not automatically replicated to the translated form.
A WordPress user described this exactly: their Brevo integration worked in French but failed in English. The PHP debug log showed no errors related to the form itself. The email sent fine. But the CRM contact was not created.
The root cause: the Brevo list selection was not enabled on the English version of the form.
The Fix
For every translated form version:
- Open the translated form in CF7 editor.
- Navigate to your API plugin's settings tab for that form.
- Manually verify that all integration settings are enabled and configured.
- Save the form.
WPML does not sync plugin-specific settings across translations. You must do this manually.
The CF7 Not Sending in Translated Language Problem
Sometimes the problem is not the CRM integration at all. The form itself fails to submit in the translated language.
The REST API URL Issue
WPML has a known issue where the REST API URL for CF7 includes the language parameter incorrectly:
/wp-json/?lang=en/contact-form-7/v1/contact-forms/11187/feedback
This causes a 404 error, and the form never submits. For a full breakdown of data not reaching your API, see this guide on Contact Form 7 data not reaching the API.
The Fix
Add this to your theme's functions.php:
add_filter( 'wpcf7_load_js', '__return_false' );
Or switch WPML's URL format from "language name added as a parameter" to "different languages in directories".
This is a WPML bug, not a plugin issue. But it prevents the form from submitting, which means no data reaches your CRM.
The Debugging Checklist
Work through this sequence for every multilingual CRM integration failure:
| Step | Action | What It Tells You |
|---|---|---|
| 1 | Test the form in the default language | Does the CRM receive data? If yes, the problem is translation-specific. |
| 2 | Test the form in a translated language | Does the form submit at all? If not, check the REST API URL issue. |
| 3 | Check the plugin's API Logs | Was a request sent? What was the response code? |
| 4 | Inspect the JSON payload in logs | Are the field values correct? Are translated values being sent? |
| 5 | Verify pipe syntax in dropdowns | Are labels translated while values stay canonical? |
| 6 | Check integration settings on translated form | Are CRM settings enabled for this language version? |
| 7 | Verify field mapping | Do CF7 field names match API expectations? |
Beyond CRM: One Form, Multiple Destinations
Once your multilingual CRM integration works, you might want to send the same submission to other tools: an email marketing platform, a help desk system, or an SMS notification service.
A good connector plugin supports multiple API integrations from a single form submission. You can create a CRM contact, send an SMS via Twilio, create a Zendesk ticket, and subscribe them to Mailchimp, all from one CF7 submission, without Zapier. For a cost comparison, see this article on Zapier vs a dedicated API plugin.
Key Takeaways
Use pipe syntax for all dropdown values. This keeps submitted values stable across languages while visitors see translated labels.
Do not create separate forms per language. Use WPML's official translation workflow. Separate forms mean separate integration settings and more failure points.
Manually verify integration settings on every translated form. WPML does not sync third-party plugin settings across translations.
Check the REST API URL if forms do not submit in translated languages. This is a known WPML bug with a simple fix.
Field mapping is not a connection problem. The API can succeed while data goes to the wrong fields. Always verify the mapping table.
Test in the default language first. If it works there, the problem is translation-specific. If it fails there too, the problem is in your API configuration.
With correct pipe syntax, verified integration settings on every translated form, and careful field mapping, your CF7 + WPML + CRM integration will deliver accurate data in every language.
Top comments (0)