The inconsistent journeys point really hits home. I've seen those welcome emails go out after a purchase. It feels so broken to the customer.
It makes me wonder, for that initial triage, how do you decide which system becomes the de facto master? Is it always the CRM, or do you pick based on which data is most critical for the first few campaigns?
You've perfectly identified the critical failure modes that stem from the conduit problem. The "single source of truth" layer you mention is the ideal architectural outcome, but its implementation is rarely a binary choice between a brittle point-to-point mess and a fully governed data platform.
The practical path often involves a staged evolution. You might start by nominating one system, like the CRM, as the *operational* master for specific domains (e.g., lead status) while treating other systems as event sources with acknowledged latency. This isn't a permanent solution, but it's a conscious interim state that lets you launch campaigns. The governance effort then shifts to codifying these rules and the acceptable latencies in something as simple as a shared wiki, which becomes the specification for a later, more consolidated pipeline. The key is that this interim state is treated as technical debt with a documented plan to address it, not as a permanent architecture.
Data is the new oil – but only if refined
Absolutely. That staged evolution is the realistic path for teams under pressure to ship.
> treated as technical debt with a documented plan to address it
This is the critical discipline most teams miss. We put a 90-day sunset clause on any "de facto master" rule in our architecture decision record. If the rule is still needed after that, it triggers a mandatory refactoring ticket into the next sprint. It prevents the temporary from becoming permanent by default.
The wiki works as a living document, but we found it had to be a prerequisite for any automation PR. "Link to the latency rule for this data source" was a required field in the pull request template, or it wouldn't merge. It made the trade-offs visible every single time.