0

i would like to send a triggered send email initiated from the order management system to Marketing cloud. How would I be able to include in the payload specific data related to the order which would allow me to personalize the email with the order details.

Seems like in the examples API calls, it is always contact attributes that are passed in the API call.

2
  • what is the data type for personalisation; xml or json? Commented Nov 16, 2017 at 1:20
  • It is a JSON payload
    – Paul
    Commented Nov 16, 2017 at 2:56

1 Answer 1

0

There are several ways of going about this in the email. The payload in the API call is the easy part.

For example if you have the following JSON passed in an attribute named JSON in your API call:

[{
    "sku": "123",
    "name": "Square",
    "url": "https://spmvs.com?sku=123"
}, {
    "sku": "456",
    "name": "Circle",
    "url": "https://spmvs.com/?sku=456"
}, {
    "sku": "789",
    "name": "Triangle",
    "url": "https://spmvs.com/?sku=789"
}]

You can parse it with either GTL or SSJS in the email:

<html>
<head>
  <style>
    body, a, input {font-family:sans-serif;}
  </style>
</head>
<body style="font-family:sans-serif">
%%=now()=%%
<h1>JSON Parse with GTL</h1>
%%[

var @json
set @json = AttributeValue("json")

if not empty(@json) then
]%%

{{.dataobject JsonVar type=variable source=@json maxrows=20}}
     {{.data}}
          {"target":"@json"}
     {{/data}}
{{/dataobject}}
{{#each JsonVar}}

<br><a href="%%=RedirectTo(TreatAsContent('{{url}}'))=%%">{{sku}}</a> - <a href="%%=RedirectTo(TreatAsContent('{{url}}'))=%%">{{name}}</a>

{{/each}}
%%[
else
  outputline(concat("<br>no JSON found"))
endif
]%%

<h1>JSON Parse with SSJS</h1>
<script runat="server">
Platform.Load("Core","1.1.1");
var json = Attribute.GetValue('json');
var jsonObj = Platform.Function.ParseJSON(json);
if (jsonObj.length > 0) {
  for (var i = 0; i < jsonObj.length; i++ ) {
      var item = jsonObj[i];
      Platform.Variable.SetValue("@sku",item['sku']);
      Platform.Variable.SetValue("@name",item['name']);
      Platform.Variable.SetValue("@url",item['url']);
      </script>
      <br><a href="%%=redirectto(@url)=%%">%%=v(@sku)=%%</a> - <a href="%%=redirectto(@url)=%%">%%=v(@name)=%%</a>
      <script runat="server">
  }
} else {
  Write("no products found")
}
</script>

<br><br><br><a href="%%profile_center_url%%">Profile/Preference Center</a>
<br><a href="%%subscription_center_url%%">Subscription Center</a>
<br><a href="%%unsub_center_url%%">One-Click Unsubscribe</a>
<p>This email was sent by:
<b>%%Member_Busname%%</b>
<br>%%Member_Addr%%, %%Member_City%%, %%Member_State%%  %%Member_PostalCode%%  %%Member_Country%%</p>
<custom name="opencounter" type="tracking">
</body>
</html>

There some more details here in this presentation: AMPScript Uncovered

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .