// featuretransformations

Your data, your rules.

Every e-commerce stack has its own quirks. Shopify sends SKUs one way, your warehouse expects them another. Addresses need normalizing. VIP customers need flagging. Transformations let you write a few lines of JavaScript that fix all of it, automatically, on every order.

// javascript Β· 4 trigger points Β· test with real orders
raw order from shopify
sku: "SH-COLD-PACK-LG"
tags: []
total: 249.99
address.state: "california"
↓ transform
transformed outputpass
sku: "WH-COLD-PACK-LG" ← mapped
tags: ["high-value", "vip"] ← flagged
total: 249.99
address.state: "CA" ← normalized
// 01how it works

Write it, test it, ship it.

A real code editor with live testing against actual orders. Not a drag-and-drop toy.

1

Visual field browser

Click any field from a real order (SKU, address, tags, line items) and it inserts into your code. No guessing field paths.

2

Test with real data

Enter any order ID, run your transformation, and see the exact output before you save. Catch bugs before they hit production.

3

Priority chaining

Stack multiple transformations in sequence. SKU mapping at priority 10, VIP tagging at 20, address normalization at 30. Each receives the previous output.

4

Four trigger points

Run on order ingest, order export, shipment ingest, or shipment export. Target the exact moment data needs transforming.

sku-mapping.jsorder_ingest
// Map Shopify SKUs to warehouse codes
for (const item of data.line_items) {
  item.sku = item.sku
    ?.replace("SH-", "WH-");
}

// Tag high-value orders for VIP handling
if (data.totals?.total > 200) {
  data.tags = [...(data.tags || [])];
  data.tags.push("high-value", "vip");
}

// Normalize state abbreviations
data.address.state = normalize(
  data.address.state
);
test result: Order #4201pass, 3 fields modified
// 02use cases

Transformations teams actually use.

Real examples from production workloads.

SKU mapping

order_ingest

Map storefront SKUs to warehouse codes on every ingest. "SH-COLD-PACK-LG" becomes "WH-COLD-PACK-LG" automatically.

VIP flagging

order_ingest

Tag orders over a dollar threshold as high-value so your ops team prioritizes them. Add custom tags based on any order field.

Address normalization

order_export

Customers type "california", "Calif.", "CA". Normalize state codes, zip formats, and country codes before they reach your carrier.

Line item restructuring

order_export

Split bundles into individual items, merge sample packs, or add handling instructions based on product type.

Weight calculation

shipment_ingest

Look up product weights from your catalog and calculate total shipment weight before rate shopping. No more manual entry.

Tracking enrichment

shipment_export

Append carrier-specific tracking URLs, estimated delivery dates, or custom status messages to shipment data on export.

// 03examples

Plain JavaScript, full control.

No proprietary DSL. Write standard JavaScript with access to the full order or shipment object.

address normalization
data.address.state = stateMap[
  data.address.state.toLowerCase()
] || data.address.state;

data.address.zip = data.address.zip
  ?.replace(/\s+/g, "")
  .slice(0, 5);
conditional tagging
const total = data.totals?.total || 0;

if (total > 500) {
  data.tags.push("high-value");
}
if (data.line_items.length > 10) {
  data.tags.push("bulk-order");
}
//next transforms

Stop cleaning data by hand.

Write your first transformation in minutes. Test it against real orders. Never manually fix a SKU again.