Chord CDP
...
CDP Destination Catalog
Postie
15 min
introduction postie is a commerce messaging and customer engagement platform that enables brands to deliver personalized order updates, abandoned cart reminders, and post‑purchase messages across sms, email, and messaging channels integrating postie as a chord cdp destination allows chord to forward real‑time customer events and identifiers directly into postie, enabling highly targeted, behavior‑based communication getting started before connecting postie as a cdp destination active postie account ensure you have a postie account with appropriate api credentials api key / access token retrieve your postie api key or access token from the postie dashboard or developer settings you’ll typically find this under settings → api & integrations → api keys (or equivalent) in the postie ui connecting to the postie cdp destination before connecting destinations in the chord cdp, please verify with all destination owners that all non chord cdp configured destinations are disabled running external destinations alongside configured chord cdp destinations can result in duplicate events downstream log into the chord data platform navigate to cdp → destinations click add and choose postie from the destination catalog in the configuration form destination name enter a recognizable name (e g , “postie – production”) api key / token paste your postie api credentials (optional) environment if supported, tag dev/staging vs prod click create to activate the destination post‑connection considerations disable other destinations before connecting postie via chord cdp, disable parallel external event forwards (e g , any existing direct postie apis you may be using) to avoid duplicates mapping tuning use destination mapping settings to adjust how chord event property names map to postie api fields testing after connecting, use the chord cdp destination events tab to verify events are successfully delivered and have correct schemas verification & troubleshooting navigate to cdp → incoming events to confirm events are flowing into chord go to cdp → destination events and filter by your postie connection to verify delivery status look for success (2xx) vs error status codes for diagnostics if events aren’t appearing in postie verify api credentials confirm required fields are present (e g , email/phone) check consent management configuration for required categories events note only events supported by postie’s api will be sent events without mapped handlers may be dropped or require custom field mappings in the destination settings event mapping chord event letterpress sdk call page letterpress("trackpageview") user created / email captured letterpress("trackunstructevent", { schema, data }) order completed letterpress("addtrans") + letterpress("additem") + letterpress("tracktrans") page fires a postie page view tracking call letterpress sdk call letterpress("trackpageview") no additional attributes are sent with page events track email capture ( user created / email captured ) sends an email capture event using postie's iglu schema letterpress sdk call letterpress("trackunstructevent", { schema, data }) letterpress attribute chord source (in priority order) notes schema (hardcoded) iglu\ com getletterpress/email/jsonschema/1 0 0 data email properties email > traits email required; event is skipped if no email is found order completed sends a full e commerce transaction to postie using the letterpress addtrans / additem / tracktrans flow the event is skipped if properties products is empty transaction attributes ( addtrans ) letterpress sdk call letterpress("addtrans", orderid, affiliation, total, tax, shipping, city, state, country, currency, \[addresscontext]) letterpress parameter chord source (in priority order) notes orderid properties cart id / properties cartid / properties order id / properties orderid / properties id > properties checkout id > "" affiliation properties affiliation > "" total properties total > properties value formatted to 2 decimal places tax properties tax formatted to 2 decimal places; defaults to "0 00" shipping properties shipping formatted to 2 decimal places; defaults to "0 00" city properties shipping city > properties address city / context traits address city / traits address city > "" state properties shipping state > properties address state / context traits address state / traits address state > "" country properties shipping country > properties address country / context traits address country / traits address country > "" currency properties currency > properties meta i18n currency > "usd" (default) address context an address context object is appended to the addtrans call as the last parameter address attribute chord source (in priority order) notes schema (hardcoded) iglu\ com getletterpress/address/jsonschema/1 0 0 data name properties first name / properties firstname > context traits first name > traits first name + properties last name / properties lastname > context traits last name > traits last name concatenated and trimmed data street properties address street > context traits address street > traits address street > "" data street 2 properties address street2 > context traits address street2 > traits address street2 > "" data zip properties shipping zipcode > properties address zip / properties address postalcode > context traits address zip / context traits address postalcode > "" data city same as transaction city above data state same as transaction state above data country same as transaction country above data email properties email / properties emailaddress > context traits email > traits email > "" item attributes ( additem ) each product in properties products is sent via a separate additem call letterpress sdk call letterpress("additem", orderid, sku, name, category, price, quantity, currency) letterpress parameter chord source (in priority order) notes orderid same as transaction orderid above sku properties products\[] sku > properties products\[] product id > properties products\[] id > "" name properties products\[] name > "" category properties products\[] category > properties products\[] variant > "" price properties products\[] price formatted to 2 decimal places; defaults to "0 00" quantity properties products\[] quantity > "1" (default) converted to string currency same as transaction currency above after all items are added, the transaction is finalized with letterpress("tracktrans") initialization the plugin manages sdk loading state ( fresh → loading → loaded / failed ) to prevent duplicate script loads concurrent events during loading are queued via a shared initialization promise if the script fails to load, subsequent events are silently dropped csp requirements if your site uses a content security policy, allow the following domains directive domain script src https //scripts postie com connect src https //t getletterpress com event mapping notes user identity for triggered messages, postie requires email and/or phone number events forwarded without a valid phone/email will be ignored by the postie ingestion api timestamp chord passes the original event timestamp so campaigns in postie reflect correct event timing custom fields if postie supports custom event properties (e g , cart value, product category), ensure they’re included in the chord event payload via your implementation consent confirm that user consent for marketing messages is captured and mapped in your cdp workspace; this ensures postie respects privacy preferences