Skip to content

Input mapping

Step Input Mapping helps you translate your data from one format to another as it moves through your workflows. Think of it like a GPS for your data—it tells SyncMyOrders where to find the info and where to send it next.

If one system calls it customerName and another expects name, no problem—mapping bridges the gap automatically.

Each mapping rule tells the platform:

  • What to fetch: using the source expression (e.g. {{ customerName }})
  • Where to place it: using the destination path (e.g. name)

Input mapping example

You set the rules—SyncMyOrders handles the transformation behind the scenes.

Source: { "customerName": "John Smith", "customerAge": 35 }
Mapping:
- name → {{ customerName }}
- age → {{ customerAge }}
Result: { "name": "John Smith", "age": 35 }
Source: { "firstName": "John", "lastName": "Smith", "email": "[email protected]" }
Mapping:
- profile.name → {{ firstName }}
- profile.surname → {{ lastName }}
- contact.email → {{ email }}
Result:
{
"profile": { "name": "John", "surname": "Smith" },
"contact": { "email": "[email protected]" }
}
Source: { "products": ["apple", "banana", "orange"] }
Mapping:
- items.0 → {{ products[0] }}
- items.1 → {{ products[1] }}
- items.2 → {{ products[2] }}
Result: { "items": ["apple", "banana", "orange"] }

Copies and converts values automatically.

price → {{ cost }}

Forces output to be text—useful when you want to avoid numbers being treated as numbers.

productCode!text → {{ id }}

Disables variable processing—great for static text or templates.

template!raw"Hello {{ name }}"
Source:
{
"customer": {
"personal": { "name": "John", "age": 30 },
"address": { "city": "New York" }
}
}
Mapping:
- userName → {{ customer.personal.name }}
- userAge → {{ customer.personal.age }}
- location → {{ customer.address.city }}
Source:
{
"orders": [
{ "id": "001", "total": 100 },
{ "id": "002", "total": 250 }
]
}
Mapping:
- firstOrder.id → {{ orders[0].id }}
- firstOrder.amount→ {{ orders[0].total }}
- secondOrder.id → {{ orders[1].id }}
- secondOrder.amount→ {{ orders[1].total }}
newField → {{ oldField }}
user.profile.name → {{ firstName }}
user.profile.email → {{ email }}
latestOrder → {{ orders[0] }}
status!rawactive
version!raw1.0

Do:

  • Use {{ fieldName }} to reference data
  • Use dot notation for nesting (user.name.first)
  • Use array indexes (items.0, items.1)
  • Use !text when needed
  • Use !raw for static values

Avoid:

  • Multiple {{ }} expressions in a single rule
  • Quotes inside {{ }} (e.g., {{ “name” }})
ProblemCauseFix
null in resultMissing or incorrect fieldCheck field name and path
Number turned into textAccidental !textRemove the suffix
Literal output (e.g., {{ name }} shown)Used !rawRemove !raw if processing is needed
Nested field not foundIncorrect pathRecheck source data structure

Source data:

{
"client_info": {
"full_name": "Jane Doe",
"email_addr": "[email protected]",
"signup_date": "2024-01-15"
},
"preferences": {
"newsletter": true,
"promotions": false
}
}

Mapping rules:

contact.name → {{ client_info.full_name }}
contact.email → {{ client_info.email_addr }}
subscription.newsletter → {{ preferences.newsletter }}
subscription.promotions → {{ preferences.promotions }}
metadata.source!rawCRM_IMPORT
metadata.imported_date!raw2024-01-20

Final result:

{
"contact": {
"name": "Jane Doe",
"email": "[email protected]"
},
"subscription": {
"newsletter": true,
"promotions": false
},
"metadata": {
"source": "CRM_IMPORT",
"imported_date": "2024-01-20"
}
}

If you’re unsure about a mapping or something isn’t working, your dedicated onboarding specialist is here to guide you. Or simply reach out at [email protected].