---
title: E-commerce Data Ingestion
slug: e-commerce-data-ingestion
docTags: 
createdAt: 2025-04-17T20:51:33.704Z
---

Chord can ingest data from different e-commerce systems for analysis. Two methods are available:

1. **Chord Ingest&#x20;**(preferred): a Chord-built system that will pull data from a customer's e-commerce system.
2. **Chord API** (optional): customers can use Chord's REST API to push data from their source system. Reach out to us at [help@chord.co](mailto\:help@chord.co) for more details.

# Chord Ingest

Chord Ingest is Chord's solution for customer not using Shopify (e.g. Magento, BigCommerce, SalesForce Commerce Cloud). To get started, simply input the URL for your system and a valid API key into your Chord instance.

![](https://api.archbee.com/api/optimize/lGdX_fn_gYcg4afmFCucz-Q4KMOUDhq4ha8YJo6UCC2-20250417-215456.png)

That's it!

## Sample Data Mapping

Since different e-commerce platforms use different names for equivalent records, the table below shows how source records are mapped to Chord's data model.

Below is an example of a data mapping from Magento, a common e-commerce system, and Chord:

### Product

| Chord        | Magento                             |
| ------------ | ----------------------------------- |
| Name         | `name`                              |
| Slug         | Combination of the `name` and `id`. |
| SKU          | `sku`                               |
| External ID  | `id`                                |
| Product Type | `type_id`                           |

### Variant

| Chord       | Magento |
| ----------- | ------- |
| SKU         | `sku`   |
| Price       | `price` |
| External ID | `id`    |

### Order

| Chord              | Magento                                                                                                                                                 |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Line items         | `order.items[]`                                                                                                                                         |
| Discount           | `order.items[].discount_*`                                                                                                                              |
| Tax                | `order.items[].tax_*`                                                                                                                                   |
| Customer           | `order.customer_*`                                                                                                                                      |
| Billing address    | `order.billing_address`                                                                                                                                 |
| Shipping address   | `order.shipping_address`                                                                                                                                |
| Number             | `increment_id`                                                                                                                                          |
| State              | Depends on ...                                                                                                                                          |
| Payment state      | Depends on `total_due`:<br />* If `total_due` > 0: `balance_due`
* If `total_due` \< 0: `credit_owed`
* If `total_due` == 0: `paid`
* Otherwise: `void` |
| Shipment state     | Depends on `status`:<br />* `pending`: `pending`
* `processing`: `ready`
* `complete`: `shipped`                                                        |
| Email              | `email`                                                                                                                                                 |
| Currency           | `base_currency_code`                                                                                                                                    |
| Item total         | `subtotal`                                                                                                                                              |
| Total              | `grand_total`                                                                                                                                           |
| Adjustment total   | `grand_total` - `subtotal`                                                                                                                              |
| Shipment total     | `shipping_incl_tax`                                                                                                                                     |
| Promo total        | `discount_amount`                                                                                                                                       |
| Payment total      | `total_paid`                                                                                                                                            |
| Item count         | `total_item_count`                                                                                                                                      |
| Channel            | `chord`                                                                                                                                                 |
| Included tax total | `base_subtotal_incl_tax`                                                                                                                                |
| External ID        | `id`                                                                                                                                                    |

### Line Item

| Chord                | Magento                                |
| -------------------- | -------------------------------------- |
| Quantity             | `qty_ordered`                          |
| Additional tax total | `tax_amount`                           |
| Price                | `price`                                |
| External ID          | `item_id`                              |
| SKU                  | `sku`                                  |
| Adjustment total     | `additional_tax_total` + `promo_total` |
| Slug                 | `name`                                 |
| Promo total          | `discount_amount`                      |

### Line Item Discount

| Chord         | Magento                   |
| ------------- | ------------------------- |
| Adjustable ID | `line_item.id`            |
| Amount        | `discount_amount`         |
| Order ID      | `line_item.order.id`      |
| External ID   | "`line_item.id`-discount" |

### Line Item Tax

| Chord         | Magento              |
| ------------- | -------------------- |
| External ID   | "`line_item.id`-tax" |
| Adjustable ID | `line_item.id`       |
| Amount        | `tax_amount`         |
| Order ID      | `line_item.order.id` |

### Payment

| Chord  | Magento                                                              |
| ------ | -------------------------------------------------------------------- |
| Amount | `amount_paid`                                                        |
| State  | If `amount_paid == amount_ordered`, then `paid`; `pending` otherwise |
| Number | "`entity_id`-`method`"                                               |

### Shipment

| Chord           | Magento                |
| --------------- | ---------------------- |
| Inventory units | `shipment.items[]`     |
| External ID     | `entity_id`            |
| Number          | `entity_id`            |
| State           | `order.shipment_state` |
| Cost            | `order.shipment_total` |
| Shipped At      | `created_at`           |

### Inventory Unit

| Chord       | Magento                                                                                                           |
| ----------- | ----------------------------------------------------------------------------------------------------------------- |
| External ID | "`order_item_id`-`index`"; where `index` is a counter of the number of inventory units listed under the shipment. |
| SKU         | `sku`                                                                                                             |
| Variant ID  | Query the Chord database for the variant by `sku` and use the `id`                                                |

### User

| Chord | Magento                                    |
| ----- | ------------------------------------------ |
| Name  | "`customer_firstname` `customer_lastname`" |
| Email | `customer_email`                           |

### Address

| Chord       | Magento                                                                    |
| ----------- | -------------------------------------------------------------------------- |
| City        | `city`                                                                     |
| External ID | `entity_id`                                                                |
| Firstname   | `firstname`                                                                |
| Lastname    | `lastname`                                                                 |
| Address 1   | `street.first`                                                             |
| Address 2   | `street.second`                                                            |
| Zipcode     | `postcode`                                                                 |
| Phone       | `telephone`                                                                |
| State       | Query the Chord database for the `region_code` and return the state ID     |
| Country     | Query the Chord database where `iso: country_id` and return the country ID |



## How It Works

When a product is synced, all associated variants are also synced.&#x20;

When an order is synced, all associated records are also synced:

- Line items
  - Discount
  - Tax
- Shipments
  - Inventory units
- Customer
- Billing address
- Shipping address
- Payments

Chord replicates data 1-1 from the source system, performing the minimum transformations necessary for successful replication.

Chord syncs data daily from a customer's e-commerce system:

1. Product sync: sync all products and variants in the customer's catalogue.
2. Order sync: sync completed orders and associated records updated in the previous 24 hours.



