Announcements
No record found.
Hi everyone,
I'm trying to set up a custom double opt-in process in Customer Insights – Journeys, and I could use some guidance.
I've created a custom boolean field on the Contact entity. When this field is set to "Yes," it triggers a journey that sends an email to the contact. What I want is for that email to function like Microsoft's standard double opt-in email — meaning when the contact clicks the confirmation button in the email, it should automatically create a Contact Point Consent record (opt-in) for the Commercial purpose. It would've been so easy, if i could just reuse the same DOI email as Microsoft generates. Unfortunately, that does not work.
I've looked into the built-in DOI process, but in this case I need to trigger the opt-in manually (i.e., from a seller or internal action, not from a form submission).
My questions
How can I build an email with a confirmation button that behaves like the standard DOI, and directly creates the opt-in?
Is there a way to include the standard DOI link or token in a custom email?
Or is there a workaround using a marketing page/form that submits the consent when opened/clicked — without needing the contact to fill anything out
Any ideas, best practices, or documentation links would be greatly appreciated.
Thanks in advance!
Custom Double Opt-In Trigger
Yes
html
CopyEdit
<script>
>
document.addEventListener("DOMContentLoaded", function () {
.
(
,
() {
setTimeout(function () {
var form = document.querySelector("form");
form =
);
if (form) form.submit();
(form) form.
();
}, 500); // wait for form to load and prefill
},
});
</script>
arduino
https://yourdomain.com/doi-confirmation?email={{contact.emailaddress1}}
https:
The built-in DOI process is tightly coupled to marketing form submissions, and the DOI email link is not exposed for reuse.
You cannot generate or insert that token manually into a custom journey/email.
Step 1: Create a Minimal DOI Marketing Page + Form
https://yourorg.crm.dynamics.com/marketing/pages/confirm-consent?id={{Contact.ContactId}}&email={{Contact.EmailAddress1}}
window.addEventListener("load", function() { // Wait for form to render, then trigger submit setTimeout(function() { let form = document.querySelector("form"); if (form) form.submit(); }, 500); });
Under review
Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.
Congratulations to our 2026 Super Stars!
Thanks to all of our 2025 Community Spotlight stars!
These are the community rock stars!
Stay up to date on forum activity by subscribing.
ManoVerse 180 Super User 2026 Season 1
11manish 123
CU11031447-0 100