To send Reconnect email messages to users, you must do the following:
- Step 1: Integrate with an email service provider (ESP). You can use our native integration or integrate with a supported vendors.
- Step 2: Manage your opted-in users. Inform Dynamic Yield which users consent to receive messages.
- Step 3: Identify your users. Use any of our identification events: Login, Signup, Newsletter Subscription, or Identify User.
- Step 4: Track engagement. Measure the success of your campaigns.
Step 1: Integrate Reconnect with an ESP
There are two ways to send emails from Reconnect campaigns:
- Dynamic Yield native email: Design the full HTML in Experience OS and send triggered messages directly through our built-in email solution.
-
Third-party ESP integration: Connect your existing ESP to Dynamic Yield. Reconnect then triggers and sends JSON payloads with your content, and your ESP handles the email design and delivery.
Prerequisites for third-party vendor integration
To integrate with Dynamic Yield, your ESP must:
- Provide a RESTful API for sending messages, either using a “Send email” endpoint or an API-based events service.
- Support application/json as the content type.
- Use one of the following authentication methods:
- No Auth
- Basic Auth
- OAuth2
- Accept JSON payloads.
Setting up Dynamic Yield native email
To enable this email delivery method, contact your customer success manager. Your account team will handle the setup and ensure mails are sent reliably under your domain.
Setting up third-party ESPs
You can implement a custom integration, or use one of our out-of-the-box vendor solutions.
Setting up the custom integration
To set up an integration with your ESP:
- In Reconnect, go to the Integrations tab, and then click Create Channel Integration.
- Select the Email channel, and then complete the following information in the integration wizard.
Step 1: Configure
- Name: The integration name is included in your campaigns and their reports.
- HTTP Post URL: Your ESP's messaging endpoint.
- HTTP Header Parameters (optional): You can insert header parameters in a key:value format. Click the lock icon to encrypt the value. The value displays as masked, and is encrypted before it's saved to our database.
-
Identifier Type: Select the user identification method required by your ESP. The corresponding value is included in the message JSON when you use the User Identifier variable.
For example, if you select Email, and insert the User Identifier variable into your JSON payload in a campaign, it's replaced with the user's email address, which you provided as part of the identification process.
Click Next.
Step 2: Authenticate
Select the authentication method required by your ESP:
- No Auth: No authorization is required, so there are no additional parameters to configure.
- Basic Auth: Enter a valid username and password as provided by your ESP.
-
OAuth2: Enter a token URL, client ID, and client secret, as provided by your ESP.
- You can change the key names of the client ID and secret in the token header parameters section.
- By default, the client secret value is encrypted for security purposes.
When you click Next, the system validates the credentials you provided against the token URL. If they are invalid, an error is displayed.
Step 3: Test
To test your integration, send a test API call to your ESP:
- Request Headers: Displays the parameters you entered in the previous steps.
-
JSON Payload:
- Enter the message body, in JSON format, as your ESP expects to receive it.
- Click Test. An API call is sent to the ESP messaging endpoint you defined earlier.
- Request Response: This is the response from your ESP server.
If everything is working as expected, click Save. The integration appears in the Integrations tab.
Supported vendor integrations:
With this integration, Reconnect triggers emails from your ESP, enabling you to manage frequency capping, view reports, and generally maintain more control over how Reconnect emails are sent as part of your complete email program.
Prerequisites
- The Responsys integration enabled on your account. Contact your technical account manager for assistance.
Note: The Responsys integration supports raw email addresses, hashed email addresses, and any external identifiers supported by Responsys. If you use hashed email addresses or external identifiers, make sure you use the same CUID or identifier in the opt-in and opt-out events as you use for your omnichannel identification events (login, signup, and so on).
Enable the integration
- In Responsys, create an API user. Set to the role API Admin.
- In Experience OS, go to Reconnect › Integrations › Create Channel Integration › Email and select Oracle Responsys.
- In the Responsys Integration wizard, complete these steps, as described in the following sections:
- Configure
- Authenticate
- Test
- If everything works as expected, save the integration.
Step 1: Configure
- Set the HTTP Post URL. This is the Responsys endpoint to which Dynamic Yield sends the POST request. By default, this is the Trigger Email Message endpoint, but you can modify it to use the Trigger Custom Event endpoint for additional flexibility. When a message is sent to Responsys, the ${dyCampaignName} variable injected to the last route of the endpoint is replaced with the relevant Reconnect campaign name.
After the username and password are authenticated, the complete URL is stored by Dynamic Yield and used to trigger calls to the defined endpoint. - Select the Identifier Type. This must be the same one you use in your identification events.
- Email: Select if your opted-in email addresses feed or Opt-in and Opt-out events events use raw email addresses as the identifier.
- Phone Number: Select if your opted-in email addresses feed or Opt-in and Opt-out events use phone numbers as the identifier.
- Other: Select if your Opt-in and Opt-out events events use any other identifier that isn't an email address or a phone number.
Step 2: Authenticate
- Enter the Token URL issued by Responsys in your account.
- Username and Password: Enter your Responsys credentials to gain access to Responsys REST APIs.
Step 3: Test
- When authentication is complete, click Next to text the communication via the endpoint you defined in the Configure step, and view the server response.
- For testing purposes, you can change the campaign name in the URL. This doesn't affect the endpoint. You can also insert a test message in the JSON Payload field.
- Click Test. The response is displayed in the Request Response field.
- In Reconnect, go to Integrations › Create Channel Integration › Email and select Emarsys.
-
In the integration wizard, complete the following steps:
-
Configure: Select the identifier type you use to identify users:
- Email: Plain text email addresses.
- Phone number
-
Other: Any string your ESP can map to an email address.
Important: If you select this option, you must also implement an Identify User event on your site, even if you already have another identification event implemented, such as Signup, Login, or Newsletter Subscription.
- Authenticate: Upload the Emarsys credentials JSON file. The file is available on your Emarsys account or from your Emarsys account representative.
Sample Emarsys credentials file:
{ "type": "service_account", "project_id": "project-id", "private_key_id": "key-id", "private_key": "-----BEGIN PRIVATE KEY-----\nprivate-key\n-----END PRIVATE KEY-----\n", "client_email": "service-account-email", "client_id": "client-id", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account-email" }-
Test: Validate the integration by making a test call to Emarsys. Copy the JSON body that you plan to send later on, in your campaigns.
You can copy the following sample JSON payload, which contains parameters you might need for a cart abandonment campaign, including the user identifier, items in the cart and their metadata, and the tracking pixel. In the em_dy_user_id field, insert the email address to which you want to send the test email (if you replace any of the parameters, make sure to keep the JSON format valid):
{ "em_dy_event_id": "af2e9aca-cb41",// a unique identifier "em_dy_event_type": "abandoned_cart", "em_dy_event_time": "2020-10-09T07:35:45Z",// time of send "em_dy_user_id": "john.d@mail.com",// plain text email "profile": { "userAttrs": [ { "content": { "itemsInCart": [ { "sku": "2264", "name": "LSL Women Little Red Dress", "image": "http://acme.com/pub/media/catalog/product/w/d/wd001.jpeg", "link": "https://www.acme.com/tremclk/?cuid=john.d%40mail.com&cuidType=ihe&sec=8772046&expId=0&expVer=0&expVisitId=&mech=0&smech=&va=&targetUrl=http://lifestylelabels.com/lsl-women-little-red-dress.html", "price": 330 }, { "sku": "2504", "name": "LSL Women Blazer Zip - Red", "link": "https://www.acme.com/tremclk/?cuid=john.d%40mail.com&cuidType=ihe&sec=8772046&expId=0&expVer=0&expVisitId=&mech=0&smech=&va=&targetUrl=http://lifestylelabels.com/lsl-women-blazer-zip-red.html", "image": "http://acme.com/pub/media/catalog/product/w/b/wb001_3.jpg", "price": 750 } ], "recommendations": [ { "sku": "81467", "name": "Flawless Concealer", "link": "https://www.acme.com/tremclk/?cuid=john.d%40mail.com&cuidType=ihe&sec=8772046&expId=0&expVer=0&expVisitId=&mech=0&smech=&va=&targetUrl=http://lifestylelabels.com/lsl-women-blazer-zip-red1.html", "image": "http://acme.com/pub/media/catalog/product/w/b/wb001_4.jpg", "price": 75 }, { "sku": "83601", "name": "Contouring Blush & Bronzing Powder", "link": "https://www.acme.com/tremclk/?cuid=john.d%40mail.com&cuidType=ihe&sec=8772046&expId=0&expVer=0&expVisitId=&mech=0&smech=&va=&targetUrl=http://lifestylelabels.com/lsl-women-blazer-zip-red2.html", "image": "http://acme.com/pub/media/catalog/product/w/b/wb001_5.jpg", "price": 50 } ] } } ] }, "hiddenPixel": [ "<img src="\" alt="alt" width="\" border="\" height="\" style="\;">" ] }</img> -
Configure: Select the identifier type you use to identify users:
- Click Save to enable the integration.
With this integration, Reconnect triggers emails from your Klaviyo account, enabling you to manage frequency capping, view reports, and generally maintain more control over how Reconnect emails are sent as part of your complete email program.
Prerequisites
One or both of the following set up:
- Opted-in email addresses feed
- Update Reconnect Opt-in and Opt-out events
Enable the integration
In your Klaviyo account:
- Click your account avatar and then select Settings.
- Go to API Keys and copy the relevant private key.
Note: If you have not yet created a key, click Create Private API Key, and grant it full access permissions.
In Experience OS:
- Go to Reconnect › Integrations › Create Channel Integration › Email and select Klaviyo.
- In the Klaviyo integration wizard, complete the steps, as described in the following sections below:
- If everything works as expected, save the integration.
Step 1: Configure
Select the Identifier Type. This must be the same one you use in your identification events and Opt-in events/feed.
- Email: Select if your opted-in email addresses feed or Opt-in and Opt-out events use raw email addresses as the identifier.
- Phone Number: Select if your opted-in email addresses feed or Opt-in and Opt-out events use phone numbers as the identifier.
- Other: Select if your Opt-in and Opt-out events events use any other identifier that isn't an email address or a phone number.
Step 2: Authenticate
Paste the private API key you copied from your Klaviyo account and then click Next.
Step 3: Test
- In the JSON Payload input field, use the predefined JSON body that is expected, or enter any JSON expected by Klaviyo:
- Click Test. The API response from Klaviyo is displayed.
- Click Save. The new integration now appears in the Integrations tab.
For this integration, Reconnect uses the SendGrid Mail Send API endpoint, with a JSON API call body.
Note that the integration supports existing SendGrid account credentials. Use the same API keys you currently use in the Triggered Email app.
Enable the integration
- Go to Reconnect › Integrations › Create Channel Integration › Email and select SendGrid.
- In the Configure step, select the identifier type you use to identify your users on the SendGrid platform. Click Next.
- In the Authenticate step, enter your designated API key, provided by SendGrid (the API key can be found in your SendGrid account under Settings › API Keys). Click Next.
- In the Test step, enter a test JSON body, and then click Test.
- If everything works as expected, save the integration.
Create a template in the SendGrid platform
Sendgrid enables you to create dynamic templates with reusable HTML designs, which are triggered by an external API call from Reconnect.
- In Sendgrid, go to Email API › Dynamic Templates.
- Click Create a Dynamic Template and enter a name. Click Create.
- The template is created in the grid. Click it.
Note: When a template is created, it's assigned a unique Template ID. Use this ID in the JSON payload of the API request, as created in the Reconnect campaign. - Click Add Version.
- When a version is created, you can edit it using either a code editor or a design editor. For ease of use, we recommend working with the design editor. If what Sendgrid offers in its design editor does not align with your design requirements, use the code editor to edit the HTML code directly.
- To inject the data sent from Reconnect in the API call (as part of the campaign triggering), replace relevant content with dynamic variables by inserting double curly brackets (like this: {{variable name}} ). Learn more about which variables can be used in the message.
- To preview simulated content, go to the editor's Preview tab, and click {} Show Test Data.
Important: In the HTML code editor, make sure that the email’s product components can support not being displayed when a value is returned empty. You can do this using conditional statements.
For this integration, Reconnect uses the Iterable POST /api/email/target endpoint with a JSON API call body.
Enable the integration
- Go to Reconnect › Integrations › Create Channel Integration › Email and select Iterable.
- In the Configure step, select the identifier type you use to identify your users on the Iterable platform. Click Next.
- In the Authenticate step, enter your designated API key, provided by Iterable (the API key can be found in your Iterable account under Settings › API Keys). Click Next.
- In the Test step, enter a test JSON body, and then click Test.
- If everything works as expected, save the integration.
Creating campaigns with Iterable
Iterable enables campaigns to be triggered by an external triggering event (API request) sent from Reconnect. Follow these steps to set up reusable campaigns that will be triggered by your Reconnect flows:
- In the Iterable platform, go to Messaging › Campaigns. Click New campaign and select Email.
- Name your campaign, and select API-Triggered.
- When creating the HTML for your Email in the campaign, use Iterable Merge Tags (Handlebars) to inject the personalized data from the Reconnect triggering API call to your Email content (example follows).
-
Each campaign is assigned a unique ID. Copy this ID from Iterable and paste it into the relevant Reconnect campaign's JSON body, as the value for the campaignId parameter.
For example:{ "campaignId": 10732344, "recipientEmail": "user@dynamicyield.com", "userId": "", "dataFields": { "firstName": "Jane", "lastName": "Smith", "purchaseAmount": 42.42 } }
Step 2: Manage your opted-in users
Make sure your users have given consent to receive marketing emails. You can inform Dynamic Yield of their opt-in status by uploading a subscriber list or by sending real-time API events. We strongly recommend using both methods to ensure that any newly opted-in users are captured and can receive emails immediately—without waiting for the next feed sync.
Option 1: Upload a subscriber list
The subscriber list is a CSV file that you upload to an AWS S3 bucket, and sync daily.
Important to know before you begin:
- Each section supports one subscriber list for each channel integration, in this case, email.
- You should upload a file of your current opted-in users once a day.
- You must use the same identifier type in the subscriber list as you defined in your email integration. So if you set the integration identifier as a custom user ID (or email address), that's the identifier value you must use in the subscriber list file.
- The identifier value you use to opt users in is passed as-is to your ESP in the message JSON, using the variable ${User identifier}. Learn more about user data variables
- The identifier type you use in the opt-in feed and events must match what you share in the identification events and what you send to your ESP. For example, if you want to pass a plain-text email value to your ESP as part of the Reconnect API call, set Email as your integration’s identifier, share plain-text email addresses in the opt-in feed and events, and make sure to add the email (as a hashed value) in your identify events.
Uploading and syncing your subscriber list
- In Reconnect › Integrations, on the relevant channel integration card, click Sync Now.
- Click Continue. An S3 bucket is generated.
- Click Copy Credentials and store the S3 bucket details and the credentials in a safe location so they don't get lost or exposed. You can generate credentials only one more time. If you then need to generate additional credentials, open a support ticket.
-
Prepare your CSV file according to the following format:
- File type: CSV
- Encoding: UTF8 encoding
- File name: data.csv
- First row: "email"
- Remaining rows: Plain text email addresses, one per row (up to 10 million rows).
Example:
Download a sample CSV file: data.csv
- Upload the CSV file to the following folder in the S3 bucket with the appropriate date information:
upload_yyyy-MM-dd_HH-mm
For example:
upload_2020-03-19_14-00 - Upon file upload, synchronization to Dynamic Yield is initiated within a few minutes.
After you upload the file to the designated S3 bucket, you can view the sync status of each subscriber list in the relevant integration card under Reconnect Integrations. You can also click Sync Settings to view your S3 bucket or to regenerate credentials (limited to 1 more time after initial generation. If you need to generate them again, contact Support).
Important: When the subscriber list is synced, it overrides any previous opted-in and opted-out information, including statuses derived from opt-in/opt-out events.
Option 2: Report opt-in/opt-out status via API events
When a user subscribes to marketing emails on your site, fire the Update Reconnect Opt-In server-side event:
POST /v2/userdata/channels/Email/opt-in
Headers: {
"accept": "application/json",
"content-type": "application/json",
"dy-api-key": "your-api-key"
}
Body: {
"identifier": {
"type": "IdentifierTypeHere (email|phoneNumber|custom)",
"value": "UserIdentifierValueHere"
}
}
When a user unsubscribes from marketing emails on your site, fire the Update Reconnect Opt-Out server-side event:
POST /v2/userdata/channels/Email/opt-out
Headers: {
"accept": "application/json",
"content-type": "application/json",
"dy-api-key": "your-api-key"
}
Body: {
"identifier": {
"type": "IdentifierTypeHere (email|phoneNumber|custom)",
"value": "UserIdentifierValueHere"
}
}
Note: Use the active_consent_accepted parameter in every API call (like Choose and Engagement) to indicate the user's consent status. Dynamic Yield treats requests without this parameter or with an incorrect value like the user has NOT opted in (value is False).
Step 3: Identify your users
Identify site visitors to associate a Dynamic Yield user ID (DYID) to all visitors with a hashed email address or external ID as a cross-channel unique customer ID (CUID).
You can identify users using any of our identification events: Login, Signup, Newsletter Subscription, and Identify User. Learn more about cross-channel identification.
Step 4: Track engagement
Track clicks to measure campaign performance
To track clicks and measure campaign performance, Dynamic Yield automatically wraps URLs retrieved from the product feed as variables (for example, ${Items in cart|url|item1} ) before sending them to your messaging provider.
However, Dynamic Yield can't track your internal email links. To track these links, you must use the tracking link variable ( ${Tracking link} ) in EVERY clickable element in your ESP email template (for example, the CTA button). This enables Dynamic Yield to collect and present the engagement data.
(Responsys users can use Responsys RPL to concatenate the redirect link with every additional URL.)
To wrap your URL with the tracking link:
- Instead of placing your original link URL in your HTML, use the output of the ${Tracking link} variable, and place your target URL as the value of the query string parameter &targetUrl=
- Make sure your target URL is in URL-encoded format .
Example:
For the cart-page URL https://www.mywebsite.com/cart , the wrapped URL should look like this:
"https://trem.dynamicyield.com/tremclk?cuid=John.doe%40mail.com&cuidType=ihe&sec=8781202&expId=0&expVer=0&expVisitId=&mech=0&smech=&va=&pExpId=0&pExpVer=0&pExpVisitId=&pMech=0&pSmech=&pVa=&targetUrl=https%3A%2F%2Fwww.mywebsite.com%2Fcart"
Legend: output of the ${Tracking link} variable | your target URL in URL-encoded format
Track opens
To track opens, add the tracking pixel ( ${Tracking pixel} ) to your message JSON in Reconnect. Fetch its value and implement the pixel in the top of your email HTML, exactly as it's received from Reconnect.
Example of ${Tracking pixel} output:
src="https://www.acme.com/tremop/?cuid=john.d%40mail.com&cuidType=ihe&sec=8772046&expId=0&expVer=0&expVisitId=&mech=0&smech=&va="
alt=""
width="1"
border="0"
height="1"
style="height:1px!important; width:1px!important; border-width:0!important;
margin-top:0!important; margin-bottom:0!important; margin-right:0!important;
margin-left:0!important; padding-top:0!important; padding-bottom:0!important;
padding-right:0!important; padding-left:0!important;"
>
Note: When using Reconnect’s native email, impressions and clicks are tracked automatically. No extra setup is required.