In this tutorial, you will learn about how to create leads in Salesforce programmatically, without the use of plugins. This tutorial focuses on integrating Contact Form 7 to SF using the Web-to-Lead method.

The full code can be found at the end of the tutorial.

If you are interested in a different integration please let us know in the comments section.

First we need to hook into the CF7’s “before send email”.

add_action("wpcf7_before_send_mail", "web_to_salesforce");
Code language: JavaScript (javascript)

We then create a function where we do the logic. The CF7 hook passes one variable which I called “$cf7”.

function web_to_salesforce($cf7){ // do logic here }
Code language: PHP (php)

Inside our function we retrieve the submission instance and the current contact form information.

function web_to_salesforce($cf7){ $submission = WPCF7_Submission::get_instance(); $wpcf = WPCF7_ContactForm::get_current(); }
Code language: PHP (php)

We can use the $wpcf object to to get the id and compare it to the id of the CF7 form we want to target. Bonus: we can also use the object to get the mail prop.

Using the $submission object we get the user-posted form data.

function web_to_salesforce($cf7){ $submission = WPCF7_Submission::get_instance(); $wpcf = WPCF7_ContactForm::get_current(); if( $wpcf->id == 99){ // 99 being the id of the CF7 form if ( !$submission ) { return false; } $mail = $wpcf->prop('mail'); $posted_data = $submission->get_posted_data(); } }
Code language: PHP (php)

In the next step, we prepare the fields we want to send to Salesforce.

$url = 'https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8'; $fields = array( 'debug' => 0, // set to 1 to active debug mode 'debugEmail' => 'admin@website.com', 'oid' => '00A100000000abc', 'first_name' => $posted_data['first-name'], 'last_name' => $posted_data['last-name'], 'email' => $posted_data['email'], 'phone' => $posted_data['telephone'], 'company' => $posted_data['company'], 'state' => $posted_data['state'], 'description' => $posted_data['enquiry'], 'country' => $posted_data['your-country'], 'emailOptOut' => true, 'lead_source' => 'Contact form', );
Code language: PHP (php)

We then call our cURL function that we will create next.

curl_send_to_salesforce($url, $fields);
Code language: PHP (php)

Bonus: you can edit the email CF7 recipient here based on various rules on the posted data.

$mail['recipient'] = 'sales@website.com'; // Save the email to field $wpcf->set_properties(array( "mail" => $mail )); // Return current cf7 instance return $wpcf;
Code language: PHP (php)

Now for our cURL function:

function curl_send_to_salesforce($url, $fields){ // URL-ify the data for the POST foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); // Open connection $ch = curl_init(); // Set the url // Set the number of POST vars // Set the POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); // Execute post $result = curl_exec($ch); // Close connection curl_close($ch); return $result; }
Code language: PHP (php)

Now for the full code:

<?php function web_to_salesforce($cf7){ $submission = WPCF7_Submission::get_instance(); $wpcf = WPCF7_ContactForm::get_current(); if( $wpcf->id == 99 ){ // 99 being the id of the CF7 form if ( !$submission ) { return false; } $mail = $wpcf->prop('mail'); $posted_data = $submission->get_posted_data(); $url = 'https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8'; $fields = array( 'debug' => 0, // set to 1 to active debug mode 'debugEmail' => 'admin@website.com', 'oid' => '00A100000000abc', 'first_name' => $posted_data['first-name'], 'last_name' => $posted_data['last-name'], 'email' => $posted_data['email'], 'phone' => $posted_data['telephone'], 'company' => $posted_data['company'], 'state' => $posted_data['state'], 'description' => $posted_data['enquiry'], 'country' => $posted_data['your-country'], 'emailOptOut' => true, 'lead_source' => 'Contact form', ); curl_send_to_salesforce($url, $fields); $mail['recipient'] = 'sales@website.com'; // Save the email to field $wpcf->set_properties(array( "mail" => $mail )); // return current cf7 instance return $wpcf; } } function curl_send_to_salesforce($url, $fields){ // URL-ify the data for the POST foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); // Open connection $ch = curl_init(); // Set the url // Set the number of POST vars // Set the POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); // Execute post $result = curl_exec($ch); // Close connection curl_close($ch); return $result; }
Code language: HTML, XML (xml)

Hope this helped you get a head start with your integration. If you have any questions or need help with anything else, feel free to leave a comment below.

Published by Dragos Micu

WooCommerce

9 Comments

  1. Hello Dragos,
    first thank you for the slick script, the one I had before was quite longer and had more code… 🙂

    Your script used to work beautifully on my site, but since a few days all dropdown fields in CF7 are send as “=array” to salesforce.

    Do you have an idea what could have caused this? The last CF7 Update perhaps?

    Kind Regards

    Seb

    Reply
  2. Hi! This plugin works for me, but only in debug mode 🙁 If i turn off debug, dosent send the user to my salesforce account. Any ideas?

    Thanks in advance 🙂

    Reply
    • Hi Benjamin,

      Are you using Google ReCaptcha by any chance? Also, are you getting any errors in the Network’s XHR tab?

      Best wishes
      Dragos

      Reply
      • Hi! Its working 😉 The thing is that its takes one hour aprox to show data in Salesforce. It could be something with my salesforce or my WordPress? I am using the code in a sandbox area.

        Thanks again and sorry for so many questions 🙁

        Reply
        • Hi Benjamin,

          I believe it’s usual with Salesforce to sometimes take a while to show up the data. It happed to me before also.

          Best wishes,
          Dragos

          Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

can you travel with cbd gummies internationally a comprehensive guide to cbd gummies for travelers bio blend cbd gummies review a comprehensive look at the best cbd gummies on the market discover the miraculous 250mg cbd gummies effects unlocking a happier healthier you experience the potent effects of 75 mg cbd gummies a comprehensive review of biohealth 39 s cbd edible discover the benefits of cbd gummies hemp extract a comprehensive guide to choosing the right produ experience the power of cbd gummies 300mg unlocking a holistic approach to health and wellness how long do cbd gummies stay in your system reddit a comprehensive guide to choosing the right prod calmwell cbd gummies review benefits pros cons and user reviews discover the power of kana cbd gummies amazon a comprehensive review of the best cbd edibles for an d9 cbd gummies unlocking the power of cbd for a healthier you does cbd gummies expire a comprehensive guide to choosing the best cbd products for your needs the benefits and effectiveness of new age naturals hemp gummies for overall well being 9969 best cbd gummies for chronic pain relief top brands and products rejuvenate your mind and body with rejuvenate cbd gummies where to buy and what to expect unlock the power of batch mushroom gummies benefits science and expert insights 4371 the benefits of cbd gummies for prostate health a comprehensive guide to cbd gummies prosta 38394 revitalize your well being with regen cbd gummies for sale the ultimate natural solution exploring the benefits of cbd gummies in omaha a comprehensive guide to relaxation and wellness bioblend cbd gummies reviews unlocking the secrets to a restful night 39 s sleep and anxiety free days is cbd gummies legal a comprehensive guide to choosing the best cbd gummies for your needs