Skip to main content
Question

Manipulate arrays of JSON objects with a Create or Update a Person workflow actions + JavaScript


Mistral

Foreword: this is a basic illustration example of how you can easily manipulate an array of JSON objects with JS in a Create or Update a Person workflow action. This is not an exhaustive snippet.

 

Use case: you’d like to save the event attributes of the latest occurrences of an event to send a recap email using all of these attributes later on.

E.g. a list of all the event attributes for a Order Completed event; or a weekly summary of a certain event

 

Solution: with JS, get the event object and add it to the existing array of objects if it exists, otherwise

if (typeof(customer.array_of_objects) != "undefined") 
// if the customer attribute "array_of_objects" is not undefined (i.e. exists)
{
// we concatenate the event object into that array
return customer.array_of_objects.concat(event)
}
else
// if it is undefined (i.e. doesn't exist)
{
// we create an array with one item: the event object
return [event]
}

 

In a future message, you can then loop through all of the event data using a for loop:

{% for object in customer.array_of_objects %}
{{object.key}}
{% endfor %}

 

Attention: you should remove the items from the attribute after a certain amount of time, to ensure it doesn’t bloat endlessly.

return customer.array_of_objects.filter((item) => item.key == event.key);

 

 

Hope this helps!

0 replies

Be the first to reply!

Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings