Shopify Integration: FORT Custom App

Follow

Shopify Integration

This document describes FORT’s integration with Shopify, which includes details on getting started, how and what order data are mapped, the different phases of the integration, and customizations that either extend, or enhance, functionality between FORT and Shopify.

Getting Started

If you (the client) are looking to fulfill orders from Shopify and are just getting started with FORT, great! We can get you set up. All you will need to do is send warehousesupport@fortsystems.com an email with the following:

  • Client company name
  • Client Shopify store name or URL
  • Fulfillment warehouse name
  • Client collaborator code (if the store is configured to require one).

The Warehouse Fulfillment Admin should also ensure that there is a user record set up for both the Client as well as one for the integration, so that integration and non-integration order uploads are associated with separate FORT accounts.

You (the client) will then get a collaborator request from FORT which, once accepted, will give FORT access to create a custom “FORT” app within the Client store. This app enables FORT to connect to Shopify and import orders which have been assigned to the FORT app’s location and are ready to be fulfilled.

 

Setup checklist

Once the FORT custom app is set up in the Shopify store, there are a number of settings to configure in both FORT and Shopify to get the integration up and running:

FORT Configuration (for the Fulfillment Warehouse Admin)

  1. Confirm that the Fulfillment Workflow is set to “Standard”. If “Legacy” is selected, then the integration will use the older, obsoleted fulfillment workflow. This feature will no longer be supported after June 30th, 2023.  At some point in the near future, the “Legacy” option will be removed entirely.
  2. Confirm that Fulfillment Mode is either Manual or Automatic, depending on the Client’s needs. When “Automatic” is selected, FORT will make a first attempt (one time only) to upload the order immediately, for orders that meet the Financial Status, Order Created As Of and Order Last Modified As Of filters. When Manual is selected, the Client must press “Request Fulfillment” for each order. Regardless of this choice, Fulfillment Requests after the initial attempt must be made by the Client manually.
  3. Confirm that Inventory Management is ON or OFF, depending on the Client’s needs. When ON, this setting will push inventory levels to Shopify every hour. OFF means the Client manages inventory levels in Shopify on its own.
  4. Confirm that the Shopify “Fulfillment Service” has been created in the Client company record.
  5. Confirm the Default Service Level.
  6. Confirm whether Check Address should be enabled.
  7. Confirm whether Shopify or FORT should send an alert when packages are depleted, via the Send Transaction Email setting. Choosing "Yes" will allow Shopify to send out the fulfillment alert.

Shopify Configuration (for the Client or user with Collaborator Access on behalf of the Client):

  1. Confirm that the newly created FORT Location is associated with any Shipping Profiles that you (the Client) are currently using (Settings -> Shipping and Delivery -> Shipping Profiles -> Manage)
  2. Confirm that the correct products are associated with the correct Shipping Profiles (a step that is required regardless of the designated fulfiller – FORT, In House, or other).
  3. Confirm that each product has access to the FORT Location (Product Record -> Inventory -> Edit Locations -> choose the “FORT” Location)
  4. Confirm that the FORT Location is correctly prioritized (Settings -> Locations -> Location Priority). If FORT is the primary fulfiller, then the FORT Location should be at the top of the list.

 

Integration Parameters

Integration Parameter Name Description
Store Name The store name that appears in the Shopify URL. For example, if the store URL is https://geometrywines.myshopify.com, then the store name should be “geometrywines”.
API Key Generated during the custom app creation process.
Password Generated during the custom app creation process.
Shared Secret Generated during the custom app creation process.
Default Service Level All orders from Shopify will use the Default Service Level unless the Client specified a Shipping-Rate-to-FORT-Service-Level Mapping and the order is using that Shipping Rate.
Check Address? When enabled, validates the recipient address. An order with an incorrect address will generate an error and won’t be uploaded. When disabled, the recipient address is assumed to be correct.
FORT Order Number Source

Shopify has an order number, an order name, a prefix, and a suffix. The Order Name is equal to: “#” + prefix + order number + suffix.

