Has anyone had issues with contacts created via the xConnect API not enrolling in marketing automation plans?

We've created a custom job which pulls in contact information from an external source and adds it to xDB via the xConnect API. We're using a custom Source for the identifiers and setting a bunch of custom facets (as well as some OOB ones), and that all works fine. I can see the contacts coming up when I search for them using segments and lists. Great.

However those contacts don't seem to want to enroll in any marketing automation plans. If I use List Manager to upload a contact with the same data, they are added to the MA plan, however if the contact was added by our custom code, they're not.

My guess is I'm doing something wrong when I add my contacts. The code looks something like:

// variables 'source' and 'identifier' are passed in earlier
XConnectClientConfiguration cfg = GetXConnectConfiguration();
using (var client = new XConnectClient(cfg);)
    if (!string.IsNullOrEmpty(source) && !string.IsNullOrEmpty(identifier))
        var contact = new Contact(new ContactIdentifier(source, identifier, ContactIdentifierType.Known));

Am I missing anything extra around the ContactIdentifier? I've noticed when I look in my shard DBs that contacts imported via the list manager have entries in the ContactIdentifiersIndex table, but the ones I've added don't.

These are the records in the ContactIdentifiers and ContactIdentifiersIndex tables for a contact imported via list manager: ContactIdentifiers and ContactIdentifiersIndex entries for contact imported via list manager

And these are the records for one of the contacts created via the xConnect client: ContactIdentifiers and ContactIdentifiersIndex entries for contact imported via xConnect client

Has anyone else faced this issue before? It might be nothing to do with how I'm creating the contacts, but it just seemed like the only difference I could find.


1 Answer 1


It turns out this had nothing to do with how I was adding contacts or their identifiers or their facets. It's to do with interactions.

Contacts aren't enrolled into a marketing automation plan until an interaction takes place which triggers the enrollment condition to be evaluated. This means that an engagement plan needs to be activated before an interaction takes place. Existing contacts that might match a condition for the engagement plan won't be enrolled straight away.

So - lack of understanding on my side rather than anything wrong with the contact creation. I thought I'd post this as an answer in case anyone else is wondering the same thing.

  • 1
    This is right. MA is event driven. Some sort of event needs to happen for MA to interrogate the contact.
    – Chris Auer
    Mar 5, 2021 at 15:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.