Adobe Campaign v8 integration
This guide walks you through connecting Adobe Campaign v8 to Better Email. Each Campaign you sync becomes a delivery template in Adobe Campaign, and your team creates deliveries from it there. Better Email can also read your recipient schema into recipient fields for personalization and segmentation.
Before you start
To connect Adobe Campaign v8, you will need:
- the URL of your Campaign instance, for example
https://acme-mkt-prod1.campaign.adobe.com - access to the Adobe Developer Console for your organization
- an Adobe Admin Console user who can assign product profiles in Adobe Campaign
- an admin user in Better Email who can create and edit integrations
1. Allowlist Better Email's IP addresses
Managed Adobe Campaign instances only accept API calls from IP addresses on their allowlist. Contact Better Email for the addresses to add, and allowlist them on your instance before you connect. Until they are on the list, Adobe Campaign refuses every call Better Email makes.
2. Create a credential in the Adobe Developer Console
In the Adobe Developer Console:
- Create a new project, or open an existing one, for Better Email.
- Add the
Adobe CampaignAPI to the project. - Choose
OAuth Server-to-Serveras the credential type. - Copy the
Client IDandClient Secretfrom the credential. - Open the credential's sample token request and copy the scope list from it.
Adobe doesn't publish a fixed scope list for Campaign, so the sample request is the reliable place to get it.
3. Give the technical account access in Campaign
The credential signs in as a technical account. Add that account to an Adobe Campaign product profile that gives it rights on the folder the templates go in (see Destinations). Without it, Adobe Campaign refuses the sync.
4. Set up the integration in Better Email
In Better Email:
- Go to
Integrations. - Create a new integration.
- Enter a clear name for the integration.
- Choose
Adobe Campaign v8as the type. - Enter:
Instance URLClient IDClient SecretScopes, the list you copied from the sample token request
- Optional: turn on
Sync recipient fields, and fill inRecipient schemaandTarget mapping aliasif yours differ from the defaults (see Personalization with recipient fields). - Enable the integration.
- Save the integration.
Better Email requests and refreshes the access token itself. There is no approval popup.
5. Set up Destinations
Saving creates the integration's default Destination. Open the Destinations tab to set where templates land and who they come from:
Folder, the internal name of the folder new delivery templates go in. Leave it blank to use the base template's folder.Base template, the internal name of the delivery template new templates are copied from. Leave it blank formail, the standard email delivery template.From name,From emailandReply-to email, the sender new templates start with.Default subject, the template's subject when a Campaign has none of its own.
If your teams work in separate folders or send under different sender identities, add one Destination per combination and pick it on the Campaign.
6. Sync a Campaign to Adobe Campaign
On the Campaign's Review tab, click Sync to <integration name>.
The first sync creates a delivery template named after the Campaign:
- Better Email copies the Destination's base template, so the new template has the same routing and typology.
- It puts the copy in the Destination's folder and sets its sender.
- It writes the Campaign's subject and rendered HTML into the copy.
Later syncs update the same template, and only its label, subject and HTML. The folder and sender are left alone, so if someone moves the template or changes its sender in Adobe Campaign, that choice stays. This also means that switching the Campaign to another Destination after its first sync doesn't move the template. If the template was deleted in Adobe Campaign, the next sync creates a new one.
Better Email only writes the template. Create deliveries from it in Adobe Campaign, and pick the audience and schedule there.
Adobe Campaign templates have no preheader field, so Better Email doesn't send the preheader separately. It reaches the inbox only if your Design System renders it in the HTML, for example with context.email.preheader.
7. Personalization with recipient fields
Recipient fields export as Campaign's JavaScript personalization tags, which Adobe Campaign fills in per recipient when the delivery runs:
Hi <%= recipient.firstName %>,
Syncing fields from Adobe Campaign
- On the integration, turn on
Sync recipient fieldsand save. - Click
Sync nowin the page header.
Better Email reads the recipient schema and creates a recipient field for each attribute a condition can compare. The schema Adobe Campaign returns already includes your extensions, so custom attributes come along. Attributes of nested elements such as location are included too, and fields with an enumeration get its values as allowed values, compared by their stored code. Links to other tables are left out, since they hold another record's key rather than a value.
New fields arrive inactive. Switch on the ones you want to use on the integration's Recipient fields tab.
Two settings on the integration control the sync:
Recipient schemais the schema fields are read from. Leave it blank fornms:recipient, or enter your own recipient table's schema, such ascus:recipient.Target mapping aliasis the name your deliveries' personalization uses for the target. Leave it blank forrecipient. If your deliveries use a custom target mapping, enter its alias, such asregistrations, and synced fields export as<%= registrations.status %>.
Adding a field by hand
You can also add recipient fields by hand under the Recipient fields tab. Set the field's ESP field name to its path in the target mapping, such as recipient.location.city or registrations.status. A name without a dot reads from recipient.
See Recipient Fields / Merge Tags for the general setup.
8. Segmentation and block variants
Segments and block variants export as JavaScript conditions around each variant's content, the same code the Adobe Campaign Classic integration produces:
<% if (recipient.country == 'DK') { %>
...content for Denmark...
<% } else { %>
...content for everybody else...
<% } %>
The Everybody else fallback becomes the final else branch, so the first matching variant wins, as it does in preview. A field with no value only matches is not and is not set. Use preview profiles to check the variants before you sync.
Troubleshooting
- "Adobe Campaign refused the credentials." Better Email's IP addresses aren't on the instance's allowlist yet, or the technical account's product profile doesn't cover the folder. Check both.
- Sync fails before reaching Adobe Campaign. Check that the
Client ID,Client SecretandScopesall come from the same credential, and that the secret hasn't been rotated. - "Adobe Campaign has no schema named …" The
Recipient schemasetting doesn't match a schema on your instance. Use thenamespace:nameform, such asnms:recipient. - A new field doesn't show up in the Campaign Editor. Synced fields arrive inactive. Switch it on in the
Recipient fieldstab. - Adobe Campaign reports an error in a personalization block. A recipient field's path doesn't exist in the delivery's target mapping. Check the
Target mapping aliassetting, or the field'sESP field nameif you added it by hand.