We have a contact limit in our contract with Eloqua and we were getting dangerously close to the limit. The company does not have the budget to pay for additional contact storage so we needed to find a way to lower our contact count without jeopardizing the integrity of our database. Another challenge is that we use SFDC and data syncs between the 2 systems regularly. We also needed to make sure that any contacts removed from Eloqua were not coming back into Eloqua from SFDC through auto synchs.


Goals for Success:

The main goal for success is getting below our contact limit to allow for acquisition of new contacts.


Solution Summary:

We decided to explore a way to delete unsubscribed and hard bounced contacts from Eloqua on a monthly basis. Unsubscribed and hard bounced contacts are identified regularly by a segment filter and are added to a CDO once a month. Then a contact checkbox field is marked and synced with SFDC to ensure the contacts do not return to Eloqua after they are deleted. Once the field is marked in SFDC, the contacts are deleted from Eloqua.


The following is an outline of the steps we took to implement this initiative.



We created a segment to look for semi-recent unsubscribes and hard bouncebacks.

Criteria is as follows:

Contacts who have unsubscribed 3 months ago or longer
Contacts who have hard bounced 3 months ago or longer


Important programs, list, and custom object

  • Program - This program will add to your shared list and mark records with the do not synch checkbox in Eloqua before moving to the following program builder.
  • Program Builder - This program builder will mark your checkbox in SFDC to ensure that records do not re-enter Eloqua from SFDC after deleted.
  • Program Builder – This program builder will automatically delete your contacts.
  • Shared List – Create this to save your unsubscribes and bouncebacks into regularly. This gives you a quick way to pull all of these contacts monthly to save to a CDO.
  • Custom Object – Create this to save your unsubscribe and bounceback data, so you still have it in Eloqua but it’s no longer clogging up your contact limit.


This process to identify unsubscribes and bouncebacks older than 3 months is always running and always evaluating. Once they are in the program canvas they will enter a hold step waiting for action by a member of the marketing ops team.

Once a month, marketing ops will save all the records into a CDO and then move records on through the process so they are deleted.



Any contacts who meet the criteria in the segment (details above) will be added to the program. They are added to a shared list and then a wait step.

Once a month, the marketing ops manager will export the shared list and upload to Custom Object that will save historical unsubscribes and bouncebacks.


Export Shared List

In the navigation go to Audience > Tools > Shared Lists > search for your shared list.

Click Export at the bottom of the list and make sure to select export ALL CONTACT FIELDS.



Upload List to Custom Object

After you’ve saved the list to your computer, navigate in Eloqua to Audience > Custom Objects > search for your custom object.

At the top right select Custom Object > Upload Custom Object Records.




Step 1: Data Source

Name your list and choose the data source.



Step 2: Upload Data Source

On the next page, choose your file then upload. Double-check the data in the preview to make sure it’s the correct list.



Step 3: Field Mapping

Uniquely Match on Eloqua Data Card Field: Email Address. (see screenshot below)

Be sure to map the fields using the Auto-Map Fields button.



Step 4: Upload Actions

Set the status of uploaded data cards to Registered.



Step 5: Summary

Review all the details and make sure that your email address is listed to receive a notification. Then click Finish at the bottom.



Move to next step in Program Canvas

After uploading the records to your custom object, head back to your program canvas. Move the campaign members from the 1000 Days Wait step to the Wait step right below it for 0.1 Hours. This will allow the contacts to continue moving through the program.


Update Rule - Mark To Remove: This step marks the SYSTEM – To Remove From Eloqua checkbox.


Has Lead ID? Has Contact ID?: These decision points will move contacts to the CRM Update program builder to update the Do Not Sync With Eloqua checkbox in SFDC IF a SFDC lead or contact exists.


If there is no lead or contact ID, the Eloqua contact skips the CRM update is immediately moved to the Auto-Delete program builder and is deleted out of Eloqua.


Program Screenshot



Program Builder Screenshot – Marking Do Not Synch in SFDC



Program Builder Screenshot – Auto-Delete from Eloqua




As a result of this program, we have been able to successful remove over 300,000 contacts from our database, keeping our database relevant and clean, making space for new contacts, and staying within our contact limit in Eloqua.



Helpful Luminary Courses

Email Deliverability, Convert with Custom Objects, Profile & Target, CRM Integrations, Fundamentals Series