Contact Count: Monitoring and Data Cleansing

Contact Count: Monitoring and Data Cleansing

Contact Count – Monitoring and Data Cleansing

Have you already heard about the “Contact Limit” or “Contact Count” within Salesforce Marketing Cloud? Or have you been contacted by your Account Executive because you exceeded the allocated amount of contacts? In this article you will learn everything you need to know!

What is the “Contact Count” and why is it important?

In every Salesforce Marketing Cloud contract there are some key parameters that you as an administrator need to be aware of. Some of these parameters are static things like included Studios and features. But there are also usage based parameters like the “Super Messages”, “API Calls per Year” or the included “Contacts”.

It is important to be aware of these limits in order to plan the usage based on campaigns, audience growth, integrations and everything else you are doing within Marketing Cloud. Knowing your limits and what usage you planned is also important as a “sanity check” for those numbers and knowing if a cleanup is required once in a while or as soon as you are contacted by your Account Executive because you reached the limits.

You might ask yourself what is considered a contact and therefore counted toward this limit? And how are contacts different from subscribers? The Marketing Cloud documentation states the following:

A contact in Contact Builder is an individual added to any contact database within your Marketing Cloud instance. A contact is also any other individual to whom you sent a message via any channel using Marketing Cloud.

(Source: Marketing Cloud Documentation – Contact Definition and Count Determination in Contact Builder)

In contrast to that, a subscriber is defined like this:

A subscriber is a person who has opted to receive communications from your organization.

(Source: Marketing Cloud Documentation – Subscribers)

Based on those definitions, every subscriber in Marketing Cloud is a contact but not every contact is a subscriber. A record is considered a contact as soon as it enters the system anywhere where a send context can be established. This means every record of a “sendable object” (Contact, Lead, User) transferred via Marketing Cloud Connect to Synchronized Data Extensions is counted as a contact. Every import, API load or manual creation in a sendable data extension or list is also considered a contact – even if you didn’t send or even intend to send to that person.

How many contacts do I have in use?

To find out how many contacts you are using, go to the parent business unit in your account and navigate to “Audience Builder > Contact Builder” and select the “All Contacts” tab. There you need to click on “All Contacts” for the total number to show up:

Another option is to run the “Contacts Counts” report in Analytics Builder.

How to find out if I need to clean up?

There are many types of contacts that you most likely want to clean up. The “Contacts Counts” report in Analytics Builder already gives you an idea by showing:

  • Contact Count
  • Distinct Email Addesses
  • Contacts per Channel
  • Leads from Sales/Service Cloud
  • Contacts from Sales/Service Cloud
  • Overlapping Leads and Contacts from Sales/Service Cloud (converted Leads)

On top of this high level view, there are specific audiences you can evaluate and clean up:

Contacts without Channel Addresses

A contact without a “Channel Address” is a contact that is available in Marketing Cloud but wasn’t assigned to any channel (email, mobile, etc.). This often happens with contacts that are synchronized from Sales/Service Cloud using Marketing Cloud Connect, but not used in any sends yet.

To find out if you have any of those contacts without channel addresses, you can use a specific extract type in Automation Studio, that is called “Contacts Without Channel Addresses”. Once this extract is executed, the result shows up in a data extension (“Contacts Without Channel Address”) which is available in the root data extension folder. For a detailed description check out the following documentation article: Marketing Cloud Documentation – Find Contacts Without Channel Addresses

To get rid of these contacts and to make sure they won’t re-enter the system, you need to find the source of them (e.g. synchronized data extensions) and prevent them from entering. For synchronized data sources, you can create a filter that suits your needs and only syncs the records you want to use in Marketing Cloud. Here are some typical filters:

  • Only records with an email address
  • Only records who have opted in
  • Only records who have a specific checkbox set to true (outsources the logic to Sales/Service Cloud for more complex criteria)

After you made sure the contacts won’t re-enter, you can use the “Contact Delete” feature to delete the contacts from your list to reduce your contact count. (see Marketing Cloud Documentation – Contact Deletion in Contact Builder)

Test contacts or faulty data

