The challenge
A subscription software company had invested in Adobe Analytics for web and product analytics, Marketo for email marketing, and Zendesk for customer support. Each team had their own reporting — web analytics showed acquisition and activation metrics, Marketo showed email engagement, Zendesk showed support ticket volume and resolution time. Nobody could answer the question that mattered most: what is the full experience of a customer who churns at renewal? Without that view, the retention team was guessing which interventions to prioritise.
Assessing the CJA fit
Customer Journey Analytics is not the right tool for every analytics problem. Before recommending it, we assessed whether the client's use case genuinely required cross-channel journey stitching at the person level, or whether a well-structured data warehouse model could answer the same questions more cheaply.
The use case was legitimate — the client needed to stitch authenticated web and app sessions, email engagement events, and support ticket interactions at the individual customer level, then apply CJA's flow and cohort analysis tools to understand churn precursors. A data warehouse could hold the data but could not replace the analytical environment CJA provided.
Data source preparation and schema alignment
Getting data into CJA requires all sources to share a common person identifier and a compatible timestamp format. Adobe Analytics used the hashed CRM ID as the primary eVar. Marketo used email address. Zendesk used the Zendesk contact ID.
We worked with the CRM and engineering teams to implement an identity resolution table in AEP that mapped all three identifiers to the canonical CRM ID. Each source was then configured to include this identifier in its AEP dataset before being connected to CJA.
- Adobe Analytics: CRM ID already set as eVar — connected directly
- Marketo: email-to-CRM ID mapping table created in AEP
- Zendesk: webhook integration sending ticket events to AEP with CRM ID
- Product app: AEP Mobile SDK sending events with authenticated CRM ID
- Renewal events: Salesforce subscription data loaded via AEP batch ingestion
Journey analysis and churn modelling
With five data sources stitched in CJA, we built the analysis the retention team had been trying to run for two years — a flow analysis of the 90 days preceding renewal for customers who churned versus customers who renewed. The patterns were clear and actionable: churned customers had a significantly higher support ticket rate in the 30 days before renewal, lower feature adoption in the 60 days before renewal, and near-zero engagement with the renewal reminder email sequence.
These signals became the basis for a churn prediction model — customers entering the 90-day pre-renewal window who exhibited any two of the three risk signals were flagged for proactive outreach by the customer success team. The model was validated against the historical CJA data before deployment.
Outcome
For the first time, the retention team had a complete view of the customer journey from acquisition through renewal across all five data sources. The churn prediction model, built on signals identified through CJA analysis, improved early churn identification accuracy by 18% compared to the previous model based on email engagement alone. Customer success outreach informed by the model reduced churn rate in the pilot cohort by 9% in the first renewal cycle.