When EXM dispatches the emails campaigns, it encrypts every link in the message body. A typical example of an encrypted link is
http://{your_website_domain}/sitecore%20modules/Web/EXM/RedirectUrlPage.aspx?ec_eq={encrypted_value}
EXM.CryptographicKey
and EXM.AuthenticationKey
configured in the ConnectionString.config
file are used to encrypt and decrypt the query string in the email campaigns sent to the end-users. So, make sure that both keys are configured correctly.
It is important to note that the test emails don't encrypt the links!
Also I would suggest to check on modifyHyperlink
pipeline configuration in Sitecore.EmailExperience.Core.config
file, it is being executed for every link in an email and supplements the link URL in the email to a RedirectURL link with all required URL params. For example:
<modifyHyperlink>
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.SkipAnchorLinks, Sitecore.EmailCampaign" />
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.SetServerUrl, Sitecore.EmailCampaign" resolve="true" />
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.SkipAlreadyProcessedHyperlink, Sitecore.EmailCampaign">
<RedirectPagePath>/sitecore%20modules/Web/EXM/RedirectUrlPage.aspx</RedirectPagePath>
</processor>
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.MapHostname, Sitecore.EmailCampaign" resolve="true" />
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.SetAnalyticsQueryStringParameters, Sitecore.EmailCampaign" />
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.HandleInternalLink, Sitecore.EmailCampaign" />
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.GeneratePreviewLink, Sitecore.EmailCampaign" />
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.GenerateHyperlink, Sitecore.EmailCampaign">
<RedirectPagePath>/sitecore%20modules/Web/EXM/RedirectUrlPage.aspx</RedirectPagePath>
<UrlQueryKey ref="settings/setting[@name='QueryStringKey.RedirectUrl']/@value" />
</processor>
<processor type="Sitecore.Modules.EmailCampaign.Core.Pipelines.GenerateLink.Hyperlink.EncryptQueryString, Sitecore.EmailCampaign">
<param desc="queryStringEncryption" ref="queryStringEncryption" />
</processor>
</modifyHyperlink>