In Salesforce Marketing Cloud, leveraging composite APIs can streamline complex workflows, but it's not always straightforward due to platform limitations. Let's explore a practical use case where we validate an email address and insert data into a Data Extension using sequential processing.
<script runat="server">
Platform.Load("Core", "1");
// Define the access token
var accessToken = "YOUR_ACCESS_TOKEN";
// Define the subdomain
var subdomain = "YOUR_SUBDOMAIN";
// Email to validate
var emailToValidate = "YOUR_EMAIl_ADDRESS";
// Data Extension key
var dataExtensionKey = "SurveyFeedback";
try {
// Email validation request payload
var emailValidationPayload = {
"email": emailToValidate,
"validators": [
"SyntaxValidator",
"MXValidator",
"ListDetectiveValidator"
]
};
// Authorization header
var authorizationHeader = 'Bearer ' + accessToken;
// Endpoint URLs
var emailValidationEndpoint = "https://" + subdomain + ".rest.marketingcloudapis.com/address/v1/validateEmail";
var dataExtensionInsertEndpoint = "https://" + subdomain + ".rest.marketingcloudapis.com/data/v1/async/dataextensions/key:" + dataExtensionKey + "/rows";
// Content for responses
var emailValidationContent = [0];
var dataExtensionInsertContent = [0];
// Perform email validation
var emailValidationResponse = Platform.Function.HTTPPost(emailValidationEndpoint, 'application/json', Stringify(emailValidationPayload), ['Authorization'], [authorizationHeader], emailValidationContent);
// Log email validation response
Write("Email Validation Response: " + emailValidationContent[0]);
// Check if email validation was successful
var isValidEmail = Platform.Function.ParseJSON(emailValidationContent[0]).valid;
if (isValidEmail) {
// Data extension insert payload
var dataExtensionInsertPayload = {
"items": [
{
"Email": emailToValidate,
"Feedback": "Its working",
"Rating": "4",
"SubmissionDate": "Monday, July 08, 2024 12:00 AM"
}
]
};
// Perform data extension insert
var dataExtensionInsertResponse = Platform.Function.HTTPPost(dataExtensionInsertEndpoint, 'application/json', Stringify(dataExtensionInsertPayload), ['Authorization'], [authorizationHeader], dataExtensionInsertContent);
// Log data extension insert response
Write("Data Extension Insert Response: " + dataExtensionInsertContent[0]);
} else {
Write("Email validation failed.");
}
} catch (e) {
// Handle errors
Write("Error: " + Stringify(e));
}
</script>