Hmac is way to authenticate / digitally sign the customer details based on the key exposed in your console. The logic behind the signing mechanism is to find the hash of the customerid and emailid with the project key as the the key with which the hash is computed. Then when sent to the thrive system, will again be validated in the same fashion.
This way, we can mitigate any tampering of data which results in fraudalent transactions.
Hmac should be computed in the server side and should be sent along with campaign optin request.
Hmac can be generated as follows
const crypto = require("crypto") let email_id="email@example.com" // email address of the member. let customer_id = "bfuyw3fiub3289uij" let digestRaw = email_id+customer_id let algorithm = "sha256" let secret = "e46788a75fe6a876ba83a3892cfd201f"; // Project key let hmacDigest = crypto.createHmac(algorithm, secret).update(digestRaw).digest("hex")
require 'base64' require 'openssl' email_id="firstname.lastname@example.org" customer_id="bfuyw3fiub3289uij" digestRaw= email_id+customer_id; algorithm = OpenSSL::Digest.new('sha256') secret = 'e46788a75fe6a876ba83a3892cfd201f' hmacDigest = OpenSSL::HMAC.hexdigest(algorithm, secret, digestRaw)
$email_id = "email@example.com"; $customer_id="bfuyw3fiub3289uij"; $digestRaw= $email_id.$customer_id; $algorithm = 'sha256'; $secret = 'e46788a75fe6a876ba83a3892cfd201f'; $hmacDigest = hash_hmac($algorithm, $digestRaw, $secret);