When new features come out in D365 Marketing I love to check them out and learn as much as I can about them. When the Real-time Marketing segment builder was released I wasn’t the biggest fan, it felt like TOO much change. However, I am big enough to admit when I am wrong, and I have come to love and embrace the process of creating the segments now! So, although this has been around for a bit, I thought I would share my approach to using it, and point out some of the features that might not be immediately obvious. Hope this helps!

Create Segment From Query

From the Real-time marketing area, in the Segments area, click on New Segment from the top menu. Immediately you will see a different approach to getting started with the new record. Give your segment a name, then pick the target audience. It’s either Contact or…. Lead!!! (more on that in a bit).

Now, the next bit is your segment description. You will be forgiven for thinking this will just be to tell others what the purpose of the segment is, BUT it does actually have more benefit than that. Use it to type in something descriptive and then click Create.

Click to view in detail

The segment description is actually using something call natural language AI to try and figure out what you might want to search for. You can see that it has given me a result to show Account is ABC Co based on what I added to the description. I can click on Use (and also give it a thumbs up!).

Click to view in detail

This will then add the definition criteria to the segment canvas. I didn’t have to do a thing. 😊There will be a link at the bottom that I can refresh to see an estimated number of members for the segment and a link to view a sample of the included members. This will only show records you have access to, and will only show up to 100. It’s a preview at this point not all of the actual records that meet the criteria.

Click to view in detail

Although using this method might be useful, it will not always give you the most accurate results. For example, you can see above I have one record without an email address. There is also one record that is actually an inactive record, so I would really want to add in extra criteria to make sure those records are excluded.

Create Segment From Attributes

This next approach is likely the one you would use the most, and that’s to ignore the query assist option for now, and click on the top icon on the right and get started adding attributes directly from the Contact (or Lead) record. If I want to recreate the segment from the last example, I can start off and search for the Account field. You can see it shows there are three attributes found that meet that, and I can just click on the Account option.

Click to view in detail

This adds the Account field in to a group on the segment canvas. Then I can use it to state Account Is, and then find the name of the Account record to use as the filter.

Click to view in detail

Next I want to add in some additional attributes to filter further. I want to make sure the Email address contains data, the Bulk Email field is set to Allow and the Status is Active. Using the search box again, look for each of the fields in turn, then click the plus button next to them. Pick to add them to an existing group which will be Group 1 (the one that includes the Account attribute that was added).

Click to view in detail

The segment definition then looks like this where we are making sure any Contacts pulled back in to the segment match all four attributes set.

Click to view in detail

Now we can see that instead of the 5 members brought back in the first segment made by the query assist, we’ve narrowed it down to 2 that ACTUALLY should be included in the segment.

Click to view in detail

Create Segment To Target Leads

Now let’s look at creating a segment to target Leads. Although with Outbound Journeys your only option is to send Contacts through them, with Real-time you can send either Contacts OR Leads through a Journey. When creating a new segment we just make sure to pick Leads from the audience drop down menu.

Click to view in detail

Now the Target audience section is for the Lead table, and we can search for attributes in exactly the same way. So I can add Email, Bulk Emails and Status to the main Group.

Click to view in detail

Then I can search for the Qualifying Opportunity field and choose to add it to a New group.

Click to view in detail

This creates Group 1 and Group 2 which includes a connector between the two. This can be set as one of the following – or, and also, but not. I’m going to change this to but not.

Click to view in detail

So now we are looking for all Leads that have an email address, have Bulk Email set to Allow, are Open but not Leads that also have data in the Qualifying Opportunity field. There are different ways you could approach this, but this way it’s very clear that everything in the top section MUST BE MET but not any records that meet the criteria in the bottom section. This is just an example and not the exact way you must do this. 😊

Click to view in detail

Create Segment Including Or Excluding Members

You also have the option to create a segment and define specific people you want to include or exclude from the segment. Consider a static segment/marketing list where you pick and choose people currently, this is the same kind of approach.

Click to view in detail

