Postie
Postie is a direct mail retargeting platform (powered by Letterpress) that connects online behavior to physical mail campaigns. This destination loads the Letterpress JavaScript SDK in the browser and forwards page views, email captures, and order completions to enable Postie's retargeting workflows. There is no server-side component.
Getting Started
This is a device-mode destination. The Letterpress SDK is loaded automatically — no manual script installation is required. You will need:
- Account ID — your Postie account ID, found in your Postie account settings.
Connecting to the Postie CDP Destination
- Log into the Chord data platform.
- Navigate to the CDP.
- Click the "Add" button next to Destinations.
- Select Postie from the destination catalog.
- Enter the destination name and your Account ID.
- Click "Create" to connect.
Events
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 Events
Fires a Postie page view call.
Letterpress SDK call: letterpress("trackPageView")
No additional attributes are sent with page events.
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 (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 found |
Order Completed
Sends a full ecommerce transaction to Postie. The event is skipped if properties.products is empty.
Transaction Attributes
Letterpress SDK call: letterpress("addTrans", orderId, affiliation, total, tax, shipping, city, state, country, currency, addressContext)
Letterpress Parameter | Chord Source (Priority Order) | Notes |
|---|---|---|
orderId | properties.order_id > properties.checkout_id | |
affiliation | properties.affiliation | |
total | properties.total | 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 > context.traits.address.city | |
state | properties.shipping_state > context.traits.address.state | |
country | properties.shipping_country > context.traits.address.country | |
currency | properties.currency > "USD" (default) | |
Address Context
An address context object is appended to the addTrans call:
Address Attribute | Chord Source (Priority Order) | Notes |
|---|---|---|
data.name | properties.first_name > context.traits.first_name concatenated with properties.last_name > context.traits.last_name | Trimmed |
data.street | context.traits.address.address1 | Order Completed does not carry a street address property; only populated from identity traits |
data.street_2 | context.traits.address.address2 | Order Completed does not carry a street address property; only populated from identity traits |
data.zip | properties.shipping_zipcode > context.traits.address.zipcode | |
data.city | Same as transaction city | |
data.state | Same as transaction state | |
data.country | Same as transaction country | |
data.email | properties.email > context.traits.email > traits.email | |
Item Attributes
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 (Priority Order) | Notes |
|---|---|---|
orderId | Same as transaction orderId | |
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 | Defaults to "1" |
currency | Same as transaction currency | |
After all items are added, the transaction is finalized with letterpress("trackTrans").
Initialization
The plugin loads https://scripts.postie.com/{accountId}/lp.1.js on the first event received. The plugin manages SDK loading state (fresh → loading → loaded/failed) to prevent duplicate script loads. Concurrent events during loading are queued and processed after initialization completes. 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 |
Updated 6 Apr 2026