Brilliant Web-to-Lead for Salesforce
Brilliant Web-to-Lead for Salesforce creates a solid integration between your WordPress install(s) and your Salesforce CRM account! People can enter a contact form on your site, and the lead (or case) goes straight into…
Consider an alternative
Brilliant Web-to-Lead for Sales… shows warning signs in 2026 — compare the alternatives below before installing. It runs on 2K+ sites, is rated 4.4/5 and was last updated 5 years ago, and scores 31/100 on our health check.
- No update in 4 years
- Only tested up to WordPress 5.9 (latest is 7.1)
Daily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where Brilliant Web-to-Lead for S… stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| case to lead | >100 |
| contact form | >100 |
| ContactForm | #16 |
| crm | >100 |
| Web to lead | >100 |
Version adoption
Share of active sites per release.
Rating breakdown
★★★★★★★★★★ 4.4 from 38 reviews
About Brilliant Web-to-Lead for Salesforce
From the official readme · v2.7.3.9Description
Brilliant Web-to-Lead for Salesforce creates a solid integration between your WordPress install(s) and your Salesforce CRM account! People can enter a contact form on your site, and the lead (or case) goes straight into Salesforce CRM: no more copy pasting lead info, no more missing leads: each and every one of them is in Salesforce.com for you to follow up.
Features
You can fully configure all the different settings for the form, and then use a shortcode to insert the form into your posts or pages, or you can use the widget that comes with the plugin and insert the form into your sidebar!
Previous contributors:
Filters and Hooks
Note:
- These should be placed in your active theme functions.php or a functionality plugin.
- Never edit a plugin directly (unless you understand the implications of doing so).
- You can use Pluginception to create a custom plugin for these to make them independent of your theme: https://wordpress.org/plugins/pluginception/
Filters
salesforce_w2l_api_url
Change the API url the plugin posts data to. Passes the form type (lead or case)
add_filter( 'salesforce_w2l_api_url', 'my_w2l_api_url', 10, 2 );
function my_w2l_api_url( $url, $form_type ){
return 'https://my.custom-api-url.com/something/';
}
sfwp2l_validate_field
Provide your own validation logic for each field.
An error array is passed in, along with the field name, submitted value, and field configuration (type, default value, required, etc).
Here’s an example of blocking common free email providers:
add_filter('sfwp2l_validate_field','block_non_biz_emails', 10, 4);
function block_non_biz_emails( $error, $name, $val, $field ){
if( $name == 'email' ){
$non_biz_domains = array( 'gmail.com', 'yahoo.com', 'hotmail.com', 'aol.com' );
$domain = array_pop(explode('@', $val));
if( in_array( $domain, $non_biz_domains ) ){
$error['valid'] = false;
$error['message'] = 'Please enter a business email addresss.';
}
}
return $error;
}
You can add to the $non_biz_domains to block other providers as well.
salesforce_w2l_form_html
HTML of the form before it’s returned to WordPress for display
salesforce_w2l_cc_user_from_name
Change from name (user confirmation)
salesforce_w2l_cc_user_from_email
Change from email (user confirmation)
salesforce_w2l_cc_admin_from_name
Change from name (admin notification)
salesforce_w2l_cc_admin_from_email
Change from email (admin notification)
salesforce_w2l_cc_admin_email_list
Adding this code to your functions.php file will add 3 emails to the list. You can add as many as you want and each will get an admin notification email.
add_filter('salesforce_w2l_cc_admin_email_list','salesforce_add_emails');
function salesforce_add_emails( $emails ){
//uncomment line below to remove site admin
//unset($emails[0]);
$emails[]='email@domain.com';
$emails[]='email2@domain.com';
$emails[]='email3@domain.com';
return $emails;
}
salesforce_w2l_cc_user_email_content
salesforce_w2l_cc_admin_email_content
Allows you to filter (append, prepend, modify) the email message content sent to the user or admin(s).
add_filter('salesforce_w2l_cc_user_email_content','salesforce_filter_user_message', 10, 1);
function salesforce_filter_user_message( $message ){
$message = 'Before the user message' . "\r\n\r\n" . $message . "\r\n\r\n" . 'After the user message';
return $message;
}
add_filter('salesforce_w2l_cc_admin_email_content','salesforce_filter_admin_message', 10, 1);
function salesforce_filter_admin_message( $message ){
$message = 'Before the admin message' . "\r\n\r\n" . $message . "\r\n\r\n" . 'After the admin message';
return $message;
}
salesforce_w2l_cc_admin_replyto_email
Filter the Reply-To email header (e.g. to allow replies to go to the form submitter)
salesforce_w2l_returl
salesforce_w2l_returl_{Form ID}
Allows you to filter the value of a field before it is output to dynamically populate it with a value, auto set it based on another value, etc.
Examples:
// Filter Return/Success URL on a specific form
// salesforce_w2l_returl_{Form ID}
add_filter( 'salesforce_w2l_returl_1_tester', 'salesforce_w2l_returl_1_tester_example', 10, 1 );
function salesforce_w2l_returl_1_tester_example( $returl ){
return 'http://123.com';
}
salesforce_w2l_success_message
salesforce_w2l_success_message_{Form ID}
Allows you to filter the contents of the success message before it is output to dynamically populate it with a value, auto set it based on another value, etc.
Examples:
// Filter Success Message on a specific form
// salesforce_w2l_success_message_{Form ID}
add_filter( 'salesforce_w2l_success_message_1_tester', 'salesforce_w2l_success_message_1_tester_example', 10, 1 );
function salesforce_w2l_success_message_1_tester_example( $success ){
return 'Testing 123';
}
salesforce_w2l_field_value
salesforce_w2l_field_value_{Form ID}_{Field Name}
Allows you to filter the value of a field before it is output to dynamically populate it with a value, auto set it based on another value, etc.
Note that the second filter requires you to replace {Form ID} and {Field Name} to be replaced with the relevant form id and field name.
If you need access to the field or form settings in your filter you can use:
$field = salesforce_get_field( $field_name, $form_id );
$form = salesforce_get_form( $form_id );
Examples:
// Pre-check a checkbox
add_filter( 'salesforce_w2l_field_value', 'salesforce_w2l_field_value_precheck_example', 10, 3 );
function salesforce_w2l_field_value_precheck_example( $val, $field, $form ){
$form_id = 1; // form id to act upon
$field_name = 'checkboxfield__c'; // API Name of the field you want to auto check
if( $form == $form_id && $field_name == $field && ! $_POST )
return 1; // or whatever the value of your checkbox is
return $val;
}
// Store HTTP referrer in a field (this is not 100% reliable as the browser sends this value to the server)
add_filter( 'salesforce_w2l_field_value', 'salesforce_w2l_field_value_referrer_example', 10, 3 );
function salesforce_w2l_field_value_referrer_example( $val, $field, $form ){
$form_id = 1; // form id to act upon
$field_name = 'referrer__c'; // API Name of the field you want to autofill
if( $form == $form_id && $field_name == $field ){
if( isset( $_SERVER['HTTP_REFERER'] ) ){
return $_SERVER['HTTP_REFERER'];
}
}
return $val;
}
// Autofill fields based on thew query string (using Google Analytics tracking variables in this example)
add_filter( 'salesforce_w2l_field_value', 'salesforce_w2l_field_value_querystring_example', 10, 3 );
function salesforce_w2l_field_value_querystring_example( $val, $field, $form ){
$form_id = 1; // form id to act upon
$field_name = 'source__c'; // API Name of the field you want to autofill
$qs_var = 'source'; // e.g. ?source=foo
if( $form == $form_id && $field_name == $field ){
if( isset( $_GET[ $qs_var ] ) ){
return $_GET[ $qs_var ];
}
}
return $val;
}
// Autofill a user's country based on IP
add_filter( 'salesforce_w2l_field_value', 'salesforce_w2l_field_value_geoip_example', 10, 3 );
function salesforce_w2l_field_value_geoip_example( $val, $field, $form ){
// Based on this plugin: https://wordpress.org/plugins/geoip-detect/
// Adjust this code to the one used by your geo detection plugin
if( !function_exists( 'geoip_detect2_get_info_from_current_ip' ) ) return;
$form_id = 1; // form id to act upon
$field_name = 'country__c'; // API Name of the field you want to autofill
if( $form == $form_id && $field_name == $field ){
$userInfo = geoip_detect2_get_info_from_current_ip();
//$val = $userInfo->country->isoCode; // e.g. US
$val = $userInfo->country->name; // e.g. United States
}
return $val;
}
// Autofill a date
// https://codex.wordpress.org/Function_Reference/current_time
// http://php.net/manual/en/function.date.php
add_filter( 'salesforce_w2l_field_value', 'salesforce_w2l_field_value_date_example', 10, 3 );
function salesforce_w2l_field_value_date_example( $val, $field, $form ){
$form_id = 1; // form id to act upon
$field_name = 'mydatefield__c'; // API Name of the field you want to auto check
if( $form == $form_id && $field_name == $field && ! $_POST )
return current_time('Y-m-d'); // or whatever date format you want
return $val;
}
salesforce_w2l_form_action
Allows you to remove the form action.
// Remove Form Action
add_filter( 'salesforce_w2l_form_action', 'salesforce_w2l_form_action_example', 10, 1 );
function salesforce_w2l_form_action_example( $action ){
return '';
}
salesforce_w2l_lead_source
Allows you to alter the lead source (per form or globally).
// Alter Lead Source
add_filter( 'salesforce_w2l_lead_source', 'salesforce_w2l_lead_source_example', 10, 2 );
function salesforce_w2l_lead_source_example( $lead_source, $form_id ){
if( $form_id == 1 )
return 'Example Lead Source for Form #1 on page id #'.get_the_id();
return $lead_source;
}
salesforce_w2l_post_args
Allows filtering of the wp_remote_post arguments (e.g. extend the timeout, increase redirect limit, etc).
add_filter( 'salesforce_w2l_post_args', 'salesforce_w2l_post_args_example' );
function salesforce_w2l_post_args_example( $args ){
$args['timeout'] = 10; // http timeout in seconds
return $args;
}
salesforce_w2l_post_data
Allows filtering of the post data before it is sent to SalesForce.
add_filter( 'salesforce_w2l_post_data', 'salesforce_w2l_post_data_example', 10, 3 );
function salesforce_w2l_post_data_example( $post, $form_id, $form_type ){
error_log( 'POST ARGS = '.print_r( $post, 1 ) );
$post['test'] = 'test';
return $post;
}
salesforce_w2l_show_admin_nag_message
Suppress the organization id missing nag message (return false).
add_filter( 'salesforce_w2l_show_admin_nag_message', '__return_false', 10, 1 );
Actions
salesforce_w2l_before_submit
Allows you to do something (read only) with the post data before it’s submitted to SalesForce.
e.g. Send it to another API, log it to a database, etc.
If you need to change the data, use the salesforce_w2l_post_data filter.
add_action('salesforce_w2l_before_submit', 'salesforce_w2l_before_submit_example', 10, 3 );
function salesforce_w2l_before_submit_example( $post, $form_id, $form_type ){
error_log( 'BEFORE SUBMIT '.print_r($post,1) );
}
salesforce_w2l_error_submit
Allows you to do something (read only) with the post data when there is an error submitting to SalesForce.
e.g. Notify someone via email, log it somewhere, etc.
add_action('salesforce_w2l_error_submit', 'salesforce_w2l_error_submit_example', 10, 4 );
function salesforce_w2l_error_submit_example( $result, $post, $form_id, $form_type ){
error_log( 'ERROR SUBMIT ' . print_r($result,1) );
}
salesforce_w2l_after_submit
Allows you to do something (read only) with the post data after it’s submitted to SalesForce.
e.g. Send it to another API, log it to a database, etc.
add_action('salesforce_w2l_after_submit', 'salesforce_w2l_after_submit_example', 10, 3 );
function salesforce_w2l_after_submit_example( $post, $form_id, $form_type ){
error_log( 'AFTER SUBMIT '.print_r($post,1) );
}
salesforce_w2l_get_prefixed_inputs
Allows you to add to or change the list of fields that are auto prefixed by the plugin to avoid collisions with WP Query reserved request parameters
add_filter('salesforce_w2l_get_prefixed_inputs', 'salesforce_w2l_get_prefixed_inputs_example', 10, 1 );
function salesforce_w2l_get_prefixed_inputs_example( $fields ){
$fields[] = 'new_field_name';
return $fields;
}
salesforce_w2l_input_name_prefix
Allows you to change the default field name prefix (_sf) used to avoid collisions with WP Query reserved request parameters.
add_filter('salesforce_w2l_input_name_prefix', 'salesforce_w2l_input_name_prefix_example', 10, 1 );
function salesforce_w2l_input_name_prefix_example( $prefix ){
return 'sfwp2lprefix_';
}
Installation
- Upload the
pluginfolder to the/wp-content/plugins/directory or install via the Add New Plugin menu - Activate the plugin through the ‘Plugins’ menu in WordPress
- Enter your Salesforce.com Organization ID on the plugin configuration page.
Frequently asked questions
Does this plugin have any hooks or filters? Is there documentation?
Yes, quite a few. Hooks & Filters Documentation
I’m not seeing any errors, but the entry didn’t get added to Salesforce!
To turn on in browser debugging, add a hidden field (enabled) named debug and set the value to 1. To turn on debugging via email, add a hidden field (enabled) named debugEmail and set the value to you@yourdomain.com (your email address). Also check for debug logs at SalesForce to see if a validation rule is the culprit: Administration Setup | Monitoring | Debug Logs.
I’m not receiving new submission emails
99% of the time the plugin is sendign these… and the issue is at the WordPress or server level. The Give team has an excellent article on diagnosing and troubleshooting email issues.
What are the built in field names? Not all the fields are working when I use the Field Label in the lead edit screen?
SalesForce is inconsistent in naming built in fields, and even misreports the names of some fields (like MobilePhone, which is actually mobile) in the customize fields screen. Generating a Web to Lead form gets you the real names, but the list below should help as well. Built in fields Leads Human Name API Name - - - - - - - - - - - - - - - - - - - - - - - - First Name first_name Last Name last_name Title title Website URL Phone phone Mobile mobile Fax fax Email email Address street City city State/Prov. state Zip zip Country country Description description Industry industry Rating rating…
How do I setup Web to Lead/Case for my SalesForce Account?
Setting Up Web-to-Lead Setting Up Web-to-Case
How do I setup a Web to Case form?
Choose Web to Case in the Form Settings (bottom of the form editor page).
Where do I find my Salesforce organization ID?
To find your Organization ID, do the following steps: Log in to your SalesForce.com account Go to Setup » Company Profile » Company Information You’ll find the Organization ID in the lower right hand corner of your screen
How do I use a SalesForce custom field?
Go to Setup » Customize » Leads » Fields If your custom field does not exist yet, create it now. Find the API Name for your field (e.g. Custom_Field_Example__c). If it doesn’t end in “__c” it’s not the API name and will not work. Add a new field to your form using the form editor on the plugin admin screen Enter the API Name as the field name (left most box), then fill out the other fields normally (make sure to enable the field!). Save your changes — new submissions will now post that custom field to SalesForce.
How do I use the checkbox field?
Like any other field. Note that it is a single checkbox, not a checkbox list (yet). Note: You must provide a value for your checkbox. Generally 1 is what you want (unless you’re expecting something other than true/false in SalesForce). If you don’t provide a value, your checkbox will never get sent with the form data (and even if it did, it won’t “check” the box at SalesForce as “empty” = unchecked). Checkbox lists and radio buttons will be in a future update.
How do I pre-check a checkbox?
Before you do, consider if a pre-checked checkbox (opt-out) is really what you want to do. If you insist on proceeding anyways: see the Pre-check a checkbox example in Other Notes.
How do I use the select (picklist) field?
Hint: Use the form importer! Use it like any other field — however you’ll need to specify the options (and optional values) for each field using the options box (far right). You’ll also need to use the “internal name” from Salesforce as your field name (see next FAQ). The value box for a select list is the default value (the one selected on a fresh form). /* Preferred format: */ // Use same data for display and value passed to SF one two three // Use different data for display and value passed to SF, require user to select something (assuming field is required) Select One| name1|value1…
How do I use the Date field?
Choose it from the dropdown, that’s all you have to do. If you want to customize the date format or display/functionality of the datepicker UI, you can set the options by entering a list of options in the Options box of the field editor, one per line. Note that you must end each option with a comma, or you’ll end up with a javascript error instead of a datepicker. Note that any options you specify will override the default options. e.g. Default date format – Year, Month, Day dateFormat : ‘yy-mm-dd’, Month, Day, Year dateFormat : ‘mm-dd-yy’, Day, Month, Year dateFormat : ‘dd-mm-yy’, Day…
How do I find the “internal name” of my picklist field?
Hint: Use the form importer! Picklists in SalesForce (Web to Lead at least) are a strange beast — you’d think you could pass the field name and SF would map it on their end… but they don’t make it that easy. Instead you need to use the internal SF ID of the picklist… which looks more like: 00Nd0000007p1Ej (this is just en example, this is not the id of your field). Where do you find this cryptic value? You can find it in two places (that I know of): Edit the field and it’ll be in the URL: e.g. https://na14.salesforce.com/00Nd0000007p1Ej/... Generate a Web to Lead form with your field included…
How do I use the HTML field?
Optionally enter a label (field will display full width if a label is not entered. Enter HTML code in the options box. Note: You cannot use the HTML box to enter a custom field, as only “known” fields are submitted to salesforce and HTML fields are not submitted (just displayed). Be careful to avoid the or tags in an HTML field as they will likely break your form.
How do I use a lookup field with a picklist field in the plugin?
Hint: Use the form importer! Since it’s a lookup field the value of the options has to be SalesForce’s internal id, not the value you’d think it would be. Otherwise when Jane Doe gets married and becomes Jane Smith you’d break all the links to her user. Basically, you need to generate a Web to Lead form in Salesforce and grab the option values from the HTML it generates. e.g. Find the lookup field. This is the bit you’re looking for: Joe Schmoe Jane Doe … 00Nd0000007p1Ej (just an example) is the SF internal ID for that choive. Enter that as the value in your pick list field options like this…
How do I change the order of input fields?
Right now, the only way of ordering input fields is by changing the position numbers on the right hand side of the input fields table in the admin settings. Drag and drop re-ordering is on the roadmap.
How do I apply my own styling to the form?
Instructions for disabling or overriding the CSS are included on the plugin settings screen (see Style Settings).
What does “Use WPCF7 CSS integration” do?
This option adds the WPCF7 classes to the form fields so you get the WPCF7 CSS styles applied (if that plugin is also activated).
Is it possible to make multiple forms with this plugin?
Yes, version 2.0 introduces this feature. Version 2.1 allows you to duplicate forms to reduce re-entering data. Version 2.5 allows you to import Web-to-Lead forms from Salesforce.
How do I change the Lead Source that shows up in Salesforce?
You can easily change this by going into the admin panel and, under form settings, changing the Lead Source for that form.
Changelog
This version changes how option data is stored (it will auto migrate data to the new format leaving the old format available in case a rollback is needed).
2.7.3.9
- Remove Daddy Analytics settings and output (company no longer operating)
2.7.3.8
- Fix WordPress.org assets to support new deploy process
2.7.3.7
- Fix broken assets folder
2.7.3.6
- Fix issues with GitHub auto deploy action
2.7.3.5
- Auto prefix field names known to conflict with WP_Query (like
namein WebToCase). Does not alter other field names for backwards compatibility. Prefix and list of fields to be prefixed is configurable via filters. - Update tested up to version
- Remove inactive contributors
2.7.3.4
- Restore missing assets in WordPress.org repository
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
FAQ
Brilliant Web-to-Lead for Salesforce: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Sep 27, 2026
Is Brilliant Web-to-Lead for Sales… free?
Yes. Brilliant Web-to-Lead for Sales… is free to download and use from the official WordPress.org plugin directory.
Is Brilliant Web-to-Lead for Sales… safe to use in 2026?
Brilliant Web-to-Lead for Sales… shows warning signs in 2026 — compare the alternatives below before installing. It runs on 2K+ sites, is rated 4.4/5 and was last updated 5 years ago, and scores 31/100 on our health check.
How many websites use Brilliant Web-to-Lead for Sales…?
Brilliant Web-to-Lead for Sales… is active on 2K+ WordPress websites and has been downloaded 139,281 times since it launched in April 2010. It was downloaded 321 times in the last 30 days.
Does Brilliant Web-to-Lead for Sales… work with WordPress 7.1?
Brilliant Web-to-Lead for Sales… is officially tested up to WordPress 5.9.18, while the latest release is 7.1.2. It may still work, but try it on a staging site first.
What PHP version does Brilliant Web-to-Lead for Sales… need?
Brilliant Web-to-Lead for Sales… requires PHP 7.4 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.
When was Brilliant Web-to-Lead for Sales… last updated?
The latest version, 2.7.3.9, was released on February 24, 2022 (5 years ago).
Who makes Brilliant Web-to-Lead for Sales…?
Brilliant Web-to-Lead for Sales… is developed and maintained by Nick Ciske.
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card