A lot of times Marketing Cloud accounts also include faulty data or a lot of test contacts that have been uploaded during setup or used when testing new campaigns or emails. Most of the time those aren’t cleaned up properly which leads to an unnecessary use of contacts.

To find such contacts you need to create a “Mobile List” in Contact Builder, remove the default filter for the mobile channel id and define your filters (including Contact Key != null).

Possibilities to find such contacts is by filtering

  • for certain words (e.g. test, demo, example, the company name of the agency who did the setup, etc.)
  • for certain patterns that don’t match your desired contact key (in a scenario where all contacts should come from Sales/Service Cloud you could filter for contacts that don’t have a contact key starting with “003” (Contacts), “00Q” (Leads) or “005” (Users))

Old and unused contacts

Sometimes contacts are deleted or anonymized in the Sales/Service Cloud, but not cleaned up properly in Marketing Cloud. Depending on the filter in place for the data sources this can be checked using queries where the “All Contacts” are joined with the Contact, Lead and User synchronized data extensions in a way that you exclude all the records who are currently in those data extensions – you can either do this using SQL or with a little help from DESelect.

Note: In order to be able to access “All Contacts” via SQL or DESelect you need to create a Mobile List with a filter like “Contact Key != null” first.

To allow this list to be used in DESelect, you (or your admin) need to make sure that either “Audiences” is selected in the “Available Data Extensions” or the option “Don’t filter. Show all data extensions.” is activated:

After this Mobile List is created, you can set up a new selection in DESelect that uses the mobile list as a starting point. You then add the Contact and Lead Synchronized Data Extensions while selecting “[Name of Mobile list] without matching [Contact/Lead Synchronized DE]”:

That’s it already and you have a list of records to check and possibly cleanup.

However, the best option is to make sure you don’t even get into the situation where a clean-up of deleted/anonymized contacts from the CRM is necessary. You can do so by incorporating the deletion from Marketing Cloud directly in your main deletion process in the CRM. It is as easy as doing an API call for an automated solution or deleting the contact manually within Contact Builer’s “All Contacts” list.

Duplicate Contacts

Duplicate Contacts can be identified by checking if multiple Contact Keys are present for the same channel address (Email Address, Mobile Number, etc.). This can be done using SQL or again using DESelect and needs to be done per channel.

Let’s have a look how this can be done for subscribers for the email channel:

  1. You create a selection that counts the SubscriberKeys there are for one EmailAddress based on the _Subscribers data view using a “Custom Value” of type “Aggregation”:

    2. As the first selection will give you all EmailAddresses along with how many times they are in the system, we need to create a second selection to filter out all records for email addresses that only exist once.

    3. In order to have those executed after another we can create a waterfall selection with both of them in it.

One very common reason for these type of contacts to clean up are converted leads, as they re-enter the system as contacts and therefore are assigned one lead-id and one contact-id from Sales/Service Cloud and therefore have a separate tracking history and are treated as individual records by Marketing Cloud and can be seen as duplicates from a contact count perspective.

Key Takeaways

  • A contact is counted as soon as it enters the system, no matter if you sent or intend to send to it.
  • Defining rules for contacts to enter the system are vital to keep your contact count under control (sync restrictions for synchronized data extensions).
  • Managing and carefully setting your contact keys to match for persons in your audience no matter the channel or source they enter the system is important to reduce the number of duplicates.
  • Regular reporting and contact list hygiene should be on your schedule as a Marketing Cloud administrator.
  • Converted leads that re-enter the system as contacts still count as leads (are counted twice).



Markus Dang

Markus Dang

Markus is a guest author at DESelect. He's a Marketing Cloud Unit Lead & Solution Architect. He is also a Salesforce Marketing Cloud Champion.

Stay Connected

Stay Connected

Reach the most targeted<br/> audiences in half the time

Reach the most targeted
audiences in half the time

Deselect icon
Subscribe to the Newsletter
Receive Salesforce Marketing Cloud tips,
tricks, and DESelect updates

By clicking the “Subscribe now” button, you agree to the DESelect Terms of Use and Privacy Policy.