Understanding ShipBridge plugins
ShipBridge plugins can be used to apply shipping rules or customized invoices when shipping orders in ShipBridge. ShipBridge plugins are typically developed by Sellercloud and incur customization charges. Developers can use the instructions below to aid in development.
Adding plugins in ShipBridge
To add plugins in ShipBridge:
- Obtain your customized plugin from Sellercloud Support.
- Save it to the PC where ShipBridge is installed.
- In ShipBridge, open the Menu and select Plugins or use hotkey Ctrl+Shift+P.
- Click Install Plugin to 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 it.
ShipBridge will call all enabled plugins to retrieve a shipping rule for each order. The plugins will be called whenever a new order is loaded to, or refreshed in the grid, or scanned in Scan & Ship.
The ShipBridge Extensibility Framework provides the IExtensibility interface— a proxy between plugins and ShipBridge. IExtensibility allows quick access to such features as the “grids” and other shared instances. Plugins are essentially .NET 2.0 assemblies. See attached sample VB.NET plugin below, ShipBridge.Plugin.Sample, which you can customize.
Understanding extensibility in ShipBridge
The most important reference is ShipBridge. Extensibility.dll is found in the ShipBridge application folder:
- 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
Understanding plugin requirements
- 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.
- 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 used rarely.
- 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 NewPluginHelper(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 the destination, order subtotal, weight, etc.
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
helper.ShippingWeightInOz > 16 Then
RuleColor = GetColor(2)
‘ … 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
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.
- ‘ SkipFullyShipped and ReadyForPickup ordersIfhelper.ShippingStatus = OrderShippingStatus.FullyShipped OrElse elper.ShippingStatus =OrderShippingStatus.ReadyForPickup ThenReturn FalseEnd If
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 Return False End If
You can get a ServiceInfo instance of any shipping service by calling the ServiceInfo.GetByName method (case-insensitive).
- USPS First Class
- USPS Priority
- USPS Media Mail
- USPS Parcel Post
- USPS Express
- USPS Bound Printed Matter
- USPS Library
- USPS Critical Mail
- USPS Intl Express
- USPS Intl Priority
- USPS Intl First Class
- Customer Pickup
- UPS Next Day
- UPS Next Day Early AM
- UPS Next Day Saver
- UPS 2nd Day
- UPS 2nd Day AM
- UPS 3 Day
- UPS Ground
- 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
- FedEx 2Day A.M.
- FedEx Express Saver
- FedEx 1Day Freight
- FedEx 2Day Freight
- FedEx 3Day Freight
- FedEx Ground
- 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