Shipping Rules Plugin
- Obtain your customized plugin from SellerCloud Support.
- Save it to the PC on which ShipBridge resides.
- In ShipBridge, open the menu and select Plugins.
- Press the Install Plugin button. That will open a file explorer window to search for the plugin on your PC.
- Select the plugin and save.
- Check the box next to the plugin to enable.
ShipBridge will call all enabled plugins in order to retrieve a shipping rule for each order. The plugins will be called every time a new order is loaded to, or refreshed in the grid, or scanned in Scan & Ship.
Plugins are essentially .NET 2.0 assemblies. See attached sample VB.NET plugin below, ShipBridge.Plugin.Sample, which you can customize.
- It exposes the IPlugin interface which all plugins should implement
- It provides access to ShipperHelper and PluginHelper which have easy-to-use properties and methods for checking orders
- ID Each plugin should have a unique identifier (GUID). You can generate one from here.
- DisplayName and Version keep the Plugins window updated with relevant information
- OnConnected is called every time ShipBridge initializes the plugin. You can call any initialization code here.
- OnOrderBeforeAddedToGrid is called immediately after a new order is received, but before any processing is made by ShipBridge itself. This is useful if a shipping method has to be selected before ShipBridge processes the order.
- OnOrderAfterAddedToGrid is the most frequently used handler. It’s called after ShipBridge has finished processing the order and allows plugins to select a proper shipping method.
- OnCellBeginEdit is called when the user starts making a change to a grid cell. This handler is rarely used.
- OnCellEndEdit is called after the user makes a change to a grid cell. This handler allows you to handle any address or weight changes so that the proper shipping method is selected.
PluginHelper provides quick access to frequently used order operations (getting or checking the state against another value, calculating its subtotal, weight, or checking if the order is “international,” to a military/US territory address and so on).
Instantiating a PluginHelper is done with a simple call by referencing the OrderData:
Dim helper As New PluginHelper(data)
The actual change of shipping service can be made by changing the helper.ShippingService to a ServiceInfo instance using ServiceInfo.GetByName. You can find a full ServiceInfo listing below. Of course, you can use any shipping rules based on destination, order subtotal, weight, etc. Example:
' si keeps the original shipping service, siNew will be the shipping
' rule-selected service. This is used to track shipping service changes.
Dim si As ServiceInfo = helper.ShippingService
Dim siNew As ServiceInfo = si
' If order address is POBox AND weight > 16 oz, use USPS Priority
If helper.IsPOBox AndAlso helper.ShippingWeightInOz > 16 Then
RuleColor = GetColor(2)
siNew = ServiceInfo.GetByName("USPS Priority")
' ... process any other shipping rules if necessary.
' Check if si is different than siNew, and if so, update helper.ShippingService
' and return TRUE, i.e. “service changed”
If si Is siNew Then
' Nothing has changed
helper.ShippingService = siNew
It’s important to skip fully shipped or “ready for pickup” orders so that their shipping service is not altered. This can be done using the following code as used in the sample plugin:
' Skip FullyShipped and ReadyForPickup orders
If helper.ShippingStatus = OrderShippingStatus.FullyShipped OrElse elper.ShippingStatus = OrderShippingStatus.ReadyForPickup Then
You can optionally skip rush or other orders by checking with the helper or another OrderData property.
' Leave this uncommented if rush orders should be skipped
If helper.RushOrder Then
You can get a ServiceInfo instance of any shipping service by calling the ServiceInfo.GetByName method (case-insensitive). Below is a list of all names:
USPS First Class
USPS Media Mail
USPS Parcel Post
USPS Bound Printed Matter
USPS Critical Mail
USPS Intl Express
USPS Intl Priority
USPS Intl First Class
UPS Next Day
UPS Next Day Early AM
UPS Next Day Saver
UPS 2nd Day
UPS 2nd Day AM
UPS 3 Day
UPS Freight LTL Standard
UPS Freight LTL - Guaranteed
UPS Worldwide Express Plus
UPS Worldwide Express
UPS Worldwide Express Saver
UPS Worldwide Expedited
UPS International Economy
UPS International Standard
UPS Expedited to Canada
UPS Express Saver to Canada
UPS Express to Canada
UPS Express Plus to Canada
UPS Standard to Canada
UPS 3 Day to Canada
UPS Expedited Mail Innovations
UPS Economy Mail Innovations
FedEx First Overnight
FedEx Priority Overnight
FedEx Standard Overnight
FedEx 2Day A.M.
FedEx Express Saver
FedEx 1Day Freight
FedEx 2Day Freight
FedEx 3Day Freight
FedEx Home Delivery
FedEx Intl Priority
FedEx Intl Economy
FedEx Intl Priority Freight
FedEx Intl Economy Freight
FedEx Intl Ground to Canada
FedEx SmartPost Standard Mail
FedEx SmartPost Bound Printed Matter
FedEx SmartPost Media Mail
FedEx SmartPost Parcel Post
Note: UPS Expedited Mail Innovations is the only MI method available to domestic (US) destinations. Similarly, UPS Economy Mail Innovations is only available to international destinations.