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 *

is power cbd gummies legit a comprehensive review of the benefits and effectiveness of power cbd gu finding restful nights with cbd gummies for sleep for adults a comprehensive guide 7204 assure labs cbd gummies a comprehensive review of benefits side effects and quality unlock the power of cbd why 50mg cbd gummies are the perfect solution for a healthier you cannabis gummies mood a comprehensive guide to edible treats finding serenity with calm cbd gummies a natural solution for a stressful world target olly sleep gummies a comprehensive guide to better sleep biolyfe keto gummies scam separating fact from fiction in the world of keto supplements x10 boost keto gummies review unlock the secrets to rapid weight loss with these delicious gummies take control of your keto journey understanding divinity labs keto gummies and subscription managem 21020 revitalize your weight loss journey with revital keto gummies the ultimate solution for a healthier enhancing male performance with iron max male enhancement gummies a comprehensive review unlock your potential with green bunny cbd male enhancement gummies a game changer for men 39 s health experience the bliss of harmony cbd gummies for ed a natural solution for a happy you effective supplements for erectile dysfunction a comprehensive guide to natural remedies 78852 unlock the full potential of pure harmony male enhancement cbd gummies a comprehensive review natural male enhancement a comprehensive guide to improving sexual health 552 enhancing intimacy with daily sex gummies a comprehensive guide 9753 titan edge xl male enhancement you need to know pure harmony cbd male enhancement gummies reviews unlocking optimal wellness and performance