Hey @SeanMcC,
I think this would all be dependent on how you’re apply those ‘brand’ and ‘product type’ custom profile properties.
One thing to keep in mind is that event properties and profile properties are two different entities. This means that although your purchase events may be passing a product’s brand or category, those properties would not be stored as a custom profile property.
The easiest way to collect more information about your customers - such as their preferred brand or product type would often be through a sign-up form.
Other more discrete method would be either an update profile property step in a flow or through an API.
To use a flow update profile property step to achieve this, you’ll want to use either trigger split or a conditional split to navigate users down specific branches of a flow. Each branch of the flow will have an update profile step to either add or update that specific property with the corresponding value of what brought them down that branch.
Quick tip, flows don’t always need to have a message. You can setup this sort of flow just for the purpose of applying (or updating) profile properties.
If I remember correctly, you mentioned you had a fairly large product catalog. Because of this, I may recommend using the API method instead. The ideology is the same as an update profile property solution, but this method would allow everything to be done within the backend to be more seamless. I.E. whenever a customer makes a purchase, an API call is made to sync the ‘brand’ and ‘product type’ properties from the order as a custom profile property.
Even with a large catalog, the flow option would still be suitable. Just be aware that there is going to be some upfront manual work in building out the flow and its branches. One of the benefits to the flow option though, is that when users get tagged or when they go through the flow, this is all tracked and recorded in their profile history.
I hope this helps!
David