What data design and modelling practices work best with Contact Builder in SFMC?

From poking around in default Contact Builder DEs, I'm guessing Marketing Cloud uses Star Schema-is this correct? I've started outlining a rough idea of what I'm looking to build here: enter image description here

My data team advised that what I've roughly outlined may hinder performance, especially where transactional data coming in will be in the millions in Marketing Cloud- needed to clarify if that is true for Marketing Cloud? They suggested keeping all data in as little tables as possible.

There's very limited documentation on best practices and contacting the support team took me back to an Account Executive.

Any resources to help point me in the right direction would help!


1 Answer 1


Having designed and implemented several contact models for SFMC, I'd say your data model is overly complex, and will becomes a pain once you start trying to run campaigns with it.

There are definitely situations where the limitations of SFMC will trip you up if you're populating it with millions of rows. A common one is the 30-minute Query runtime limitation, which will be easy to hit if you're joining 3 tables deep for millions of rows.

Keep in mind that the primary purpose of SFMC is to manage customer contact. How much data do you really need to store at any point in time? Does what you're doing require million or rows of data to be present? Will the last 12 months of transactions suffice? Can you flatten your tables, thereby avoiding the overheads and risks of running queries that may fail unexpectedly and opaquely? Can you pre-process your data to make it more palatable for SFMC?

My mantra is that all data fed into SFMC must either be usable as a filter, personalisation, or goal. Do the heavy lifting for your data in the tools build for that purpose, where you have logging and proper error-handling processes available, and avoid the headaches of architecting a complex solution in SFMC.

You must log in to answer this question.

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