DEV Community

Rahul Sharma
Rahul Sharma

Posted on

CF7 + WPML Multilingual Forms Not Sending Correct Data to CRM: A Complete Troubleshooting Guide

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
Enter fullscreen mode Exit fullscreen mode

Each layer introduces potential failure points. The most common issues fall into four categories:

  1. Translation configuration problems (WPML not set up correctly for CF7)
  2. Field mapping issues (CF7 field names not matching API expectations)
  3. Pipe-separated value handling (dropdown options behaving unexpectedly)
  4. 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:

  1. Build the form once in your site's default language.
  2. Send the form for translation through WPML's translation dashboard.
  3. 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"]
Enter fullscreen mode Exit fullscreen mode

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"]
Enter fullscreen mode Exit fullscreen mode

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 expects first_name.
  • Your form field is named company, but the CRM expects organization.
  • 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
Enter fullscreen mode Exit fullscreen mode

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 email 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:

  1. Open the translated form in CF7 editor.
  2. Navigate to your API plugin's settings tab for that form.
  3. Manually verify that all integration settings are enabled and configured.
  4. 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
Enter fullscreen mode Exit fullscreen mode

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' );
Enter fullscreen mode Exit fullscreen mode

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)