What lands on a NetSuite sales order from InfiPlex, and what comes back from NetSuite into InfiPlex, is controlled by three layers you edit yourself: additional info fields on the order that the NetSuite push reads, Set Order Data rules in Order Automation that populate those fields, and push and pull rules on the NetSuite connection that shape every line and every field on the way out and the way in. Standard fields and custom fields, custbody at the header and custcol on the line, are all reachable the same way. This guide documents every field and every rule type with the syntax as it works today. For how the connection itself is set up, start with the InfiPlex NetSuite integration page and the machine-to-machine connection guide.
Jump to the Layer You Need
| If You Need To… | Use |
|---|---|
| Set a standard NetSuite field on the order (terms, customer, class, department, location, ship method, status, memo, discount, account) | Additional info NetSuite fields |
| Set any custbody custom field on the order | netsuite_custom_field_* |
| Derive one of those values from other order data, a shipping method, a city, a marketplace field, or a fixed value | Set Order Data rules |
| Write a custcol on each line, substitute SKUs or prices, skip items, set the order reference number | Push rules |
| Pull only NetSuite orders matching a field value, and stamp fields in either system after the pull | Pull rules |
| Do the same thing for QuickBooks Desktop or Dynamics 365 | Other ERPs |
The NetSuite Fields InfiPlex Sets From Additional Info
Every InfiPlex order carries a set of additional info values, named key/value pairs on the order. When the order is pushed to NetSuite, InfiPlex reads the keys below and applies them. The _id fields take the NetSuite internal ID of the record.
| Additional Info Key | NetSuite Field | What It Sets |
|---|---|---|
additional_info:netsuite_terms_id |
Terms | The terms internal ID used when pushing the order |
additional_info:netsuite_customer_id |
Customer | The customer internal ID used when pushing the order |
additional_info:netsuite_class_id |
Class | The class internal ID used when pushing the order |
additional_info:netsuite_department_id |
Department | The department internal ID used when pushing the order |
additional_info:netsuite_location_id |
Location | The location internal ID used when pushing the order |
additional_info:netsuite_ship_method_id |
Ship Method | The ship method internal ID used when pushing the order |
additional_info:netsuite_order_status |
Order Status | One of _pendingApproval, _pendingFulfillment, _cancelled, _partiallyFulfilled, _pendingBillingPartFulfilled, _pendingBilling, _fullyBilled |
additional_info:netsuite_memo |
Memo | The memo text set on the order |
additional_info:netsuite_discount_id |
Discount | The discount internal ID used when pushing the order |
additional_info:netsuite_account_id |
Account | The account internal ID used when pushing the order (invoices only) |
additional_info:netsuite_custom_field_* |
Any custom field | Sets the custbody field named in the key suffix to the value; see below |
Custom fields. The netsuite_custom_field_* key is a pattern, not a fixed field. Set an additional info of additional_info:netsuite_custom_field_custbody_ship_by_date and, when the order is pushed, the NetSuite custom field custbody_ship_by_date is set to that value. The suffix after netsuite_custom_field_ is the custom field's script ID exactly as it appears in NetSuite. You can define as many of these as you like, one per custom field.
Additional info values can come from the channel itself, from an Order Automation rule, or from a push rule. The next section covers the rules that populate them.
Order Automation: Set Order Data Rules
Where it lives: Settings > Order Automation. Each rule has a Name, an Active flag, and an Apply To choice of ALL Orders or Orders that Match a Filter, where the filter is any saved Order Filter. With the Rule set to Set Order Data, you add rows pairing a Field to Set (the order field that receives the value) with a Set Rule (how the value is produced). Order fields are addressed as base_info:, bill_info:, ship_info:, or additional_info: followed by the field name, so any of the NetSuite keys above is a valid Field to Set.
Nine transforms are available. Each Set Rule starts with the transform in square brackets.
| Transform | Set Rule Example | Field to Set | Result |
|---|---|---|---|
[FIELD_COPY] |
[FIELD_COPY]ship_info:last_name |
bill_info:last_name |
Copies the value of one order field into another |
[FIELD_APPEND] |
[FIELD_APPEND]base_info:phone,@example.com |
base_info:email |
Field value followed by a string, for example 1232343456@example.com |
[FIELD_PREPEND] |
[FIELD_PREPEND]base_info:phone,@example.com |
base_info:email |
String followed by the field value, for example @example.com1232343456 |
[DATE_ADD_MINUTES] |
[DATE_ADD_MINUTES]base_info:order_date,120 |
additional_info:some_new_date_field |
Order date plus 120 minutes |
[CUSTOM_VALUE] |
[CUSTOM_VALUE]Testing |
bill_info:last_name |
Sets the field to the fixed value Testing |
[BULK_SHIPPING_MAP] |
[BULK_SHIPPING_MAP]UPS Ground::12;;UPS Next Day Air::10 |
additional_info:netsuite_ship_method_id |
12 if the ordered shipping is UPS Ground, 10 if it is UPS Next Day Air |
[DYNAMIC_DATA_MAP] |
[DYNAMIC_DATA_MAP]bill_info:city::OurCity::Local Customer;;base_info:ship_label::UPS Next Day Air::Not Local Customer;;additional_info:some_marketplace_field::77::New Customer |
additional_info:customer_type |
Checks each field::value pair in order and sets the first matching output |
[SYSTEM_DATA] |
[SYSTEM_DATA]amazon_today_order_manage_link |
additional_info:my_custom_field |
A system-generated value: amazon_today_order_manage_link, amazon_today_order_shipping_labels_link, or infiplex_filled_from_warehouse |
[DATA_COMBINE] |
[DATA_COMBINE]base_info:phone,":","-","\"",base_info:email,additional_info:some_marketplace_field,"-","DONE" |
additional_info:my_custom_field |
Concatenates fields and quoted literals in order, for example 123-123-1234:-"email@example.com-DONE |
Pointing them at NetSuite fields. The transforms become NetSuite mapping the moment the Field to Set is one of the netsuite_* keys:
- Ship method by carrier service. Set Rule
[BULK_SHIPPING_MAP]UPS Ground::12;;UPS Next Day Air::10;;FedEx Home Delivery::15, Field to Setadditional_info:netsuite_ship_method_id. Each ordered shipping service maps to your NetSuite ship method internal ID. - Location by fulfillment channel. Set Rule
[DYNAMIC_DATA_MAP]additional_info:amazon_fulfillment_channel::afn::14;;additional_info:amazon_fulfillment_channel::mfn::12, Field to Setadditional_info:netsuite_location_id. FBA orders land at one location internal ID, merchant-fulfilled orders at another. - A ship-by date on a custom field. Set Rule
[DATE_ADD_MINUTES]base_info:order_date,2880, Field to Setadditional_info:netsuite_custom_field_custbody_ship_by_date. The custom field receives the order date plus 48 hours when the order pushes. - A fixed department for one channel. Apply To: Orders that Match a Filter (an Order Filter on order source), Set Rule
[CUSTOM_VALUE]17, Field to Setadditional_info:netsuite_department_id.
Rules can run automatically as orders arrive or manually from the Order list; the setting is order_automation_processing under Settings > Base Settings > Miscellaneous, as covered in the Order Automation overview.
Push Rules: InfiPlex to NetSuite
Where it lives: a textarea on the NetSuite connection. Push rules are a JSON array; you edit it directly. Each rule names an order_source, either ALL_ORDER_SOURCES or a specific source such as Amazon.com, and an action_type with the keys that action needs. Rules apply in order to every order pushed to NetSuite from that source.
| action_type | What It Does | Keys |
|---|---|---|
override_order_source |
Replaces the order source value sent to NetSuite | field_value |
include_estimated_ship_date_on_items |
Sends the estimated ship date on each line for that source | none |
set_netsuite_item_custom_field |
Writes a line-level custom column (custcol) from InfiPlex data | netsuite_item_custom_field_name, data_source, plus the source key (see below) |
set_netsuite_custom_field |
Writes a custom field from an order field | data_source (order_field), order_field_name, custom_field_name |
set_netsuite_order_ref_num |
Sets the order reference number from an item additional info value or an order field | data_source and infiplex_item_additional_info_name or order_field_name |
item_sku_map |
Substitutes the SKU sent to NetSuite with a SKU data value, optionally only when an additional info value matches | action_filter, data_source, infiplex_sku_data, and for filtered rules additional_info_name, additional_info_value |
send_sku_data_value_as_price |
Sends a SKU data value as the line price, optionally only when an additional info value matches | action_filter, sku_data_name, and for filtered rules additional_info_name, additional_info_value |
send_item_price_as_rate_to_netsuite |
Sends the line price as the NetSuite rate for matching SKUs | filter_type, sku_data_name, sku_data_value |
send_item_price_as_amount_to_netsuite |
Sends the line price as the NetSuite amount for matching SKUs | filter_type, sku_data_name, sku_data_value |
send_all_items_with_price_id_negative_one |
Sends every line with price level -1 so NetSuite accepts the InfiPlex price | none |
do_not_send_item_to_netsuite |
Skips any line whose SKU carries the named SKU data value | filter_type, sku_data_name, sku_data_value |
Where a custcol value can come from. set_netsuite_item_custom_field reads from one of four places, chosen by data_source:
| data_source | Reads | Source Key |
|---|---|---|
infiplex_item_additional_info |
An additional info value on the order line item | infiplex_item_additional_info_name |
infiplex_sku_data |
A SKU data value on the SKU record | infiplex_sku_data |
infiplex_additional_info |
An additional info value on the order | infiplex_additional_info |
order_item_field |
A standard order item field such as item_asin |
order_item_field_name |
A complete push rule set, showing every action type:
[
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "override_order_source",
"field_value": "Web Services"
},
{
"order_source": "Amazon.com",
"action_type": "include_estimated_ship_date_on_items"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_item_custom_field",
"netsuite_item_custom_field_name": "custcol_skumap",
"data_source": "infiplex_item_additional_info",
"infiplex_item_additional_info_name": "line_modify_source_sku"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_item_custom_field",
"netsuite_item_custom_field_name": "custcol_09",
"data_source": "infiplex_item_additional_info",
"infiplex_item_additional_info_name": "line_modify_source_item_asin"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_item_custom_field",
"netsuite_item_custom_field_name": "custcol_1480",
"data_source": "infiplex_sku_data",
"infiplex_sku_data": "some_sku_data_name"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_item_custom_field",
"netsuite_item_custom_field_name": "custcol_77",
"data_source": "infiplex_additional_info",
"infiplex_additional_info": "some_order_additional_name"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_item_custom_field",
"netsuite_item_custom_field_name": "custcol_914",
"data_source": "order_item_field",
"order_item_field_name": "item_asin"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "do_not_send_item_to_netsuite",
"filter_type": "match_sku_data_name_and_value",
"sku_data_name": "do_not_send_item_to_netsuite",
"sku_data_value": "yes"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "send_all_items_with_price_id_negative_one"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "send_sku_data_value_as_price",
"action_filter": "none",
"sku_data_name": "netsuite_price"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "send_sku_data_value_as_price",
"action_filter": "additional_info_match",
"additional_info_name": "amazon_fulfillment_channel",
"additional_info_value": "afn",
"sku_data_name": "netsuite_price"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "item_sku_map",
"action_filter": "none",
"data_source": "infiplex_sku_data",
"infiplex_sku_data": "some_sku_data_name"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "item_sku_map",
"action_filter": "additional_info_match",
"additional_info_name": "amazon_fulfillment_channel",
"additional_info_value": "afn",
"data_source": "infiplex_sku_data",
"infiplex_sku_data": "some_sku_data_name"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "send_item_price_as_rate_to_netsuite",
"filter_type": "match_sku_data_name_and_value",
"sku_data_name": "send_item_price_as_rate_to_netsuite",
"sku_data_value": "yes"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "send_item_price_as_amount_to_netsuite",
"filter_type": "match_sku_data_name_and_value",
"sku_data_name": "send_item_price_as_amount_to_netsuite",
"sku_data_value": "yes"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_order_ref_num",
"data_source": "infiplex_item_additional_info",
"infiplex_item_additional_info_name": "some_additional_info_id_field"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_order_ref_num",
"data_source": "order_field",
"order_field_name": "additional_customer_order_id"
},
{
"order_source": "ALL_ORDER_SOURCES",
"action_type": "set_netsuite_custom_field",
"data_source": "order_field",
"order_field_name": "order_packing_slip_url",
"custom_field_name": "custcol_914"
}
]
Two patterns worth noticing. The two item_sku_map rules together send one SKU for every order and a different SKU only when amazon_fulfillment_channel is afn, so FBA lines can carry their own NetSuite item without touching merchant-fulfilled lines. And custcol_skumap receives line_modify_source_sku, the SKU the channel actually sent before any SKU map translated it, so NetSuite keeps the original alongside the mapped item.
Pull Rules: NetSuite to InfiPlex
Where it lives: a textarea on the NetSuite connection. Pull rules are one JSON object with two parts. pull_filters decides which NetSuite orders are pulled at all: every filter must match, and a filter can test a custom_field or a default_field against a value with match_type eq for an exact match. Testing a custom field here reads its current value in NetSuite. post_pull lists actions that run once an order has been pulled.
| post_pull action_type | What It Does | Keys |
|---|---|---|
set_netsuite_field |
Writes a value back to a NetSuite field on the pulled order, custom or default, with a declared data type | field_type, field_name, field_data_type (for example boolean), field_value |
set_infiplex_field |
Copies a NetSuite field value into an InfiPlex order field | netsuite_field_type, netsuite_field_name, infiplex_field_name |
do_not_save_skus_in_order |
Drops the listed SKUs from the order as it is saved in InfiPlex | skus (array) |
{
"pull_filters": [
{
"field_type": "custom_field",
"field_name": "custbody_ship_provider",
"field_value": "FedEx",
"match_type": "eq"
},
{
"field_type": "custom_field",
"field_name": "custbody79",
"field_value": "West Coast 3PL",
"match_type": "eq"
},
{
"field_type": "default_field",
"field_name": "email",
"field_value": "example@example.com",
"match_type": "eq"
},
{
"field_type": "default_field",
"field_name": "netsuite_location_id",
"field_value": "12",
"match_type": "eq"
}
],
"post_pull": [
{
"action_type": "set_netsuite_field",
"field_type": "custom_field",
"field_name": "custbody_order_shipped",
"field_data_type": "boolean",
"field_value": true
},
{
"action_type": "set_netsuite_field",
"field_type": "default_field",
"field_name": "department_id",
"field_value": "17"
},
{
"action_type": "set_infiplex_field",
"netsuite_field_type": "default_field",
"netsuite_field_name": "status",
"infiplex_field_name": "ship_info:company"
},
{
"action_type": "do_not_save_skus_in_order",
"skus": [
"sku1",
"sku2",
"sku3"
]
}
]
}
Read this one as a sentence: pull only NetSuite orders where custbody_ship_provider is FedEx, custbody79 is West Coast 3PL, the email matches, and the location is 12; then mark custbody_order_shipped true in NetSuite, set the department, copy the NetSuite status into the InfiPlex ship-to company field, and leave three SKUs out of the saved order. Two of those four filters and one of the writes are custom fields, handled with the same keys as the standard ones.
How the Three Layers Work Together in InfiPlex
On an order flowing out: a channel order arrives, Order Automation runs its Set Order Data rules and fills netsuite_ship_method_id, netsuite_location_id, and any netsuite_custom_field_* keys from the order's own data; the push then reads those keys for the header, applies the push rules line by line for custcol values, SKU substitutions, price handling, and skipped items, and creates the sales order. On an order flowing in: pull filters decide which NetSuite orders InfiPlex takes, and post-pull actions stamp fields in both systems as each one is saved. Header custom fields, line custom columns, and standard fields all travel the same three paths, which is what makes a new custom field added in NetSuite a configuration change rather than a request.
The Same Pattern for QuickBooks Desktop and Dynamics 365
The additional info layer is not NetSuite-specific. The same keys exist for QuickBooks Desktop via Method CRM and for Microsoft Dynamics 365, and the same Set Order Data transforms populate them.
| Additional Info Key | Sets |
|---|---|
additional_info:method_qb_customer |
Customer used when pushing to QuickBooks Desktop via Method CRM |
additional_info:method_qb_campaign |
Campaign |
additional_info:method_qb_class |
Class |
additional_info:method_qb_customer_sales_tax_code |
Customer sales tax code |
additional_info:method_qb_location |
Location |
additional_info:method_qb_ship_method |
Ship method |
additional_info:method_qb_terms |
Terms |
additional_info:ms_dynamics_company_id |
Company ID used when pushing to Dynamics 365 |
additional_info:ms_dynamics_customer_id |
Customer ID |
additional_info:ms_dynamics_customer_number |
Customer number, usable instead of customer ID |
additional_info:ms_dynamics_payment_terms_id |
Payment terms ID |
additional_info:ms_dynamics_bill_to_customer_id |
Bill-to customer ID |
additional_info:ms_dynamics_bill_to_customer_number |
Bill-to customer number, usable instead of bill-to customer ID |
Self-Service in InfiPlex, With Help When You Want It
All three layers are yours to edit. Set Order Data rules are built in the Order Automation screen, and push and pull rules are JSON you drop into textareas on the connection, so adding a custom field, changing a mapping, or filtering a pull is a change you make and test on your own schedule. When you have a question, or a piece of logic you need that is not covered by the rule types above, InfiPlex helps directly, including creating new logic rules. If you are weighing InfiPlex against Oracle's native connector on exactly this point, the InfiPlex vs FarApp (NetSuite Connector) comparison covers custom field mapping alongside the other differences.
NetSuite Custom Field Mapping and Order Rules: Questions
Can InfiPlex set a custom field on a NetSuite sales order?
Yes. Any header-level custom field (custbody) is set by adding an additional info value named netsuite_custom_field_ followed by the field's script ID, for example additional_info:netsuite_custom_field_custbody_ship_by_date. When the order pushes, that custom field receives the value. There is no cap on how many you define. Push rules can also write custom fields with set_netsuite_custom_field.
Can InfiPlex set line-level custom columns (custcol) in NetSuite?
Yes. The push rule set_netsuite_item_custom_field writes a custcol on each order line from one of four sources: an item's additional info, SKU data, the order's additional info, or an order item field such as item_asin. Each rule names the custcol and the source, and you can add as many rules as you need.
Can InfiPlex read NetSuite custom fields, or only write them?
Both directions. Pull rule filters can require a specific value in a NetSuite custom field (field_type custom_field) before an order is pulled, which reads the field's current value. After a pull, set_infiplex_field copies a NetSuite field value into an InfiPlex order field, and set_netsuite_field writes a value back to NetSuite.
Do I need InfiPlex to configure NetSuite push and pull rules for me?
No. Push rules and pull rules are JSON entered in textareas on your NetSuite connection, and Set Order Data rules are built in Settings > Order Automation. All three are self-service. InfiPlex helps when you have questions or need new logic rules created.
How do I map a marketplace shipping method to a NetSuite ship method ID?
With a Set Order Data rule using BULK_SHIPPING_MAP. Set Rule [BULK_SHIPPING_MAP]UPS Ground::12;;UPS Next Day Air::10 with Field to Set additional_info:netsuite_ship_method_id sets the ship method internal ID to 12 for UPS Ground orders and 10 for UPS Next Day Air orders.
Can I send a different price or SKU to NetSuite for Amazon FBA orders only?
Yes. Both send_sku_data_value_as_price and item_sku_map accept action_filter additional_info_match with additional_info_name amazon_fulfillment_channel and additional_info_value afn, so the price or SKU substitution applies only to FBA orders and every other order is sent as-is.
Can I keep certain items from being sent to NetSuite?
Yes. On push, do_not_send_item_to_netsuite with filter_type match_sku_data_name_and_value skips any line whose SKU carries the named SKU data value. On pull, do_not_save_skus_in_order lists SKUs that are dropped from the order as it is saved into InfiPlex.
Which NetSuite order statuses can InfiPlex set when pushing an order?
The additional info field netsuite_order_status accepts _pendingApproval, _pendingFulfillment, _cancelled, _partiallyFulfilled, _pendingBillingPartFulfilled, _pendingBilling, and _fullyBilled.
Does the same field-mapping approach work for QuickBooks or Dynamics 365?
Yes. The same additional info pattern carries method_qb_ fields for QuickBooks Desktop via Method CRM (customer, campaign, class, customer sales tax code, location, ship method, terms) and ms_dynamics_ fields for Dynamics 365 (company ID, customer ID or number, payment terms ID, bill-to customer ID or number).
Any NetSuite field, custom or standard, mapped your way
Additional info fields, Set Order Data rules, and self-service push and pull rules are included with the InfiPlex NetSuite integration on Growth Pro, alongside SuiteQL inventory reads and one connection for every channel, EDI partner, and 3PL.
Related guides
- NetSuite Integration
- NetSuite Integration FAQs
- NetSuite Machine-to-Machine Connection
- InfiPlex vs FarApp (NetSuite Connector)
- SKU Groups vs Bundles vs SKU Maps
- Order Automation Overview
- CastleGate SKU Mapping and Order Data Rules
- NetSuite Integration Failures and Recovery
- Switching NetSuite Marketplace Connectors