You can then search for people by name, or use the advanced functionality to search and use a view.

Click to view in detail

Clicking on the people adds them to the lit of members to either include or exclude. Combining this with other criteria means the segment will include all those selected individually AND anyone that meets the criteria specified. If excluded members are set, they will always remain excluded even if they meet the selected definition in the segment canvas.

Click to view in detail

Now we can look at using related tables when building a segment. Once you’ve picked the audience target and are reviewing the attributes, you’ll notice the related tables section. There may already be a few listed for you. The great news is, we can easily add in tables to use in the segment to find the right people, and do it without having to go in to any settings area. Simply click on Add table from the top of the related tables section.

Click to view in detail

Then you can search for the table you need. I will add the case (incident) table and tick the box next to it. DO NOT be tempted to add all or a ton of tables… or you will really make things unmanageable and unusable for yourself. Once you’ve added the tables you cannot remove them later. Click the Next button.

Click to view in detail

Then it will show you which tables you are adding, and then click the Add button.

Click to view in detail

The table will immediately show in your list of Related tables (your list, not for all users which is something to keep in mind). You can see that the table is syncing. You can still begin adding attributes from the table in to your segment definition but you might not be able to see the sample of members for a while until the sync is complete.

Click to view in detail

After searching for an attribute and choosing to add it to the segment, you will be prompted to pick the path which is the relationship between the new table and the audience member. In this situation I want to go direct from the Case to the Contact field. Take the most direct path you can if it’s there as most times it’s likely to be the correct one.

Click to view in detail

What you might find is that there are several fields that are look ups to the Contact table, so you may need to set the relationship further. For Case, you can use the Contact field, the Customer field, Partner Contact and I also have Responsible Contact. So make sure you know which is the right one for your own requirements.

Click to view in detail

Then we can start adding the attributes. In addition to adding attributes to Groups, we can also add them to new groups within an existing group.

Click to view in detail

So here we have a field added to a new Group in Group 1. This makes it Group 1.1. This puts a grey background around it to show it’s a sub group within a group. Any subgroup within that subgroup would have a white background, then grey and so on… but I would suggest not having a mountain of subgroups as it would make it very complicated and likely to not give you the most accurate results.

In this example, I am also using a date field where I can use a relative date to see if the resolution date is within the past 7 days,

Click to view in detail

Adding in the same attribute in the sub group means a second clause can be added with on or before yesterday.

Click to view in detail

This gives us all Contacts that have an email address, bulk email is allow, status is active and were linked to at least one case that was closed within the past 7 days but the case wasn’t cancelled.

Click to view in detail

A few other things to look out for of interest. When creating a segment and looking for members, you can change the refresh rate. By default, segments will refresh automatically and be kept up to date dynamically. This means as things change in your database, Contacts and Leads will fall in and out of segments based on the values on their record and any related tables. However, you might build a segment using criteria but want it to only include people at this point in time. You can change the refresh rate to Static snapshot from the settings menu. This will mean no new members will ever be added to the segment in the future, and no updates will happen.

Click to view in detail

This feature I love, and that is the segment size graph and the ability to see how it has changed over time either growing or decreasing in size. You can hover your mouse over the data points on the line graph and see what the segment size was at certain dates within the past 7 days, 30 days or 6 months.

Click to view in detail

Also, make sure you include create yourself a new view for your Real-time Marketing segments using the Source field as your filter to just show those with the source of Real-time marketing. You can also add in the attribute of Base entity to see if your segment is targeting contacts or leads as the audience.

Click to view in detail

Using Segments In Journeys

Finally, when it’s time to create your new Journeys, keep in mind that you can still use all of your Outbound segments in a Real-time marketing journey which is great (but not the other way around). This means when searching for your segment, you might need to look a bit harder to find the right one. You can press enter while in the segments lookup field and then click on Advanced lookup.

Click to view in detail

From here, you can change the view being used to show your segments and then change it to the lovely new view (system or custom) you created. Now I can immediately find the right one!

Click to view in detail