When “Shopify Order Name (includes Prefix/Suffix excludes #)” is selected, then the preceding “#” is dropped.

When “Shopify Order Name (includes Prefix/Suffix)” is selected, then the entire Order Name is used as the FORT Order Number. Default is without the preceding “#”.

Fulfillment Workflow When “Standard” is selected, then FORT will use Shopify’s current fulfillment process as defined in this documentation. When “Legacy” is selected, then FORT will use the older fulfillment workflow which will no longer be supported as of March 31st, 2023.
Fulfillment Mode

When “Manual” is selected, the store owner must manually press the “Request Fulfillment” button to send fulfillment requests to FORT. This option is generally useful when additional order data, like order tags, need to be added to the orders for FORT.

When “Automatic” is selected, then FORT will make a first pass to upload the order within 5 minutes of order creation. If the order upload does not succeed, then subsequent attempts must be manually requested.

Financial Status

Only used in conjunction with an "Automatic" fulfillment Mode. Automatically import Shopify orders that have a Financial Status of one of the selected Financial Statuses. Examples include: "Paid", "Partially Refunded", etc.

Order Created As Of

Only used in conjunction with an "Automatic" fulfillment Mode. Automatically import Shopify orders that have been created on or after the selected time period. Examples include: "Yesterday", "Last Week", "Last Month", etc.

Order Last Modified As Of

Only used in conjunction with an "Automatic" fulfillment Mode. Automatically import Shopify orders that have been updated on or after the selected time period. Examples include: "Yesterday", "Last Week", "Last Month", etc.

Send Shopify Notification on Fulfillment

When ON, this will send a Shopify generated notification to the customer when the order is In Transit (i.e. depleted from the warehouse). This is in addition to any FORT notifications that may be set up.

When OFF, no such Shopify notification will be sent.

Inventory Management When Inventory Management is ON, then FORT will send SKU levels to Shopify each hour. When Inventory Management is OFF, then inventory must be managed by the store owner, or not tracked at all.
Warehouse Locations When Inventory Management is turned ON, this will limit the inventory levels to the chosen warehouse locations. Default: All
FORT: Shopify Mapping All unique Shipping Rate names in Shopify will be available to map to a particular Service Level. A Shipping Rate (e.g. Express, Ground) will be chosen by the user as they check out and the appropriate service level code will be presented in the upload data to FORT. If no mappings are created, then all orders will use the Default Service Level.
Fulfillment Service / Location Name The name of the FORT app’s Fulfillment Service and associated Location. It will generally be the name of the warehouse followed by “(FORT)”.
Fulfillment Last Requested The last time Shopify requested that an order be fulfilled by FORT.
Fulfillments Last Processed The last time FORT attempted to upload an order from Shopify. This date does not imply that the last upload to FORT was successful.
Fulfillment Cancellation Last Requested The last time Shopify requested that an order be cancelled and removed from FORT.
Fulfillment Cancellation Request Last Processed The last time FORT attempted to delete an order from FORT based on a Shopify ‘Cancel’ request. This date does not imply that the last request was successfully executed as there are many valid reasons that would prevent a deletion (e.g., a package being In-Transit).

 

Integration Phases

Order Creation

When an order is created, Shopify will attempt to find a single Shopify Location (Fulfillment House) that has enough inventory to fulfill the entire order. If multiple Shopify Locations can fulfill the entire order, then Shopify will look to its “Location Priority” setting to decide which Shopify Location is the best choice. If a single Location cannot be found, then multiple fulfillment orders may be created and these will be assigned to separate Shopify Locations (depending on location priority and inventory levels). This behavior is especially useful for an order that contains some products which must ship from the warehouse (FORT) and others which must ship In House.

 

Requesting Fulfillment

Depending on whether you (the Client) have “Automatic” or “Manual” selected under the “Fulfillment Mode” setting (setting located in the FORT company record – consult your fulfillment warehouse to confirm), you (the Client) will see either the green “Request Fulfillment” button for pending Unfulfilled orders or you will see “Fulfillment in progress shown below:

No Fulfillment Requested (Manual):Screenshot_2023-03-15_at_6.35.49_PM.png

Pending Fulfillment Request (Automatic):

Screenshot_2023-03-15_at_6.35.55_PM.png

Importing orders to FORT

FORT will then look for and process these assigned Fulfillment Requests every 5 minutes. Depending on whether FORT was able to upload the order, you (the client) will see either a successful fulfillment card or a declined fulfillment card as shown below:

FORT uploaded the order successfully:

Screenshot_2023-03-15_at_6.36.02_PM.png

FORT rejected the order upload:

Screenshot_2023-03-15_at_6.36.09_PM.png

If an order is rejected, the Client will need to contact the warehouse or log into FORT directly to get more information for why the order couldn’t be uploaded. (A FORT-generated Order Upload Report may provide sufficient information on why the order was rejected.) The Client or the warehouse should resolve the issue before another “Request Fulfillment” attempt is made. [Enhancement – FORT to post errors directly into Shopify]

Cancelling an Order that was Successfully Uploaded

If an order is successfully uploaded, you can request a Cancellation through Shopify. Such a request can automatically delete an order in FORT if the order is not yet in Process (printed, packed, etc…).  If the order cannot be deleted, then you’ll need to reach out to the warehouse to handle it manually. (Note that the warehouse may not be willing to delete the order outright but rather opt to change the order’s FORT status to “Cancelled” if a cancellation fee needs to be charged.  In that case, the order number cannot be reused. Therefore, if you wish to have the order modified and reuploaded, then inform the warehouse of your intention so that the FORT status is not changed to Cancelled.

 

Fulfillment

When an order is depleted from the warehouse (i.e. has left the warehouse with a tracking number), Shopify is informed of the tracking number within 5 minutes. Example below.

Tracking Number sent to Shopify:

Screenshot_2023-03-15_at_6.36.15_PM.png

If the package is Voided in FORT, then the Tracking Number is removed from Shopify:

Screenshot_2023-03-15_at_6.36.20_PM.png

If an order is deleted in FORT, then the fulfillment card in Shopify will revert back to its original, Unfulfilled state:

Screenshot_2023-03-15_at_6.36.26_PM.png

 

 

Order Data Mapping

Shopify Field Name FORT Field Name
Order Number Order Number
Shopify Order ID Order Number 3P ID
Shopify Fulfillment Order ID Package ID 3P
Shopify Fulfillment ID Package ID 3P
Shipping Company Shipping Company
Shipping First Name Shipping First Name
Shipping Last Name Shipping Last Name
Shipping Address 1 Shipping Address 1
Shipping Address 2 Shipping Address 2
Shipping City Shipping City
Shipping Province Code Shipping State
Shipping Zip Shipping Zip
Shipping Country Code Shipping Country Code
Shipping Email Shipping Email
Shipping Phone Shipping Phone
Billing Company Billing Company
Customer ID Billing ID 3P
Billing First Name Billing First Name
Billing Last Name Billing Last Name
Billing Address 1 Billing Address 1
Billing Address 2 Billing Address 2
Billing City Billing City
Billing Province Code Billing State
Billing Zip Billing Zip
Billing Email Billing Email
Billing Phone Billing Phone
Tax Collected Total Tax Collected
Note Special Instructions
Subtotal Price Total Product Amount
SKU SKU
Line Item ID Product Name
Quantity Quantity

 

Customizations

Oftentimes, an external order management system like Shopify does not natively contain data or functionality which FORT normally depends on. Where possible, FORT will leverage existing functionality in the external system to bridge these gaps. To that end, FORT has additional logic around the following Shopify order tags and note attributes:

Order Tags

Tag Explanation Example
RSD:YYYY-MM-DD The Requested Ship Date (RSD) of YYYY-MM-DD is imported with the order data. RSD:2022-10-18
SubType:SUBTYPE Sets the Subtype of the order in FORT to be the value to the right of the colon, SUBTYPE. Subtype:Club20221101

 

Note Attributes

Note Name Explanation Example
Gift Message A gift message to be included with the order. Gift Message = Happy Birthday!
Preferred ship date The Requested Ship Date (RSD) of the order. Format: MM/DD/YYYY Preferred Ship Date = 10/18/2022

 

Without the Shopify configurations set as listed above, orders can be successfully created in Shopify, but could not be uploaded into FORT via the Custom App integration.

 

 

Was this article helpful?
3 out of 3 found this helpful

Comments