guides

How to Run a Customer Data Platform Proof of Concept With Synthetic Data

By Art Kukharenko · Published · Updated

Browse guides resources

A 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 ↔

Comparison — source references are listed below
ToolApproachLicence as stated by the projectUse in a PoC
Faker (Python)Rule-based providers; seedableMIT 3Profiles, addresses, emails; pin the version, since output can change between patch releases
Faker.jsRule-based, JavaScriptMIT; 70+ locales 4Event generators in Node
MimesisRule-based, PythonMIT; 47 locales 5Locale-heavy datasets
Synthetic Data Vault (SDV)Learns patterns from real tabular data; single-table, multi-table, sequentialBusiness Source License 6Only from a vetted, de-identified sample; read the licence and test for leakage

Recipe:

  1. 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.
  2. 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.
  3. Generate event streams with realistic shape: daily cycles, bursts, bot traffic, several time zones, sized to your peak events per second.
  4. 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.
  5. Write a ground-truth file with the expected outcome for every injected fault, so scoring is arithmetic, not opinion.
  6. Version the generator, seed and dataset hash; give every vendor the same files.
  7. 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 ↔

Comparison — source references are listed below
TestPass criterionWeightGate
1 Contract100% of malformed events quarantined with reason code; none reach profiles15No
2 Duplicates, late, failedZero silent drops; reconciliation balances; documented window honoured15No
3 Identity and consentExpected merges correct; opt-outs preserved; unmerge restores state20Yes
4 ActivationAll eligible messages delivered after outage; none to withdrawn profiles20Yes
5 Audit trace3 of 3 sends traced in under 5 minutes15Yes
6 Restore (private)Restored within agreed recovery time; counts and consent match15Yes

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 ↔

Comparison — source references are listed below
WeekWorkOutput
Before week 1Criteria signed off; dataset generated; environment and access readyTest plan, dataset hash
1Provision or install; tests 1 and 2Ingestion results
2Test 3 identity and consentMerge and suppression results
3Test 4 activation with failure injectionDelivery report
4Test 5 audit trace; upgrade and rollback drillTrace records
5Test 6 restore; optional load; export testRestore report, export sample
6Re-runs, scoring, decisionScorecard, 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?

Rule-based generators such as Faker, Faker.js and Mimesis, all MIT-licensed 345, produce profiles and events with seeds for repeatability. SDV learns from real tabular data and is under a Business Source License 6; use it only with a vetted sample.

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

  1. 45 CFR 164.502(b), minimum necessary standard Open source
  2. ICO, synthetic data Open source
  3. Faker (Python), repository and documentation Open source · Additional source
  4. Faker.js Open source
  5. Mimesis Open source
  6. Synthetic Data Vault (DataCebo) Open source · Additional source
  7. JSON Schema Open source
  8. RFC 2606, Reserved Top Level DNS Names Open source
  9. Twilio Segment, duplicate data Open source
  10. WireMock documentation Open source
  11. NIST SP 800-34 Rev. 1, Contingency Planning Guide for Federal Information Systems Open source
  12. Grafana k6, test types Open source

Put this evaluation into practice.

Assess your deployment requirements

Further reading

Published: · Updated:

Publication date recorded for the approved release. Editorial updates do not establish legal approval or a customer result.

Need help?

Ask the PrivyCDP Assistant