Why we need it?

D365Marketing has some great touchpoints to include in a customer journey. However, you might still want to talk to your customers via a channel that isn’t OOOTB, like SMS or WhatsApp or Viber, etc.

How does it work high level?

To add a custom touchpoint, we need to add a custom tile on the customer journey.

The idea is we add the custom tile, then when the contact passes through, an OOTB entity called Custom Channel Activity gets generated, which has a link to the contact that triggered it. To plug the desired custom functionality, we will trigger our implementation on the creation of the custom channel activity.

That record (Custom Channel Activity) will get generated only if its respective compliance GDPR flag on the contact is set to false, other wise nothing will happen.

What we need to create it in under 10 minutes?

  1. A solution and a publisher
  2. New entity hooked to the custom tile
  3. A true/false flag on the contact record to ensure GDPR compliance
  4. Two web resources defining the custom tile (CSS & XML file)
  5. A flow, workflow or a plugin


Where to start?  - solution and a publisher

Go to https://make.powerapps.com/ > Select the right environment from the dropdown -top right >  Solutions  > New > Fill in the config.



Clicking the + in the Publisher box, will give you the option to create a new one. My one has nothing more than the below config

In this solution is where you want to keep all your changes.


New entity

I will call my one FireText SMS, because in my next blog I will show you how to send a text message as part of a customer journey.

Back in your solutions > click New > Entity > fill in the config > Create. Keep a note of the name of your new entity (not the display name!), you will need it shortly.



GDPR compliance flag on the contact

The purpose of this custom tile is to implement a new touchpoint with a customer. This means we need to give them the option to unsubscribe or not receive it. The built-in mechanism the product has is, it requires an on/off flag on the contact and only if that’s set to false, only then the OOOTB functionality behind the custom tile works.  To add the flag:

Back to your new solution > Add Existing > Entity> Contact > Next > Add > then back in your solution double click on contact > Add field > fill in the config > Done.

Keep a note of the name of this field too because we will need it as well (It is case sensitive!)


Web resources

The magic that drives the custom tile showing up in the toolbox on the customer journey designer is driven by 2 web resources. – CSS and Data XML ones.

Let’s add the CSS one first.

In the solutions, click New > Other > Web Resource > fill in the config.

The body of my CSS file is as such




 >Save > Publish.


And now let’s do the same with the second web resource. In the solutions, click New > Other > Web Resource > fill in the config > Save > Publish.

 At this point you can already see it in the Marketing app. Refresh your screen > Click on Customer Journeys > New > Blank and notice the new tile that has appeared.



A flow, workflow, or a plugin

And last but not least, you need to tell the system what you actually want to happen to the contact when they go through your custom customer journey tile. The options are plugin, workflow or a flow. We will look at a few options for a flow implementation in the next few blogs. Regardless of what it is, we want to trigger it on creation on Custom Channel Activity.



And that’s us done. For now, I will leave it to your imagination to come up with custom touchpoints you want to build. I will give you a few ideas in the next few weeks. Watch this space.


Our take on it

Once we have the steps, creating a custom tile is indeed really easy to do. The first time I did it, I never realized the schema names were case sensitive, so watch out for it. Give it all a go and let me know how you get on. Once you know how, 10 minutes is a generous ETA to get it done.

Any questions, do let me know - Twitter, LinkedIn