InfiPlex Knowledge Base

Sep 12 2026
 OMSNetSuiteOrders

NetSuite Custom Field Mapping and Order Rules in InfiPlex

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 Set additional_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 Set additional_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 Set additional_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 Set additional_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).

NETSUITE INTEGRATION

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