JSON and other complex data types as Contact properties


We’re looking for a way to store, and use more complex data types within Contact properties, than simple strings.

One example of this is JSON. One suggestion that we found was to create new property groups, and properties under that, but that assumes that all the groups are pre-defined, and singletons.

This is not the case for us, unfortunately.

A prime example of what we’re looking for, is what Customer.io offers. We can send simple JSON as a parameter, and then access the attributes in other contexts.


Hi @IvanD

Can you tell me more about how you’d want to use that data in HubSpot? Contact records can’t store objects or any type of relational data themselves, but there are objects that can be associated with contacts that might be able to store that data instead.


The ultimate goal that we’d want, is to replace Customer.io entirely with HubSpot. Three (primary) things stand in our way:

  1. We need a way to store more formatted data within object (contact) properties, as mentioned above.

  2. We’d want to access this data in things like email templates. Customer.io uses Shopify’s Liquid Templates, to great effect.

    Based on triggers X, Y, and Z, we’d filter our users into different segments (this part we already have, in HubSpot), and then send customized emails to said users. This last part we sort-of have, but the values that we can enter are basic.

    With point 1 above, if we had an attribute that was a JSON object, we could have conditionals in the template based on said attribute, and even include parts of said attribute inside the email.

  3. We’d also like to include, and have conditionals against events, associated with said contacts. Did Herny visit a part of our app?

    • No? Tell them about it, and include a link to both the page, and our FAQ section about the feautre.
    • Yes? Remind them to check back for updates.

Let me know if I can clarify any of the above.


Hi Dadams,

Any update on this? Thanks.


Something like this would be possible, but depending on how customized you need each email to be it may not be possible with just workflows. At the moment emails sent from workflows can only use the details for the contact itself, the company the contact is associated with, or the owner of the contact, so the data would need to be added to the contact itself in a contact property, and those properties would basically be treated as strings when inserted into the email, so you may need to use multiple templates for different workflow branches.

Depending on how customized you want to get with individual emails, you may want to look at the Transactional Email add-on and the Single Send API, since that would let you set custom properties specific to a single email.