This guide will demonstrate how to sync campaign members from Salesforce to a custom object in Eloqua.  It will discuss why custom objects are a good solution, walk through setting up the custom object, the auto-sync to pull the data, and how to use the custom object in segmentation.


Part 1 - Why Custom Objects for Salesforce Campaign Members?

Unfortunately campaigns do not always originate from Eloqua, there are some sources you simply cannot get between (e.g. AppExchange, partner integrations, etc.).  As a result, campaign associations can occur outside of Eloqua, but you may want to segment on these campaign associations.  Even for some campaigns that originate from Eloqua, doing segmentation through the Campaign Member object can still be an easier way of achieving complex segments.  Custom objects will allow you to mirror the Campaign Member object in Salesforce in Eloqua, and segment on Campaign Member values the same way you would generate reports of Campaign Members in Salesforce.  This allows you to bypass having to do list pulls from Salesforce and list uploads in Eloqua.


Part 2 - Setting up the Custom Object in Eloqua

Step 1 - Load the Custom Objects area

Go to Contacts > Custom Objects




Step 2 - Create a New Custom Data Object


Go to Events > New Custom Data Object




Provide a display name, description, and folder organization, and click next.




Add the Campaign Member fields you want to sync to Eloqua.  You can add fields by accessing the Data Card Fields drop-down in the top right, and selecting Add New Field.




Sample: Campaign Name




Continue to add the fields you want to sync - below is a screenshot of a set of fields you may want to start with.




You can click Next on the Header Fields step (you can always make edits to fields later).


Step 3 - Configure the Data Card Set field details

To connect the custom data object record to a contact in Eloqua, you need to map the email address fields.  You also need to map the unique code field to the Campaign Member ID field so when the AutoSync fires it knows whether to create a new record, or update an existing record based off of the Campaign Member ID.


Update your field mappings, and click Save.




Part 3 - Setting up the AutoSync to Pull the Data from Salesforce

Now that the custom object has been created to store the Campaign Member data, we need to create the AutoSync that will automatically populate the custom data object from Salesforce.


Step 1 - Load the Inbound Integration Page

Go to Setup > Integration and click the Inbound tab.





Step 2 - Start the Create a new Data Source with External Call Wizard

Go to Create Data Sources > Create Data Source with External Call



We will actually need to create two Data Sources, one for leads, and one for contacts, so we can map the lead id and contact id correctly, and so we can grab the lead or contact's email address for mapping to the contact in Eloqua.  This guide will walk through the process of creating the lead campaign member auto-sync, you will need to repeat this process for creating the contacts auto-sync.


Step 3 - Provide the External Call Details


Provide the external call details and the Data Upload Source Details.  Configure your auto-sync to mirror the screenshot below.




Step 4 - Specify the Source Details

Select Retrieve as the action, and Campaign Member as the entity.


*Important* - Mark the checkbox to retrieve 18 character IDs.  Since Eloqua does not do lookups with case sensitivity, the 18 character id is required to ensure the unique code value is unique for lookup and matching.




Step 5 - Select Salesforce Fields

Select the fields to populate your custom object fields.




You will need to click on the Salesforce Related Fields - Campaign area on the right and select Name, that will be the campaign name for mapping in the next step.






Also, since this auto-sync is for the lead auto-sync, you'll want to open the Salesforce Related Fields - Lead object as well to select the email field for mapping in the next step.  When you create the contact auto-sync, you'll want to select the Email field from the Salesforce Related Fields - Contact object.





If there are other related fields you added during the custom object creation process, you'll want to select those fields here as well.


Step 6 - Select the Filter Details

To create an auto-sync, you'll need to have it filter by last modified date and Last Successful Upload.


Select last modified date in the Salesforce Campaign Member Fields column.




Select Greater Than or Equal as the operator, and click the drop-down carrot on the Expression and select Add Date.  Choose the Use the start date of the last successful upload option and click Save and Close.






The result should look like this:




Step 7 - Field Mapping

We now need to map the selected fields from step 5 to the fields we created in our custom object.  Since this is the lead auto-sync, we'll map the lead id, when you repeat this process for the contact auto-sync, you will map it to the contact id.




Step 8 - Specify the Upload Actions

This step is where we instruct the auto-sync to match the campaign member to the Eloqua contact record based off of email address.  Mirror you configurations to resemble the screenshot below.




Be sure you've marked the Map data cards field and have selected the correct source field for the object's email address.


Note: You'll want to select the Contact: Email field when you repeat this process for contacts.


Step 9 - Configuring the Auto-Sync


The Summary page can be a bit misleading, because you might not realize you need to schedule the auto-sync in this step.  At the bottom of the summary, select the Schedule automatic data imports using these settings option, and configure the interval in which you'd like it to sync.  You can configure it to run nightly, or at an interval as short as every 30 minutes.




Step 9 - Click Finish and Let it Sync


Once you click Finish you'll see a loading screen.  Do not leave this screen.  It may take quite a while to run for the first time because it's going to pull in all of the historical data.  Just let it run until it finishes.


Step 10 - Repeat this process for creating the contact auto-sync.

Execute steps 1 - 10 again, but this time configuring it for syncing contacts instead of leads.


Note: If an error has occurred, you can access the auto-sync configurations by selecting the "Management" tab at the top - and selecting "Auto Syncs".  You can then open an auto-sync and modify your field mapping, filter selections, and execution interval.


Part 4 - Confirming the Integration was Successful

You can confirm the integration was successful by either viewing the custom data object records, or creating a segment using the custom data object records.  I recommend first checking the custom data objects are populated and mapped to your contact records.


Step 1 - Confirm Custom Data Object Records are Populated

Go back to Contacts > Custom Objects.


Select the Salesforce Campaign Members custom object you created in Part 2 of this guide.


You should see a number in the Total Number of Data Cards field.


Click the View Data Cards button.


You should see a listing of the data cards, and in the right-hand column the Mapped field should be Yes.




When you open a data card, the fields should be populated, and the mapped contact record should be displayed.




Step 2 - Segmenting on the Custom Object

Now that you've confirmed the custom object records populated successfully, and the records were successfully mapped to Eloqua contact records, you can segment on this data.


Inside of a segment choose the Has Linked Record in Custom Object filter criteria.




Double-click the placed filter criteria, and select the Salesforce Campaign Members custom object you created.


You can then add up to three filter criteria to search for the specific custom objects records you want to segment on.








Custom objects are a powerful tool for evolving your Eloqua environment to a truly robust system for creating intelligent segments, nurture campaigns, and programs.  You can use custom objects for a wide variety of use cases, from campaign member tracking, to product usage tracking, to referrer source tracking.  If you have a highly customized Salesforce environment, custom objects can be a great way of porting over the custom objects from Salesforce into Eloqua for easy segmentation and scoring.