Workflow for online email sign ups pushing to Salesforce Lead and Contact

They say that every challenge is an opportunity. We took that to heart recently when crafting our new approach for onboarding email newsletter sign ups on client websites that create Salesforce Leads to convert to Contacts records. Here's our chosen approach to overcome a common hurdle in this very standard functional need.

The challenge is this:

Most organizations have a simple checkbox on the Contact record that designates if someone has signed up to receive their email newsletter. This follows an emerging best practice, is simple, and allows for adequate customization for different circumstances. Some organizations have one general newsletter sign up with one checkbox. Some have many checkboxes for individual newsletter channels. This makes for an easy way to access the data when it comes time to send an email blast.

Instinctively then, one would assume the best approach for onboarding email newsletter sign ups from a website would be to 1) push them to the Lead object; 2) create a checkbox on the Lead that is set to TRUE for sign ups; 3) map that Lead field to the Contact field; and 4) call it a day.

That works. But only for new Contacts.

Why? If a Lead has a matching Contact, it only maps values to fields on the Contact that are NULL. But Salesforce doesn't consider a checkbox to ever have a NULL value. It is always either TRUE or FALSE. Due to this, according to the wise Mr. Steve Andersen of the Salesforce Foundation, Salesforce "punts" and doesn't update the checkbox on the Contact whose value is FALSE even if the Lead checkbox field mapped to it is TRUE.

So how do you map a Lead to a Contact for email sign ups to ensure that both new and existing Contacts are properly signed up? By turning a challenge into an opportunity and applying a little elbow crease in the form of a couple of workflows and additional fields.

In reality, any organization getting email newsletter sign ups through their website should collect additional data beyond contact information: 1) the date and time of the sign up; and 2) the IP address of the individual signing up. Doing so gives you documentation that demonstrates these individuals chose to sign up rather than being added to your mailing list through some other means without their knowledge.

We capture this data on the Lead for email sign ups. The sign up date and time is a field that is populated by a workflow that stamps the Created Date value to this custom field. The IP address is captured by Soapbox Engage through our form builder and written to a custom text field. These two fields are then mapped to corresponding fields on the Contact object.

On conversion, these field values are pushed to all new Contact records and all existing Contact records where their value is NULL. Then, we have a workflow on the Contact object that sets the email newsletter checkbox to TRUE if these two fields are populated. The email sign up data/time and IP address fields won't write to the Contact if their already populated - but that would mean that the Contact had signed up for our email newsletter earlier and we wouldn't want to overwrite their older data with the new data anyway. And, if the email newsletter checkbox was TRUE on an existing contact by the date/time and IP address fields were NULL because they had been added by some other means, those two fields would be updated to provide further documentation that they signed up online.

Any other approaches folks are taking to hop this hurdle? Any completely different methods that don't even encounter this hurdle? Feel free to toss them into the comments here!

Psst...you may have heard news that we're rolling out Soapbox Mailer for Salesforce soon, our new app native to Salesforce for email marketing. Sign up to learn when it's available here.