In 2021, Apple introduced new privacy protection capabilities for their native Mail app. This app now includes Apple’s Mail Privacy Protection feature. Basically, senders cannot use tracking pixels anymore to collect information about recipients who have chosen to turn on Apple’s Mail Privacy Protection feature.
Adobe Campaign provides capability to use tracking pixels to track email opens. You can use this capability not only for targeting and campaigns, but also for metrics. For example, you can use email open rates to measure campaign effectiveness and user engagement. In short, segmentation, targeting, and metrics might be affected in your campaigns.
Apple’s new feature is the shape of things to come in the industry in terms of email privacy protection. We strongly recommend that you follow Adobe’s recommendations.
Assess how these changes affect your current campaign triggers. Identify the workflows in which email opens are used as a criterion for segmentation, targeting, or retargeting. Read the tips and tricks.
Preserve your data and consolidate your current knowledge on devices. You can base key performance indicators (KPIs) on the user agent. For example, you can build KPIs around profiles of persons who use iOS and Apple’s Mail app. Read the tips and tricks.
Archive your tracking logs beyond the retention period of Adobe Campaign:
nmsRecipient
).Determine which proportion of your audience uses Apple’s Mail app on an iOS device.
Using this assessment, you can identify potential anomalous gaps and their cause. You can determine whether a gap is due to campaign performance issues or to Apple’s privacy protection functionality. Read the tips and tricks.
Above all, we strongly recommend that you proactively reassess your campaign strategy and your campaign performance metrics. You can refocus on more reliable metrics, for example, click-throughs, product views, and purchases.
We recommend that you explore currently available data and assess the correlation between open rates and other metrics. If these metrics are consistently correlated, then you can improve your triggers with a good level of confidence.
To gather insights from Adobe Campaign data, you can use out-of-the-box reports:
Operating Systems report
To identify the proportion of visitors per operating system and per version, use this report. Read more.
You can view the breakdown of visitors per operating system in relation to the total number of visitors.
For each operating system, you can view the breakdown of visitors per operating system version.
Breakdown of opens report
To identify the proportion of email opens per operating system, use this report. Read more.
You can identify the workflows in which email opens are used as a criterion for segmentation, targeting, and retargeting.
To do this, you can use the type attribute of the tracked link URL (url/@type). For email opens, this attribute is set to Open. This attribute is available from the query editor, the Query activity in a workflow, and predefined filters. You can use this attribute as a targeting criterion for marketing campaigns.
In this example, a marketer wants to send a reward offer to the recipients who opened a specific delivery email within the last seven days and made a purchase over the past month. In workflow queries, you can use email opens in various ways:
You can use email opens as a targeting criterion in a query.
You can specify, as a filtering condition, that the URL type of the tracking logs of a specific delivery must be set to Open.
You can use a predefined filter. Learn more.
You can use this predefined filter in query activities in workflows.
From a workflow, you cannot view the targeting criteria of a predefined filter.
To retrieve the list of workflows in which email opens are used as a targeting criterion, you must query the xtk:workflow
schema. The content of the workflow is stored in the XML memo (data) field in XML format.
You can specify that the workflows must include this content:
expr="[url/@type] = 2"
This targeting criterion means that the type of the tracked URL must be set to Open.
You can use this example of implementation to identify the workflows in which email opens are used as a targeting criterion and to send a notification to the campaign operator of your choice. You can use this implementation for these purposes:
This example shows a custom implementation in a single technical workflow.
The package is provided only as example and is not supported by Adobe as a product feature.
You might need to adapt the sample code to your campaign implementation.
The end user is the sole responsible for installing and using this sample package.
We strongly recommend that you test and validate this package in a non-production environment.
Download the sample package and install it. Learn more.
After you have installed the package, you can access the workflow from the folder that contains the out-of-the-box technical workflows in your instance:
/Administration/Production/Technical workflows/nmsTechnicalWorkflow
From the user interface, choose Administration > Production > Technical workflows.
The workflow comprises these main steps:
The workflow comprises these detailed steps:
The initial activity is a query activity in the xtk:workflow
schema. This activity is used to find, in the according instance, the explicit workflow queries that include email opens as a targeting criterion.
A list of workflows is returned as a result.
Because this information is reused, the name of the working table is stored in a global workflow instance variable.
A second query is used to find the predefined filters that include email opens.
A list of predefined filters is returned as a result.
This list of predefined filters is used to find the workflows in which these filters are used.
Both lists of workflows are merged into one list.
For this purpose, JavaScript code is used.
const queryPredFilter = xtk.queryDef.create(
<queryDef schema={vars.targetSchema} operation="select">
<select>
<node alias="@id" expr="@id" />
<node alias="@name" expr="@name" />
</select>
<where/>
</queryDef>
).ExecuteQuery()
var qDef =
<queryDef schema="xtk:workflow" operation="select">
<select>
<node expr="@id"/>
<node expr="@internalName"/>
<node expr="@label"/>
</select>
<where>
<condition boolOperator="OR" expr={"data like '%expr=[url/@type] = 2%'" }/>
</where>
</queryDef>
for each (var filter in queryPredFilter) {
//logInfo (filter.@name);
var condition;
condition =<condition boolOperator="OR" expr={"data like '%" + filter.@name + "%'" }/>
qDef.where.appendChild(condition);
}
var queryWorkflowList = xtk.queryDef.create(qDef);
var workflowList = queryWorkflowList.ExecuteQuery();
var sWorkflowList = "";
var iCount = 0
for each (var workflow in workflowList) {
//logInfo ("Workflow ID: " + workflow.@id + " in " + instance.vars.mainTargetSchema);
iWorkflowId = workflow.@id;
iWorkflowName = workflow.@internaName;
iWorkflowLabel = workflow.@label;
xtk.session.Write(
<{instance.vars.mainTargetSchema.split(':')[1]}
_operation="insertOrUpdate"
_key="@id"
xtkschema={instance.vars.mainTargetSchema}
id={iWorkflowId}
internaName={iWorkflowName}
label={iWorkflowLabel}
/>
)
}
Duplicate workflows are removed from the merged list.
A test is performed to check that the list is not empty.
If the list is not empty, then it is inserted in an HTML table for email notifications.
const queryWorkflow = xtk.queryDef.create(
<queryDef schema={vars.targetSchema} operation="select">
<select>
<node alias="@id" expr="@id" />
<node alias="@internalName" expr="@internalName" />
<node alias="@label" expr="@label" />
</select>
<where/>
</queryDef>
).ExecuteQuery()
var sWorkflowList = '<table border="0" >';
sWorkflowList = sWorkflowList + "<tr><th>Worklow Id</th><th>Name</th><th>Label</th></tr>";
for each (var workflow in queryWorkflow) {
sWorkflowList = sWorkflowList + "<tr>" +
"<td>" + workflow.@id + "</td>" +
"<td>" + workflow.@internalName + "</td>" +
"<td>" + workflow.@label + "</td>" +
"</tr>";
}
sWorkflowList = sWorkflowList + "</table>";
instance.vars.workflowList = sWorkflowList;
The HTML table is added to the notification template.
<%= instance.vars.workflowLIst%>
The email notifications contain the list of workflows that include email opens as a targeting criterion in queries.
Profile data is enriched with tracking data from actions such as email opens and click-throughs. Tracking also provides, through the user agent when this information is available, key information about the user’s devices.
In a nutshell, Adobe Campaign tracking data provides this information:
We strongly recommend that you preserve this data, for multiple reasons:
This data is retained by Adobe Campaign for a limited period. The retention period varies, depending on the configuration of your instance.
Check the setup of your instance. Read more.
Aside from Apple’s recent changes, you can use tracking data to add immense value to drive your audience’s engagement.
Apple might bring further changes to their native Mail app and their Mail Privacy Protection feature.
For all these reasons, we strongly recommend that you export this data as soon as possible. Otherwise, your tracking data for part of your audience might be negatively affected.
To preserve tracking data, you must export it from Adobe Campaign to your information system. Read more.
The following example focuses on the out-of-the-box nms:Recipient
schema, which is the default profile schema. If you use additional custom target mappings that are attached to custom profiles, we recommend that you extend this export strategy to all the custom logs tables. Read more.
By default, the nms:Recipient
schema is linked to three schemas that you must export:
Schema | Content |
---|---|
nms:trackingLogRcp | Tracking data, to wit, the user, the time, and the concerned message |
nms:trackingUrl | Details about the link, including the nature, for example an email open or a click-through |
nms:userAgent | Information about the device |
The tables are linked in the data model.
Use these relationships to create a single export query.
You can enrich this data with useful information from linked schemas:
Schema | Content |
---|---|
nms:Recipient | Details that are related to profiles |
nms:Delivery | Information about the message to which the user reacted |
You can export the result to an external storage solution that is supported by Adobe Campaign:
This example shows how you can export tracking data from Adobe Campaign.
Create a workflow that starts with a query.
The initial query is used to retrieve the tracking logs for the last three months.
You can use an incremental query to extract only the records that you have not yet exported.
Add all the required information from the Additional data node.
Add a Data extraction (file) activity. Map all the data from the query to an extraction file format.
Choose the file format, for example, TXT or CSV.
Add the third and last activity for the upload of the file to a supported storage solution.
You can use workflows to determine whether a recipient uses Apple’s Mail app. You can split tracking logs by device. For example, you can use query filters to break down records by iOS device:
Application | Operating system or device | Query filter |
---|---|---|
Apple Mail | iOS 15 | operating System (Browser) contains 'iOS 15' and browser (Browser) contains 'ApplewebKit' |
Apple Mail | iOS 14 or iOS 13 | browser contains 'AppleWebKit' and operating System of browser contains 'iOS 14' or operating System of browser contains 'iOS 13' |
Apple Mail | iOS mobile devices: iPad, iPod, and iPhone | device (Browser) contains iPhone or device (Browser) equal to iPod or device (Browser) equal to iPad and browser (Browser) equal to 'AppleWebKit' |
Apple Mail | iPhone , iPad, or iPod | browser (Browser) equal to 'AppleWebKit' and device (Browser) equal to iPhone or device (Browser) equal to iPod or device (Browser) equal to iPad |
Apple Mail | Mac | browser (Browser) equal to 'AppleWebKit' and operating System (Browser) contains 'Mac' |
Safari | macOS | browser (Browser) equal to 'Safari' and device (Browser) equal to PC and operating System (Browser) contains 'Mac' |
Safari | Mobile devices | browser (Browser) equal to 'Safari' and device (Browser) equal to iPad or device (Browser) equal to iPod or device (Browser) equal to iPhone |
You can use these rules for various purposes:
These examples show how you can use workflows to break down records by iOS device:
The first example workflow comprises these activities:
The initial Query activity is used to select all the email opens for the last three months.
A Split activity is used to split the selection by email application, browser, operating system, and device.
A Deduplication activity follows each Split activity. The Deduplication activity is used to remove duplicate email addresses.
The Deduplication activity is positioned after the Split activity to avoid losing information about recipients who use various devices.
An End activity follows each Deduplication activity.
This type of workflow is useful if you store recipients only in the out-of-the-box recipients table for targeting.
The second example workflow comprises these activities:
The initial Query activity is used to select all the email opens for the last three months.
A Deduplication activity is used to remove duplicate email addresses.
A Fork activity is used:
An End activity follows each transition after the Split activity.
This type of workflow is useful if you store recipients in a table other than the out-of-the-box recipients table.