We are currently working on a project, where we implemented a registration process using WFFM, EXM and Engagement Plans. We are facing one specific issue, regarding the contact identification with EXM. Before giving you the concrete issue and technical details, I would like to provide some context, by making a use case:
Use case
A married couple is sharing one device for surfing the web. The wife is registered on OurWebsite and is currently logged in. Her husband is fascinated by OurWebsite and would like to register too. His wife is logging out and then husband is using the registration form to register as a new user, inside the same browser window which his wife used before. He is sending the registration form and an email with a confirmation request is being send to his email address (wife and husband have different email addresses). He clicks on the confirmation link inside the email and is being redirected to OurWebsite, where he is now able to log in, with his newly created user credentials.
Implementation
- WFFM Save Actions are used to: Create and disable a user | Update the contact details | Load the contact into an engagement plan.
- The engagement plan is used to: Send the EXM Standard Message, which contains the confirmation mail | Enable the user, which is related to the contact, when a goal is triggered on the opt-in page for the contact | delete the user, when the goal is not triggered after 24h
Issue
Up until the point, where the email is being send, the process seems to work fine. But when the visitor is being redirected to OurWebsite the current contact may be the wrong one or two contact with different identifiers are being merged, since the contact of the current session is still identified to the wife. In the end, the triggered goal is not registered for the contact, which relates to the newly created user and the user is not being enabled.
Questions
We haven't investigated the issue to the smallest detail yet, but are facing three questions and hope that any of you could share some insight with us:
- With the usage of EXM and Engagement Plans we are heavily relying on contacts and the relation from contacts to the user. Are contacts suitable for such a process?
We are asking this especially with the thought in mind, that since we do so, we are expecting a 1:1 relationship of contact and user. We are not sure, if we are supposed to use contacts in this way and if our approach is the "Sitecore way" to implement such a process.
- Now that we are already this far in the implementation, what is "the best way" of solving our issue?
We are thinking of adding a step before the Sitecore.EmailCampaign.Cd.Pipelines.RedirectUrl.IdentifyContact
processor, where we would abandon the current session or release the current contact, if the current contact is already known and the identifier does not match the identifier, which is proposed by EXM.
Another possibility would be to work around, by passing custom parameters through the email and catch them later on to assure the success of the registration process (probably without engagement plans).
- What exactly happens internally, when a contact is already known for a session and is being identified again with another identifier?
Further information
Probably relevant is, that we are following the WFFM standard way to identify the contacts. Identifier = {Domain}/{UserName}
, UserName = Email
.
Also, we are working with Sitecore 8.2 Update-1 and EXM 3.4.0.
I am already very thankful for help and insight, that you may provide on this topic. If you would like to have any further information, please let me know.