Have you started using the Real-time Marketing Segments? Do you find it easy to find what you are looking for? Share in the comments below so others can learn from your experience too!

Check out the latest post:
Predefined Placeholder Access In Customer Insights - Journeys

D365 Marketing Weekly
Have you seen the D365 Marketing Weekly newsletter yet?
A weekly issue covering features, functionality and news on the topic of Marketing, specifically covering Dynamics 365 Marketing and other interesting tools and tips for anyone interested in the subject.
Subscribe Here
This is just 1 of 456 articles. You can browse through all of them by going to the main blog page, or navigate through different categories to find more content you are interested in. You can also subscribe and get new blog posts emailed to you directly.

53 thoughts on “A Guide To Real-time Marketing Segments

  1. I haven’t found the Query Assistant very useful. I have tried different words and orders to try and get a segment that I was trying to create and every time it produced nothing like the segmentation required.

    Is there any guidance that I can adopt to get better results?

    1. Honestly Mike, I would agree. I am not the biggest fan. I wanted to point it out because it uses the information you add to the Description, so showing it has a purpose other than just for internal notes. I had to look at the existing ones to try and understand how it might work. So agreed, not all that useful so no real guidance other than maybe use your own logic 😊

    2. Hi Mike, what did you input in query assist? Would like to try it. Thanks!

    3. Mike, Gaju works for Microsoft, so asking from the perspective of maybe being able to review in the software. Just FYI! 😊

  2. HI Could you tell me how can I change the “ready to use” status of segment in real time marketing in order to delete that segment.?

    1. Hi Shivraf, for some reason at the moment, there is no way to change the status OR delete a Real-time marketing segment. Hoping that it gets added in soon!

  3. Excellent article. One comment though. Although in theory it’s great that a user can choose to add a table to the list available from the Segment rather than having to ask a Sys Admin to update the Dataset Config in the settings, I think the reality could be that users of the app could add tables unnecessarily or make mistakes. Do you know if there is there a Security Role setting to turn this functionality off?

    1. Hi Deb! 😊 – I agree with you, users could end up adding all kinds of tables without even realising what they are selecting especially if they just don’t know D365 in general. This could lead to all kinds of segment logic that never really gives the results they want. At the moment there isn’t a security role or feature switch for this so it isn’t something that can be turned off. Hopefully we see that in the future!

  4. Have you found a way to do behavioral segments in real time? For example – I want to send an email to everyone that opened our emails last month. I can do that in outbound, but I can’t access the clicks on real time emails in outbound. But in real time I can’t seem to access the real time clicks either.

    1. Hi Catrina, I know this is coming for Real-time Marketing. Hoping it will be there in the May release. Fingers crossed!

  5. Hi Megan
    Are you missing, I know I am, the possibility to add traverse clause relationship in RTM?
    I find it strange that this possibility is not included OOTB in the new segment builder. This limit us to not be able to segment on a child account for a parent account where the lead/contact relationship is connected to the parent account.

    1. Hi Mattias. Could you explain a bit further what you are trying to achieve? I don’t quite follow you. What is the relationship between the Contact to the Child Account if that Contact is actually linked to the Parent? What logic would you be interested in from the Child Account?

      Is it something like this:
      * Find All Contacts where their Parent Account is the Parent to at least one Child Account?

    2. Hi
      I will try, it’s not that complicated but I think I managed to give you a bad explanations.

      I want to create a segment with contacts where I find all contacts where their parent account, has a parent account with a classification on A

    3. Thanks Mattias, OK that makes sense in what you are trying to do. I cannot find a way either unfortunately!!! Will raise it to Microsoft and see if this will come in the future!

  6. Thanks for this overview, Megan. What I find a bit frustrating is that you can’t reference other segments, for example I would like to create 1 global ‘Marketable Records’ segment and then use that as the base for my criteria i.e. in Marketable Records segment AND ALSO x,y,z

    1. Hi Jon, if you are on the latest version you should be able to do this.
      segment in segment

    2. Thanks for confirming that Megan, I have requested that we get upgraded to the latest version.

      The other issue I am encountering is selecting based on a multi-select list, it works if I use fieldname is x, but if I use fieldname contains x then it throws an error:

      Failed to parse query for segment c0742196-8d20-ee11-9966-002248c87a57. Query: ‘PROFILE(contact).RELATE(contact_customer_accounts, account_1).FILTER(account_1.ecosystem MULTICHOICECONTAINS 923020004)’ Error: $Invalid query language: Line: 0, Position: 118, Column: 118: Syntax error, expected: StringNode

      Is this an issue you’re aware of?

  7. It would be nice to be able to export segment members like Outbound, only see a limited set and then not being able to export is complicating our business process as established from working in Outbound.

  8. Hi Megan,

    By in large RTM segment building is awesome – I’m just having some creating segments, and wondering if you’ve struck the same thing. Issues being:

    – For certain segments, once live I can’t edit or delete them (the options are greyed out). The reasoning in the tooltip says that the segment I just created is being used in another segment or journey… which is obviously not the case.

    – Other issue is around segments that contain over 5 segments . They won’t go live, and the red error bar that appears when I try to go live, doesn’t have any description – just an X.

    Hoping you’ve heard of these before and have some idea how to get around them.


    1. Hi James, for the new segments that say they are being used, have you added criteria that includes any other segments perhaps? Wondering if that might be the issue?

      For the red error bar, I am not sure it’s based on 5 segments, but maybe more than 5 groups. I added a bunch of segments, over 5, but also had another group block too. I had to delete blocks until I had 5 before I could publish it. I will raise as a bug to Microsoft. At the very least there should be an error message explaining what the issue is.

    2. Thanks for your reply Megan,

      – For the new segments, I’m not using any criteria that includes other segments. I was wondering if this is occurring when querying other data tables (not the contact record itself). It’s a guess though. I’ll follow up with Microsoft.

      – Thank you for raising the second issue with Microsoft. It would be good if they could at the least just add in an error description.

      Thanks again for your help,

    3. After raising it, they did confirm that it’s based on the groups and currently having a limit on the number you can add. They have acknowledged that an error message is needed and hopefully are going to increase the number of groups allowed. No idea how long it would be to see either of those things unfortunately!

  9. Hi Megan,
    Do you know what you can do with the ‘filter by data tables’ option when you add a field from a Related Entity in the ‘Path selection’ window? I can’t find anything online yet, so maybe you figured it out 😉

    1. Hi Renée, yes of course. When adding other tables there can be a lot of different relationships and sometimes it’s a lot to scroll through. This option just allows you to filter to only show the relationships that include a specific other table. So in this example, I can find relationships from the Event Registration to a Contact, but only those that go through a Check-In record. Does that help?

      Filter by tables

  10. Hi Megan, all. Do you know when they will add the RT functionality to edit a segment, edit an email live in a journey and delete segment, with the sept deadline for new customers only getting RT and us trying to move everything seems like it’s time. The RT system is getting very messes. I haven’t checked on what the current best practice is for a live everygreen journey to keep those in it but update segments or emails while improving. I am sure by early 2024 it will be nice to be on RT with this push.

    1. Hi Gus, I do not have any additional insight in to this unfortunately. Like you, I am hoping this all comes very soon for my own clients!!!

  11. Hi Megan, I’m trying to make a segment which is a combination of other segments. This works fine, if I’m the owner of the segments that I want to combine. But if I create segments for my customer, and he wants to create a combined segment based on the segments I’ve created for him, he can’t find these segments because I’m the owner. I haven’t find the option yet to assign an RTM segment to someone else, or to give other people access. Have you? Thanks in advance!

    1. Hi Mirjam, ah that is ANNOYING that there is no assign option, I hadn’t noticed that before! You should be able to go to the old Advanced Find and search for Segments and reassign them that way for now.

  12. Hi Megan,
    Anyone tried to create a segment from an Excel file, that it contains Contacts?
    Thanks in advance?

  13. Hi Megan,

    Have you found a way to mimic the group functionality as it stand in outbound? In outbound I can have a group of OR for the same field clustered under one AND value.

    In Real -time a whole group had to be OR/AND?

    1. Hi Harley,

      Add your first group, then you can add another group and set the join between the two groups (and also, or, but not). In your next group, as soon as you add more than one attribute, you can then set the logic on that group to be either ‘and’ or ‘or’. You can then add a sub group which has the ability to set as ‘and’ or ‘or’.

  14. Hi Megan,

    do you know why certain tables might not be showing up in ‘+Add table’ even though they are in fact related to the contacts table? And is there a way to add them to the list of tables?


    1. Hi Sean, I do know why! The table must have the Track changes box selected. If that isn’t ticked, you can’t use it in the segments.
      Track Changes on Table

  15. Just to follow up on my question, the related table I’m trying to add to the segment is a custom table called ‘projects’. ‘Projects’ is the other side of a many-to-many relationship with contacts. This many-to-many relationship was manually created with another custom table as the bridging table.

    I am guessing that this is the reason it’s not showing up in ‘+add table’. I’ve set up an out-of-the-box many-to-many relationship as a test and I can see the custom table on the other side of the contacts custom table is showing up in ‘+add table’.

    I hope my rambling makes sense.


    1. Check the track changes field first. If it’s ticked and you don’t see it, then it could be your relationships and there being no logical link that makes sense to use. If it isn’t ticked, tick it then save and publish the table and try adding to your segments again.

  16. Hi Megan,

    is it possible to create a segment from a fetchxml query?


    1. Hi Sean. No, not something you can create within the marketing app.

  17. Hi Megan,

    Track changes worked an absolute charm. Thank you so much, spent hours trying to figure this one out 😁.

    Would be great if MS added a small note below ‘+add table’ that mentioned that track changes must be enabled.

    Have a great weekend and thanks for all your marketing help!!

    1. You are very welcome Sean. Thanks for being my number 1 commenter!!! 🥇😉🪭

  18. Hi Megan. You are super helpful. We have a dynamic RTM segment created from behavior, email clicks. We’d like to send a sequence to them (or even just a D365 email). How can we get to those contacts to a list or view/query to D365 from M3565? I don’t see a way to access those members like with outbound segment (segmentmember) or sales accelerator (segmentid) options in query. I know someone mentioned waiting for download but that is manual and isn’t avail yet anyway.

    1. Hi Gus, what are you referring to with M3565? Do you mean D365 Marketing or something else? I think you mean Marketing, just never seen it referred to in that way. There is currently no way to create a view based on members of a RTM segment. I hope it will come soon, but it’s not possible yet.

  19. Hi Megan,

    I’d like to get your thoughts on something strange I’ve discovered.

    It looks like Advanced find and Segments handle ‘date only’ fields differently, Segments use the actual value and Advanced find uses the formatted value.

    In Summer time, when the clocks go forward, the actual date value gets stored as the previous day’s date with a time of 23:00.

    E.g. If I add a date of 24/04/2024 to a date only field, the actual date is saved as 2023-04-23T23:00:00Z, and the formatted value is displayed as 24/04/2024.

    When I filter on the date field in a Segment it uses the actual date, which is obviously wrong.

    I have found the below link to change how dates are saved going forward, but this doesn’t help with existing records.

    Any thoughts on how to use the formatted dates in segments rather than the (incorrect) actual date.

    thanks a million,

    1. Hi Seán, ah that is annoying! I guess we can’t really complain that the marketing app is actually doing things right in this case. 😉 just annoying it’s doing that when other areas are wrong! Have you tried doing something like on or after then on or before in two different rows in the same group? Sorry, I have nothing else that is clever to suggest. 😞

  20. Thanks Megan for getting back to me, unfortunately looks like no way around this.


  21. Thanks Megan,

    there doesn’t seem to be a way around it, it’s more of an issue with the dataverse date-only fields.

    Thanks a million,

Leave a Reply

Your email address will not be published. Required fields are marked *