Why are records missing from my Campaign Monitor segments?

Forgive the long detailed answer but updating data in Campaign Monitor is quite complex and there are few ways to do it. Segments are based upon custom fields contained in your Campaign Monitor subscriber lists.  A subscriber record in Campaign Monitor will need to have a value that matches the segment criteria. If records are missing from your segment there are a few easy checks you can do in the order below:

Campaign Monitor
  1. If the custom field in Campaign Monitor is a picklist ensure the values are exactly the same as those in Salesforce.
  2. Find a subscriber that should be in the segment but is not.
  3. Check the subscriber to see if they are active on the list, records that are not active will not be updated.
  4. Does the subscriber have the correct values to be part of the segment, if they are correct the problem is with the segment itself?
If you are happy the points above are correct and the problem lies in Salesforce please copy the email address.

  1. Paste the email address into the Salesforce global search.  If you have more than one result (i.e. duplicate records with the same email address) this could be a problem.
  2. If you have only one record check to see:
    1. If the value in Salesforce is different from Campaign Monitor.
    2. They are active on the subscriber list the segment relates to.
Again if you are happy with the points above the next step is to check the subscriber list itself in Salesforce.

There are two ways our integration can update a custom field in Campaign Monitor.  The import wizard of field mappings.:

Import Wizard
The import wizard requires a source e.g. a list view, report, campaign, or SOQl query. 

Check to make sure that:
  1. The record you are looking for is included in the source.
  2. The field you are segmenting upon is included in the source.
  3. On the import wizard mapping screen, the field is mapped.
  4. The import has run recently and successfully.

Field Mappings
If a person is active on a subscriber list that has field mappings setup when the Salesforce record is edited it will fire a trigger to update Campaign Monitor.  Check to see that:
  1. Field mappings have been set up on the subscriber list
  2. The field the segment is based upon is mapped in the direction of Campaign Monitor to Salesforce
To test field mappings you have two choices:
  1. While on the field mappings click the Retrospective Sync button.  This will kick off a process to update all records that are active in the subscriber list.  Once the process has run check to see if the record has been updated in Campaign Monitor.
  2. Go to the person contact or lead record in Salesforce and click edit, without making changes click save.  This will fire our trigger and attempt to update the data in Campaign Monitor.
If the record has been updated this points to a problem with the trigger most likely permissions or a conflict.

Although we use standard Salesforce triggers, they can conflict with other code. A trigger fires when a Salesforce record is changed; this might happen by a user or an automated process. If there is a conflict, it could stop our code from executing as expected. It is tough to diagnose this type of problem.

When a trigger fires, it needs specific permissions. So if the user editing the Salesforce record (which fires our trigger) does not have one of our permission sets the trigger will fail. If this is the problem, it is straightforward to correct by assigning a permission set this article explains how. 

Long term solution
Although field mappings have their place, you might want to consider switching to our import wizard. Or you could use the import wizard as a safety net to run alongside your field mappings. The import wizard runs as scheduled APEX batch code which means it is far less likely to encounter conflicts. Permissions are not a factor as you can only set up the wizard if you have permission, the code then executes under your Salesforce user. 

If you'd like to use the import wizard as a safety net I do have a few suggestions:
  1. Create a Salesforce report that contains the fields you are using in-field mappings.
  2. Filter that reports so that it only includes records that were last modified today.
  3. When you set up the scheduling of the import wizard choose to have, it runs every hour of every day.
By using this approach should the field mapping not work the import wizard will keep Salesforce and Campaign Monitor in sync. Filtering on records only modified today makes the import very efficient, which is better for your overall Salesforce Org performance. 

If you have run through the checks above and ruled out all of the points above there might be another issue, particularly to your Salesforce org.  If you can please provide all of the following (please do not send Campaign Monitor web links as we cannot open them) we can try to diagnose with our developer logs:
  1. The email address you have been working with.
  2. The field is not updating.
  3. The name of the subscriber list.
  4. The name of the segment.
  5. Grant Login Access (steps below)
Grant Login Access
Access can be granted by using the following steps:

1. Click on your name in the upper right-hand corner of the screen next to Help & Training. 
2. Click "My Settings". 
3. In the quick find type "Grant" and then select Grant Account Login Access
4. In the "Access Duration" field next to "Beaufort 12 Limited " please set to 1 week of access
5. Reply to this email to let us know access has been granted

Please note you need to be a Salesforce System administrator to grant access to third parties. 
Related articles
How to guides
Contact Us