guides
How to Run a Customer Data Platform Proof of Concept With Synthetic Data
By Art Kukharenko · Published · Updated
Browse guides resourcesA customer data platform (CDP) proof of concept should test the hard behaviours, not the happy path: schema enforcement, duplicate and late events, identity merges with opt-outs, delivery to a real destination with retries, an audit trace of one decision and, for private deployments, a restore. Run it for four to six weeks on synthetic data so no production personal data reaches a vendor sandbox, and score it against pass criteria written before kickoff.
Who this is for: architects, security leads and procurement teams running the proof-of-concept (PoC) gate of a vendor selection. It follows the CDP RFP template; cost is covered in the 3-year total cost of ownership model. More in the guides hub.
Why use synthetic data in a customer data platform PoC
Synthetic is not automatically anonymous. The UK Information Commissioner's Office says synthetic data modelled on personal data may still reveal it if the information can be inferred, and names model inversion, membership inference and attribute disclosure as known vulnerabilities 2. For a PoC, generate from rules and schemas rather than training a generator on production tables, unless your privacy team signs off.
Limit. Synthetic data will not reproduce the dirty formats and odd joins of real systems. After the PoC, run a short shadow phase on a small approved slice inside your own boundary.
How to generate synthetic data
Scroll horizontally to compare all columns ↔
| Tool | Approach | Licence as stated by the project | Use in a PoC |
|---|---|---|---|
| Faker (Python) | Rule-based providers; seedable | MIT 3 | Profiles, addresses, emails; pin the version, since output can change between patch releases |
| Faker.js | Rule-based, JavaScript | MIT; 70+ locales 4 | Event generators in Node |
| Mimesis | Rule-based, Python | MIT; 47 locales 5 | Locale-heavy datasets |
| Synthetic Data Vault (SDV) | Learns patterns from real tabular data; single-table, multi-table, sequential | Business Source License 6 | Only from a vetted, de-identified sample; read the licence and test for leakage |
Recipe:
- Write the event contract in a schema language such as JSON Schema 7 and list identity keys: email, phone, customer ID, device ID, cookie ID.
- Generate profiles with a fixed seed. Use reserved domains such as example.com and example.org 8 and fictional phone ranges so nothing can reach a real person.
- Generate event streams with realistic shape: daily cycles, bursts, bot traffic, several time zones, sized to your peak events per second.
- Inject labelled fault cohorts. Suggested starting point: 2% duplicates (half within an hour, half after 48 hours), 1% late events (24 and 72 hours), 0.5% malformed, 1% on a drifted schema version, 1,000 identity pairs with conflicting attributes, and 500 profiles with consent withdrawals.
- Write a ground-truth file with the expected outcome for every injected fault, so scoring is arithmetic, not opinion.
- Version the generator, seed and dataset hash; give every vendor the same files.
- Never generate realistic payment-card, national-ID or medical-record numbers; use obviously fictional patterns.
The acceptance workflow: six tests
Test 1: ingest with an explicit contract
Register the schema, then load the dataset including malformed events and the drifted version. Pass: every malformed event is quarantined with a reason code, none reaches a profile, and corrected events replay once.
Test 2: duplicate, late and failed events
Send duplicates inside and outside the vendor's deduplication window, late events, and a burst during which the endpoint returns errors. Get the key and window in writing. For example, Twilio Segment documents deduplication on messageId within an approximately 24-hour look-back window, described as 99% effective, and cannot deduplicate events that have no messageId 9. Pass: input equals processed plus quarantined plus dropped-with-reason, with zero silent drops, and behaviour outside the window matches the documentation.
Test 3: identity merge with opt-out
Load the conflicting pairs and the consent cohort. Pass: expected merges happen, conflicts follow the configured rule, an opted-out profile that merges with an opted-in one stays suppressed, and unmerge restores the previous state. Background: identity resolution explained and consent withdrawal and suppression architecture.
Test 4: activation to one real destination, with retries
Connect one destination you control, such as a sandbox account or an HTTP endpoint. Put a fault-injecting stub in front of it, for example WireMock, which supports fault and latency injection 10, and fail it for ten minutes. Pass: every eligible message arrives after recovery, retries and dead letters are visible, any duplicates carry the same idempotency key, and no message reaches a withdrawn profile.
Test 5: audit trace of one decision
Pick three sends at random and ask the vendor to trace each in front of you. Pass: inputs, rule or model version, consent state at send time, destination and timestamp are reconstructed in under five minutes each. Then try to alter the audit log; it should refuse or show tampering.
Test 6: restore test for private deployments
Take a backup, destroy a copy of the environment, restore into a clean one, and compare record counts, consent states and audit continuity. Pass: restored within the agreed recovery time, counts and consent checksums match, and keys held in your key management system worked as designed. NIST's contingency-planning guide is a standard reference for recovery planning 11. For SaaS, ask for the vendor's latest restore evidence and run an export instead (see the cloud exit strategy template).
Optional: load. Replay the stream at 2x your peak. Grafana k6 describes smoke, load, stress, spike and soak test types 12. Method: peak-load activation test plan.
Success criteria and scoring
Score each test 0–5 using the scale in the RFP template (0 absent, 3 meets with limits, 5 meets and is independently evidenced). A vendor passes if every gate scores at least 3 and the weighted total reaches 4.0 out of 5. Weights and thresholds are suggestions; fix yours before kickoff.
Scroll horizontally to compare all columns ↔
| Test | Pass criterion | Weight | Gate |
|---|---|---|---|
| 1 Contract | 100% of malformed events quarantined with reason code; none reach profiles | 15 | No |
| 2 Duplicates, late, failed | Zero silent drops; reconciliation balances; documented window honoured | 15 | No |
| 3 Identity and consent | Expected merges correct; opt-outs preserved; unmerge restores state | 20 | Yes |
| 4 Activation | All eligible messages delivered after outage; none to withdrawn profiles | 20 | Yes |
| 5 Audit trace | 3 of 3 sends traced in under 5 minutes | 15 | Yes |
| 6 Restore (private) | Restored within agreed recovery time; counts and consent match | 15 | Yes |
Two evaluators score independently; the vendor may re-run a failed test once; log every defect with severity and owner.
Timeline: four to six weeks
Scroll horizontally to compare all columns ↔
| Week | Work | Output |
|---|---|---|
| Before week 1 | Criteria signed off; dataset generated; environment and access ready | Test plan, dataset hash |
| 1 | Provision or install; tests 1 and 2 | Ingestion results |
| 2 | Test 3 identity and consent | Merge and suppression results |
| 3 | Test 4 activation with failure injection | Delivery report |
| 4 | Test 5 audit trace; upgrade and rollback drill | Trace records |
| 5 | Test 6 restore; optional load; export test | Restore report, export sample |
| 6 | Re-runs, scoring, decision | Scorecard, recommendation |
A four-week version runs tests 1–3 in weeks 1–2 and tests 4–6 in weeks 3–4, with one re-run allowed.
Common mistakes
- Using a production extract "just for the PoC".
- Testing only the happy path, or letting the vendor choose the data.
- Running in the vendor's demo tenant when you will buy a private deployment; deploy in your own cloud account or data centre instead (see on-premise and self-hosted platforms).
- Skipping the exit test. If you may migrate later, see migrating off a SaaS CDP.
- Changing criteria after seeing results.
Frequently asked questions
What is a CDP proof of concept?
A time-boxed trial in which a shortlisted vendor's platform processes your test data against written pass criteria. It is the gate between paper evaluation and contract, covering ingestion, identity, consent, activation, audit and recovery rather than a feature tour, and it should end with a scorecard.
How long should a CDP pilot take?
Four to six weeks suits most evaluations: one week of preparation, three to four weeks of tests, and a week for re-runs and scoring. Add time if you must deploy into a private environment or test at peak load. Shorter trials tend to cover only the happy path.
Why use synthetic data instead of production data?
It keeps personal data out of a vendor sandbox, makes results repeatable across vendors, and lets you inject faults deliberately. Synthetic data generated from rules carries no individual's information; data produced by a model trained on real records may, so privacy review still applies 2.
Which tools generate synthetic data for testing a CDP?
What are good CDP PoC success criteria?
Measurable and written first: all malformed events quarantined, zero silent drops, opt-outs preserved through merges, every eligible message delivered after a destination outage, three of three decisions traced in five minutes, and a restore within the agreed time. Reconcile against your ground-truth file.
Do we need a restore test if we buy SaaS?
Test recovery evidence and exit instead. Ask for the vendor's latest restore results and run a full export of data, identity graph and consent history into a neutral format. For private deployments, run the restore yourself, because you will own the procedure.
Sources
- 45 CFR 164.502(b), minimum necessary standard Open source
- ICO, synthetic data Open source
- Faker (Python), repository and documentation Open source · Additional source
- Faker.js Open source
- Mimesis Open source
- Synthetic Data Vault (DataCebo) Open source · Additional source
- JSON Schema Open source
- RFC 2606, Reserved Top Level DNS Names Open source
- Twilio Segment, duplicate data Open source
- WireMock documentation Open source
- NIST SP 800-34 Rev. 1, Contingency Planning Guide for Federal Information Systems Open source
- Grafana k6, test types Open source
Put this evaluation into practice.
Assess your deployment requirementsFurther 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.