[#Blogged] How to capture Facebook leads in Salesforce?

Business Requirement - Client promotes his business on Facebook and would like to use Salesforce to store leads and contact them in future. What would be the solution to go ahead with it?

Solution- Rest API Integration/Data upload via Data Loader/Salesforce Lead Capture.

Let's go ahead easy Automation way, Salesforce Lead Capture.
Automate leads from Facebook Lead Ads directly into Sales Cloud
Lead Capture for Sales Cloud allows brands running demand generation campaigns on Facebook using Lead Ads to automate lead form submissions directly into Sales Cloud and map them to Lead Objects.

Screen Shot 2018-03-16 at 7.47.37 PM

This App is provided by Salesforce.

Let's start configuring it in our Developer Org.

Login to App-Exchange and download an app from the link below:

https://appexchange.salesforce.com/appxlistingdetail?listingId=a0N3A00000DrzmfUAB.

Install for Admins only, as we would need to setup it correctly. You can decide it according to your business requirements.

Screen Shot 2018-03-16 at 7.49.29 PM.png

After installing an Appexchange, we usually look in the Application tab for the app installed.

You can find a custom tab created as 'Lead Capture' in the All tabs in Salesforce.

Please authenticate your facebook account which has your business page.Make sure you are admin of the facebook page you wish to automate leads.

Screen Shot 2018-03-16 at 8.05.45 PM.png

Please select which business page(Facebook) you would like to link it.

You would be shown some active forms which fetch data from the Facebook business page.

Screen Shot 2018-03-16 at 8.05.56 PM.png

Map Form fields with Salesforce lead fields (Standard and Custom Fields).

Screen Shot 2018-03-16 at 8.06.05 PM

You can use Fixed Value for some required fields in the lead object.

Screen Shot 2018-03-16 at 8.06.30 PM

So whenever new lead would be submitted, It would be automatically transferred to Salesforce.

Screen Shot 2018-03-16 at 8.06.41 PM.png

How to differentiate between Normal leads and leads which would be inserted into Facebook?

Salesforce Lead Capture used an External ID field as Facebook lead ID ( External ID field is used to avoid duplicates in the records as it performs as a unique key ). You won't find it in the page layout but you can add it there.

Create a list view and in the criteria, you can use Facebook Lead Id not equal to NULL( Facebook_lead_id__c != NULL).List view would show all the leads which would be coming from Facebook.

As we installed the App in the developer org, How to test it if we configured it correct or wrong and lead is going correctly in Salesforce?

Thanks to Facebook, we have a Lead Ads Testing Tool.https://developers.facebook.com/tools/lead-ads-testing

[#Blogged]Transient Keyword in Salesforce

Declaring variables as transient reduces view state size. A common use case for the transient keyword is a field on a Visualforce page that is needed only for the duration of a page request, but should not be part of the page's view state and would use too many system resources to be recomputed many times during a request.
The transient variables are not passed to view state and therefore not stored in View State.

difference between transient instance variable and a static variable?

Static methods, variables, or initialization code are associated with a class and are only allowed in outer classes.
When you declare a method or variable as static, it's initialized only once when a class is loaded. All static member variables in a class are initialized before any object of the class is created.  Indeed they aren't transmitted as part of the view state for a Visualforce page.
Using static variables will cause only one instance of the variable to be loaded when the application loads and that variable will not go out of memory until the app is closed.  It holds information that is common to all instances on a class and It is shared between them instead of being created a new with each instance.
while
Transient keyword to declare instance variable that can not be saved and should not be transmitted as part of view state for visual force page.
Basically, View State is an encrypted, hidden field on a Visualforce page that keeps track of Apex controller state & Visualforce page state between server requests. This field is only generated when there is a tag present on a page.

ViewState is only used on a single page that handles postbacks. Once you redirect to the new page, the ViewState is lost.


The Whole Process of Calling is like this :

A. URL Requested
B. Apex Controller Instantiated on Server
C. Controller State Serialized & Encrypted to View State
D. Page Markup Sent to Browser & Rendered
E. View State Decrypted & Deserialized (for Postbacks)

View State Automatically keeps track of field values for you and Allows for easy AJAX functionality. In order to remove View State Error, we use 4 methods.

A. Reduce Number of Components
B. Use the transient Keyword
C. Use JavaScript Remoting
D. Use the Streaming API


References: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_keywords_transient.htm