For admins
Microsoft Dynamics 365 Customer Insights Journeys integration
Better Email syncs a finished Campaign to Customer Insights - Journeys as an email, with its personalization, sender and compliance settings filled in, ready to use in a journey.
How the integration works
What a sync creates. One email per Campaign and Destination, named after the Campaign. The first sync creates it as a draft; every later sync updates the same email. It carries:
- the subject line and preview text;
- a placeholder definition for every recipient field and condition, so Journeys resolves the personalization and dynamic content;
- on the first sync only, the sender, compliance profile, purpose and topic set on the Destination.
What it doesn't touch. Better Email doesn't create journeys, segments or send schedules, and doesn't file the email in a folder. Images stay on Better Email's image CDN and aren't copied into the Journeys asset library.
What it reads. The column definitions of your audience table, never its records, and the definitions of the triggers that can start a journey. The brand profiles, senders and compliance records for the Destination's email settings picker. The placeholder definitions already on the email, so bindings made in the designer survive a sync. With performance data on, the journeys that use the email and its aggregate insights. No contact data leaves Dynamics.
Ownership. The Application User creates the email, so it owns the record. Who else can edit it depends on your security roles.
Environments. An integration connects to one Dataverse environment. For separate dev, test and production environments, create one integration per environment and sync the Campaign to each. Each environment gets its own email.
Set up
1. Create the Application User
- In Microsoft Entra, register a single-tenant app for Better Email and create a client secret. Copy the
Application (client) ID, theDirectory (tenant) IDand the secret value. - In Power Platform admin center, open the Journeys environment, go to
Settings›Users + permissions›Application users, and add an application user for that app. - Give it a security role.
Marketing Manager - Businessis the simple option. For a custom role, grant what the features you use need:
| Used for | Privileges |
|---|---|
| Syncing Campaigns | Create, Read, Write and Append on msdynmkt_email |
| Recipient field sync | Read on the audience table: contact, lead or msdynci_customerprofile |
| Trigger fields | Read on msdynmkt_eventmetadata, customapi and customapirequestparameter |
| Journeys email settings | Read and Append To on msdynmkt_brandprofile, msdynmkt_brandsender, msdynmkt_compliancesettings4, msdynmkt_purpose and msdynmkt_topic |
| Performance data | Read on msdynmkt_email, msdynmkt_journey and msdynmkt_journeydependency, and permission to run msdynmkt_ChartWidgetDataCustomAction and msdynmkt_ListWidgetDataCustomAction |
2. Create the integration in Better Email
- Go to
Integrations, create an integration and chooseMicrosoft Dynamics 365 Customer Insights Journeys. - Enter the
Organization URL,Tenant ID,Client IDandClient Secret.Dataverse API Versiondefaults tov9.2. - Choose the
Audienceyour journeys address:Contact,LeadorCustomer profile (Customer Insights - Data). See Choose the audience. - Optional: turn on
Sync recipient fieldsandSync performance data. - Enable and save the integration.
There is no OAuth popup; Better Email requests its own tokens with the client secret. Saving creates a default Destination.
3. Set the Journeys email settings on each Destination
Journeys won't send an email without a sender, a compliance profile and a purpose. Set them on the Destination and new emails arrive with them:
- On the integration's
Destinationstab, open a Destination. - Under
Journeys email settings, clickFetch from Journeys. - Pick a
Sender, aCompliance profileand aPurpose, and optionally aTopic, then save.
Profile and purpose go together: with only a profile chosen, neither is set. The settings apply when the first sync creates the email, so a later change in the Journeys designer stays. For several brands or senders, add one Destination per combination. The Destination also holds the Default subject and Default preheader under Delivery defaults, and, under Access, who may sync to it.
Changing the integration's Organization URL or Tenant ID clears these settings on every Destination, because they are records in the old environment.
Sync a Campaign
On the Campaign's Review tab, click Sync to <integration name>. Review the new email in the Journeys designer and mark it Ready to send.
Subject and preheader. The Campaign's subject line and preheader go to the email's subject and Preview text. Without a subject, the sync uses the Destination's Default subject, then the Campaign name. Without a preheader, it uses the Default preheader, or leaves Preview text as it is.
Syncing again. Each sync through the same Destination updates the same email. A sync through another Destination creates a separate email. Each sync replaces the content and sets the email's name back to the Campaign name, so make changes in Better Email, not in the designer. Personalization bound in the designer stays for every name the email still uses; see Advanced: Journeys tokens.
Live emails. You can sync an email that is Ready to send and used in a live journey. It stays Ready to send, and live journeys send the new version after a minute or two.
More on this integration
- Personalization and segmentation: the audience, recipient field sync, trigger fields, column types, default values, conditions and code segments.
- Advanced: Journeys tokens: footer tokens and lists, for design-system developers.
- Performance data: sends, opens, clicks and journey status back in Better Email.
Troubleshooting
- Sync fails with an authentication error. Check that the organization URL is the right environment, that tenant ID, client ID and secret come from the same app registration, and that the secret hasn't expired.
- Sync fails with a permission error. Check the Application User's role against the privileges table.
Fetch from Journeyslists no senders. Only active senders with a from address appear. Add one underSettings›Brand profilesin Journeys.- "The binding attribute is invalid or does not exist". A recipient field's ESP field name isn't a column of the audience table. See Fields added by hand.
- A journey rejects the email's personalization. The integration's
Audiencedoesn't match the journey's audience. See Choose the audience. - A trigger field is empty in sent emails. The journey starts with a different trigger than the Campaign's
Journey trigger. Use the email in a journey started by that trigger. See Trigger fields. - Journeys warns about missing footer tokens. See Footer tokens.