guides
Migrating Off a SaaS Customer Data Platform: A 90-Day Plan for Identity Graphs, Consent State and Destinations
By Art Kukharenko · Published · Updated
Browse guides resourcesA customer data platform (CDP) migration fits in 90 days if you split it into five phases: inventory and contract review (weeks 1 to 2), data contracts and schema mapping (3 to 4), identity graph and consent-state export and validation (5 to 8), destinations and dual-run (9 to 10), and cutover and decommission (11 to 12). The hard parts are anonymous identities, merged profiles, suppression lists and historical replay, not the SDK swap.
Who this is for: teams leaving Twilio Segment, mParticle or a similar SaaS for another vendor, an open source stack or a customer-owned deployment. You get a week-by-week plan, checklists, the legal terms that shape the exit, a risk register and a go/no-go checklist. Part of the guides hub.
The 90-day plan at a glance
Table 1. Phases, outputs and gates
Scroll horizontally to compare all columns ↔
| Weeks | Phase | Main outputs | Gate to pass |
|---|---|---|---|
| 1-2 | Inventory and contract review | Source, destination and audience register; contract terms; target decision | Notice deadline known; scope signed off |
| 3-4 | Data contracts and schema mapping | Event schema, identifier map, tracking plan as code | Mapping reviewed by data owners |
| 5-8 | Identity graph and consent-state export and validation | Exported identity and consent data loaded; match and consent audits | Match rate and consent parity within agreed tolerance |
| 9-10 | Destinations and dual-run | Destinations rebuilt; shadow traffic compared | Delivery parity per destination tier |
| 11-12 | Cutover and decommission | Traffic switched; old workspace closed; deletion evidence | Go/no-go checklist passed |
Start from the contract, not the calendar. A missed non-renewal notice can lock in another contract term. For pricing context see Twilio Segment pricing and alternatives; for the target options see open-source customer data platforms compared.
Weeks 1 to 2: inventory and contract review
Build a register of everything the platform does. The migration scope is whatever the old platform quietly does for you.
- Sources: every web, mobile, server and cloud source, with SDK versions and write keys.
- Destinations: each destination, whether it runs in cloud mode or device mode, and its owner.
- Audiences, traits and transformations: definitions, schedules, functions and any logic living in the vendor UI.
- Identity rules: which identifiers merge, in what priority, and any custom external IDs.
- Consent integrations: the consent management platform (CMP), categories and how events are gated.
- Access and data held: users, API keys, webhooks, and which history exists only inside the vendor.
Then read the contract and the vendor's plan limits. Several export tools are plan-gated. Segment's Replay is available only on Business plans and is not self-serve: you contact support with the workspace, source, destinations and time period 1. Profiles Sync, which sends unified profiles and identity-graph tables to a warehouse, requires a Business tier account 2. Segment Data Lakes is also Business-only, is in limited access, and has been fully deprecated in the EU 5. Free and Team workspaces are limited to one warehouse 6.
Contract review checklist
- Term, renewal date, auto-renewal and the notice period to stop it.
- Rights to export all customer data, and in which formats.
- Exit assistance: scope, duration, price and named contacts.
- Return and deletion of data after termination, with a certificate.
- Sub-processors, data processing agreement, any business associate agreement, and fees on termination or retrieval.
Decide the target now. Another SaaS vendor means mostly mapping. An open source or self-built stack means you also build identity, consent and audit (see what you must build or buy). A warehouse-native stack moves the profile store into your warehouse. A customer-owned private deployment, such as PrivyCDP or Meiro's self-hosted option, moves operations to your side. Use the RFP template and the 3-year TCO model to compare.
Weeks 3 to 4: data contracts and schema mapping
A data contract is an agreed, versioned definition of an event: name, properties, types, identifiers, owner and consent category. Write them before you move anything.
- Export the current tracking plan or infer one from live traffic, then keep the canonical schema in version control.
- Map every source property to the target schema, including renames and type changes.
- List all identifiers (anonymous ID, user ID, email, device ID, external IDs) and their formats.
- Note semantic differences. Segment treats
userId,anonymousIdandgroupIdas case-insensitive, soUser_123anduser_123resolve to one profile 3. A target that is case-sensitive will split them. - Validate at the edge: reject or quarantine events that break the contract, and set how long old and new schema versions run in parallel.
If you choose a Segment-compatible target, the SDK change can shrink. The rudder-server README describes Segment API compatibility 11, and the Jitsu README lists a Segment proxy as a collection path 12. Compatibility covers the call shapes; it does not cover identity, consent or audience behaviour.
Weeks 5 to 8: identity graph and consent-state export and validation
This is the longest phase because errors here cause real-world harm: wrong merges, lost history, and messages to people who opted out. For background see identity resolution explained.
Export the identity graph
With Segment's Profiles Sync, the raw tables are external_id_mapping_updates, id_graph_updates and profile_traits_updates, and the materialised tables are user_identifier, user_traits and profile_merges, all backfilled with full history 2. Event tables backfill only the last two months 2. Syncs run hourly, are limited to 3 TB each, and support Snowflake, Redshift, BigQuery, Azure Synapse, Postgres and Databricks 2. If another vendor is your source, ask for the equivalent artefacts in writing.
Decide between porting merges and recomputing from raw events. Porting preserves existing profile IDs and decisions that downstream systems already reference. Recomputing applies your rules cleanly but changes who is "the same person". One workable approach is to port the mapping, keep profile_merges as the audit trail, and recompute only when rules change.
Table 2. Identity export artefacts and validation checks
Scroll horizontally to compare all columns ↔
| Artefact | Why it matters | Validation check |
|---|---|---|
| Identifier-to-profile mapping | Keeps every cookie, device and email attached to the right person | Row counts per identifier type match the source within tolerance |
| Merge history | Needed to explain and unmerge | Sample 200 merged profiles by hand |
| Profile traits | Segmentation inputs | Compare traits on a random sample and on the top 1,000 profiles by value |
| Deleted or suppressed IDs | Prevent resurrection of erased people | Zero deleted users present in the target |
Export consent state
Suppression lists
Gather every list that stops contact: unsubscribe lists in email service providers, SMS opt-outs, do-not-sell signals, erasure requests and complaint or bounce suppressions. Build one union list and load it into the target before any activation is switched on. See consent withdrawal across channels.
Validation tests before leaving this phase
- Profile counts by identifier type agree within the tolerance you set.
- A fixed sample of 500 people yields the same segment membership in old and new systems.
- Every person on the suppression union list is blocked in the target for every channel.
- No deleted person exists in the target.
Weeks 9 to 10: destinations and dual-run
Rebuild destinations in priority tiers: tier 1 revenue and compliance systems, tier 2 analytics and engagement, tier 3 the rest. Segment's replay tool shows the issues: only cloud-mode destinations that handle timestamps are eligible, rows cannot be excluded, and some destinations do not deduplicate 1.
- Each destination has an idempotency key or message ID strategy so retries do not duplicate.
- Rate limits and retry policies are tested against the destination's API, not assumed.
- Device-mode destinations have a replacement plan, since they run in the browser or app.
- Shadow mode: the new pipeline receives the same events and writes to test or sandbox targets.
- Parity report per destination: event counts, field values, latency, error rates.
Webhook and SDK swap. Move server-side sources first, then web with a feature flag, then mobile. Mobile releases lag: old app versions will keep calling the old endpoint for weeks or months, so run a forwarding proxy and set an end-of-life date. Use a first-party custom domain for collection so future moves need no SDK change.
Weeks 11 to 12: cutover and decommission
- Freeze window agreed; cutover order tier 3, tier 2, then tier 1 destinations, with the suppression union list live first.
- Rollback plan tested: how to point sources back, and for how long the old platform stays paid and active.
- Old write keys revoked after a stated grace period, and a final export of anything unique to the old platform stored with checksums.
- Deletion requested in writing, with a vendor certificate, and the termination notice served on time.
- Evidence pack stored: inventory, mappings, validation reports, consent audit, deletion certificate.
- Post-migration review at 30 days.
The hard parts
Anonymous identities. Pre-login history is linked through anonymous IDs. Keep the same anonymous ID values in cookies and local storage so sessions continue; resetting them at cutover orphans history.
Merged profiles. Survivorship rules decide which traits win and which profile ID survives. Document them, keep merge history and keep unmerge possible. Wrong merges are worse than missed ones. Segment's priority-based merge algorithm is not explained on its public page 3, so ask for the rules in writing and test shared devices and shared emails.
Suppression, erasure and replay. Apply the union suppression list before activation and keep it synchronised afterwards. Deleted people must not return from a replay, which is also subject to the limits above.
Contract and legal points
This section is general information, not legal advice. Check your own contract and regulator guidance.
Exit assistance clauses. Specify scope (data, configuration, tracking plans), open documented formats, duration, price and named people. See vendor lock-in clauses and the cloud exit strategy template.
DORA, for EU financial entities. Regulation (EU) 2022/2554 requires, for ICT services supporting critical or important functions, exit strategies that cover provider failure, service decline or termination, and that let the entity leave without disrupting operations or harming clients; plans must be documented, tested and reviewed, with alternatives identified (Art. 28(8)) 8. Contracts must allow termination in defined situations (Art. 28(7)), give access to and return of data in an accessible format, including on insolvency or termination (Art. 30(2)(d)), and for critical or important functions include exit strategies with a mandatory adequate transition period (Art. 30(3)(f)) 8. Record the vendor in your register of information and the vendor register worksheet.
GDPR. Processor contracts must provide, at the controller's choice, deletion or return of all personal data at the end of services (Art. 28(3)(g)) 10. Portability (Art. 20) covers only data provided by the individual on a consent or contract basis, so it is not your exit mechanism 10.
Risk register
Scroll horizontally to compare all columns ↔
| Risk | Likelihood | Impact | Mitigation | Owner |
|---|---|---|---|---|
| Notice deadline missed, contract auto-renews | Medium | High | Calendar the deadline in week 1; legal confirms in writing | Procurement |
| Match rate drops after identity load | Medium | High | Sample audits, port merges, hold activation until parity | Data lead |
| Messages sent to opted-out people | Low | Very high | Union suppression list live before any activation; consent audit | Compliance |
| Deleted people resurrected by replay | Low | High | Replay through the erasure filter; zero-deleted check | Data lead |
| Export tools gated by plan or support queue | High | Medium | Request exports in week 1; budget plan upgrade if needed | Programme manager |
| Mobile long tail keeps hitting old endpoint | High | Medium | Forwarding proxy; sunset date | Mobile lead |
| Consent history older than two months missing | Medium | High | Source from the CMP of record | Compliance |
| Regulatory evidence gap (for example DORA exit plan) | Medium | High | Evidence pack and tested exit plan | Risk |
Go/no-go checklist
Agree thresholds with data owners before week 9.
- Contract notice served or confirmed, with dates agreed in writing.
- Event volume parity within the agreed tolerance (for example 1 percent) for seven consecutive days.
- Identity match rate and merge parity within tolerance on the sample set.
- Suppression union list verified blocking on every channel, with a test.
- Consent parity audit signed by the DPO or compliance.
- Every tier 1 destination passes its parity report.
- Rollback tested, with the old platform kept read-only for the agreed window.
- Support and on-call rota covers the cutover weekend.
- Evidence pack ready for auditors.
If any item is red, the answer is no-go.
Checked 17 October 2026 unless stated.
Frequently asked questions
How long does a customer data platform migration take?
Ninety days is realistic for a mid-sized estate when contract, scope and target are settled in the first two weeks. Large estates with many destinations or long mobile tails can need longer. The identity and consent phase is usually the critical path.
Can I export my identity graph from Segment?
On a Business tier account, Profiles Sync sends identity-graph and profile tables to a supported warehouse, with full history for the profile tables and two months for event tables 2. Free and Team plans do not include it. Confirm the artefacts you need in writing before relying on them.
How do I migrate from Segment without losing history?
What does the EU Data Act change about leaving a SaaS vendor?
For data processing services it requires switching terms: notice of up to two months, a transition period, a data retrieval window and erasure afterwards, and it removes switching charges from 12 January 2027 9. It does not necessarily make all egress free. Seek legal advice on whether your contract falls within scope.
Do DORA exit strategies apply to a marketing customer data platform?
If you are an EU financial entity and the service supports a critical or important function, yes: exit strategies must be documented, tested and reviewed (Art. 28(8)) 8. If the platform supports only non-critical activity, the obligations are lighter, but your register of information and contract terms still apply.
Should I port merges or recompute identity?
Port the mapping and keep merge history when downstream systems reference existing profile IDs; recompute when your rules are changing and you can re-key downstream systems. Either way, validate with samples and keep an unmerge path. Wrong merges are costlier than missed merges.
Sources
- Segment Replay Open source
- Segment Profiles Sync Open source
- Segment Identity Resolution Open source
- Segment consent management Open source
- Segment Data Lakes Open source
- Segment warehouses Open source
- Twilio Segment pricing (MTU counts anonymous visitors) Open source
- Regulation (EU) 2022/2554 (DORA), Articles 28 and 30 Open source
- Regulation (EU) 2023/2854 (Data Act), Articles 23, 25 and 29 Open source
- GDPR Articles 7, 20 and 28 (reproduction of the official text) Open source · Additional source · Additional source
- rudder-server README Open source
- Jitsu README Open source
- Greenberg Traurig, EU Digital Omnibus package proposes amendments to the Data Act (July 2026; secondary) Open source
Put this evaluation into practice.
Request an architecture reviewFurther reading
- CDP guides
- Deployment readiness checklist
- Email Suppression List Management Across
- CDP RFP Template: 50 Requirements
- CDP Total Cost of Ownership: 3-Year
Published: · Updated:
Publication date recorded for the approved release. Editorial updates do not establish legal approval or a customer result.