CDP (customer data platform)
A central hub that collects customer events once, then routes them to analytics, marketing, support, and warehouse tools.
See it
What it is
A customer data platform sits between the places customer data is created and the tools that consume it. Your app sends one 'checkout_completed' event to the CDP; the CDP can forward it to Amplitude, Braze, Meta, and a warehouse, translating the payload for each destination. Segment, bought by Twilio in 2020, popularized this source-to-destination shape, and RudderStack copies it as open source. The useful promise is not a magical complete customer profile. It is one collection point, one schema, and fewer direct SDK integrations.
Reach for one when the same events must feed several analytics, marketing, support, or warehouse systems. It gives you a place to enforce a tracking plan, block sensitive properties, replay supported data, and replace a destination without rewriting every call site. A warehouse can store and query the history; a CDP is chiefly the collection, identity, audience, and routing layer around that history.
Gotcha: a CDP multiplies whatever you send it. A misspelled event, raw email address, or duplicate checkout can land in ten tools before anyone notices. Destination filters do not repair the source data, and identity merging rules differ between products. Put a typed tracking wrapper and schema checks in front of the CDP, and treat its debugger as proof of delivery, not proof that every downstream report is right.
Ask AI for it
Add a CDP layer using Segment's Analytics.js 2.0 in the browser and Segment's HTTP Tracking API on the server. Put track(), identify(), page(), and group() behind one typed adapter; require a stable messageId on every server event; allow only events and properties from a checked-in tracking plan; and reject properties named email, phone, password, token, or card_number unless the plan explicitly permits them. Route checkout_completed to Amplitude and the warehouse, keep browser and server event names identical, and add tests showing that one call produces one canonical payload for both destinations.