search
LoginSignup
11

More than 3 years have passed since last update.

posted at

Wordpress + Contact Form 7 で Salesforce の Web-to-リード を送信する

Salesforce の Web-to-リードを使用すると、問い合わせフォームから見込み顧客の情報を直接Salesforceに取り込むことができます。

しかし、Salesforceで生成されたHTMLをそのまま使用すると、入力内容のバリデーションを行うことができません。

そこで、WordpressのContact form 7を使用して、レコードをWeb-to-リードに送信できるようにしてみました。

Contact form 7でフォームを作成する

Salesforceで自動作成されたHTMLをもとに、フォームを作成していきます。

1点注意する必要があるのは、name属性が0からはじまる場合、Contact form 7では、自動的に先頭の0を削除してしまいます。
このため、name属性にさらに sf- を追加して、先頭の0が削除されないようにしておきます。この sf- は、後の処理で削除します。

また、oidはhiddenタグで追加しておきましょう。

wp-cf7.png

functions.phpにコードを追加する

Contact form 7のアクションフックを使用して、SalesforceにWeb-to-リードを送信します。
参考 : Contact Form 7 & Salesforce

functions.php
function sf_web_to_lead($cf7)
{
    // 送信されるデータを取得します。
    $submission = WPCF7_Submission::get_instance();

    // POSTするクエリを用意します。
    $query_data = array();

    foreach ($posted_data as $name => $value) {
        // Contact form 7用のパラメータはスキップします。
        if (0 === strpos($name, '_wpcf7')) {
            continue;
        }

        // sf-からはじまるパラメータは、先頭のPrefixを削除します。
        if (0 === strpos($name, 'sf-')) {
            $name = substr($name, 3);
        }

        // 複数選択可能なフィールド(select[multiple]やcheckboxなど)の場合は、
        // hoge=value1&hoge=value2のように送信します。(Salesforceの仕様)
        if (is_array($value)) {
            foreach ($value as $option_value) {
                $query_data[] = sprintf('%s=%s', $name, $option_value);
            }

        } else {
            $query_data[] = sprintf('%s=%s', $name, $value);
        }
    }

    $query = implode('&', $query_data);

    // Init cURL session
    $ch = curl_init();

    if ('' !== curl_error($ch)) {
        // Error handling

    } else {
        $sf_url = 'https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';

        curl_setopt($ch, CURLOPT_URL, $sf_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
        curl_exec($ch);
        curl_close($ch);
    }

    return $cf7;
}

add_action('wpcf7_before_send_mail', 'sf_web_to_lead');

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
11