Sending Transaction Event Notifications

Oracle Marketing Cloud - Eloqua Transactional Email App Feature

To send a transactional email using the Transaction Email app for Eloqua, you need to configure your external system to send event notifications, or calls, to the Event Endpoint created in Step 2 of Adding a Transactional Event. While each external system will vary slightly, this page should provide some useful information to help you get started.

Basic Authentication

This method is likely the simplest method if generating your own API calls. Basic authentication uses an encoded version of the familiar username and password in the header of the calls. Check out this article for more information on configuring calls using basic authentication.

Webhook

This method is most commonly used when integrating and sending directly from the external system (e.g., commerce platform, CRM, etc.). However, you can also use this method with a custom implementation.

Configuring Webhooks in External Systems

The Transactional Email app has been tested using the below systems. However, if you use a different system you are interested in using, email us at [email protected] and we will look into adding it.

Oracle Commerce Cloud
Shopify
WooCommerce

Webhook Custom Implementation

First, generate a signature:

  1. Start with the request body.
  2. Hash the request body using SHA256.
  3. Base64 encode the hash.

Then, on your request, include a header with "x-r1-content-hmac-sha256" as the key and the generated signature as the value.

String algorithm = "HmacSHA256"; // Use this algorithm for use with the header x-r1-content-hmac-sha256
String token = "1571b9d1-8455-4f58-830c-53973ad7c472"; // The token provided by the app
String body = "{\"email\":\"[email protected]\"}"; // The body of your request

SecretKey secretKey = new SecretKeySpec(token.getBytes(), algorithm); //javax.crypto.SecretKey, javax.crypto.spec.SecretKeySpec
Mac mac = Mac.getInstance(algorithm); // javax.crypto.Mac
mac.init(secretKey);
byte[] hashedBody = mac.doFinal(body.getBytes()); // Generate a hash of the body. Note that whitespace matters.
System.out.println("hashedBody: " + Arrays.toString(hashedBody)); // [-17, -72, -125, -45, -119, 62, 42, -2, 123, -25, 22, -39, 126, -126, 35, 29, -88, 77, 15, -126, 43, -104, -67, 37, 56, -73, 110, -64, 71, 0, -74, 25]
String signature = Base64.getEncoder().encodeToString(hashedBody); // Encode the hash using Base 64. The result is the signature
System.out.println("signature: " + signature); // 77iD04k+Kv575xbZfoIjHahND4IrmL0lOLduwEcAthk=