Northbeam
Northbeam is a marketing attribution and analytics platform that provides multi-touch attribution and media mix modeling. This destination sends order and refund events server-side from Chord CDP to the Northbeam Orders API. There is no device-mode component.
Getting Started
This is a cloud-mode destination. You will need:
- API Key — found in your Northbeam dashboard under Settings > API Keys.
- Data Client ID — a UUID identifying your account, found in your Northbeam dashboard under Settings > API Keys.
Optionally:
- Test Mode — when enabled, events are sent to Northbeam's UAT environment instead of production. Defaults to false.
Connecting to the Northbeam CDP Destination
- Log into the Chord data platform.
- Navigate to the CDP.
- Click the "Add" button next to Destinations.
- Select Northbeam from the destination catalog.
- Enter the destination name, API Key, and Data Client ID.
- Optionally enable Test Mode during initial setup.
- Click "Create" to connect.
Events
Event Mapping
Chord Event | Northbeam Action | Notes |
|---|---|---|
Order Completed | Create order | |
Order Refunded | Create order with refunds | |
All other events (page, identify, and other track events) are silently skipped.
Order Completed
Sends an order to the Northbeam Orders API. The event is skipped if required fields are missing.
Order Attributes
Northbeam Attribute | Chord Source (Priority Order) | Notes |
|---|---|---|
order_id | properties.order_id | Required |
customer_id | userId > properties.customer_id | Required |
customer_email | properties.email > context.traits.email > traits.email | Required |
time_of_purchase | timestamp | ISO 8601 format; falls back to current time |
purchase_total | properties.total > properties.revenue | Defaults to 0 |
currency | properties.currency | Defaults to "USD" |
tax | properties.tax | Defaults to 0 |
shipping_cost | properties.shipping | Defaults to 0 |
Product Attributes
Each product in properties.products[] is required. Each product must have an id and name.
Northbeam Attribute | Chord Source (Priority Order) | Notes |
|---|---|---|
id | properties.products[].product_id > properties.products[].sku | Required |
name | properties.products[].name | Required |
quantity | properties.products[].quantity | Defaults to 1 |
price | properties.products[].price | Defaults to 0; coerced to number (accepts string values) |
variant_id | properties.products[].variant_id > properties.products[].product_id > properties.products[].sku | Always present |
variant_name | properties.products[].variant > properties.products[].name | Always present |
Order Refunded
Sends a refund to the Northbeam Orders API as an order payload with a refunds array. The event is skipped if required fields are missing.
Order Attributes
Same as Order Completed above, except time_of_purchase prefers properties.original_timestamp over timestamp to preserve the original order date.
Refund Attributes
The destination checks for an explicit properties.refunds[] array first. If not present, it falls back to properties.products[] and treats all products as fully refunded.
From properties.refunds[] (preferred):
Northbeam Attribute | Chord Source (Priority Order) | Notes |
|---|---|---|
product_id | properties.refunds[].product_id | Required |
variant_id | properties.refunds[].variant_id | |
quantity | properties.refunds[].quantity | Defaults to 1 |
refund_amount | properties.refunds[].refund_amount > properties.refunds[].amount > properties.refunds[].price | Required |
refund_cost | properties.refunds[].refund_cost | Defaults to refund_amount |
refund_made_at | properties.refunds[].refund_made_at > timestamp | ISO 8601 format |
From properties.products[] (fallback):
Northbeam Attribute | Chord Source (Priority Order) | Notes |
|---|---|---|
product_id | properties.products[].product_id > properties.products[].sku | |
variant_id | properties.products[].variant_id > properties.products[].product_id > properties.products[].sku | |
quantity | properties.products[].quantity | Defaults to 1 |
refund_amount | properties.products[].price × properties.products[].quantity | Calculated |
refund_made_at | timestamp | |
Validation
Both event types are validated before sending. Required fields:
Order Completed: order_id, customer_id, customer_email, non-empty products[] with each product having id and name.
Order Refunded: order_id, customer_id, customer_email, non-empty refunds[] with each refund having product_id and refund_amount.
Testing and Validation
After connecting the destination, use the browser console and CDP Live Events to verify behavior. No access to the Northbeam dashboard is required.
Order Completed — happy path
window.chord.track("Order Completed", {
order_id: "TEST-001",
email: "[email protected]",
total: 89.97,
tax: 7.00,
shipping: 5.99,
currency: "USD",
products: [
{
product_id: "PROD-001",
name: "Classic T-Shirt",
price: 29.99,
quantity: 2,
variant_id: "VAR-001-BLK-M",
variant: "Black / Medium"
}
]
});In CDP Live Events, confirm:
- A Northbeam Request Payload INFO log appears containing the full transformed payload and messageId
- A 200 or 201 response log follows
Order Completed — sku-only product (no variant fields)
window.chord.track("Order Completed", {
order_id: "TEST-002",
email: "[email protected]",
total: 103.00,
currency: "USD",
products: [
{ sku: "RVTTG50", name: "REVERSE Tone Correcting Treatment", price: 103, quantity: 1 }
]
});In CDP Live Events, confirm:
- The payload log shows id: "RVTTG50", variant_id: "RVTTG50", variant_name: "REVERSE Tone Correcting Treatment" (all falling back from sku and name)
- No warnings are logged
Order Refunded
window.chord.track("Order Refunded", {
order_id: "TEST-001",
email: "[email protected]",
refunds: [
{
product_id: "PROD-001",
quantity: 1,
refund_amount: 29.99
}
]
});In CDP Live Events, confirm the payload log shows a refunds array with the correct refund_amount.
Updated 29 Apr 2026