ShipMonk Fulfillment Integration Guide
Last Updated: June 26, 2026
Table of Contents
Overview
ShipMonk is a 3PL (third-party logistics) provider. When integrated with UltraCart, ShipMonk receives orders for fulfillment and sends shipment confirmations (tracking numbers, package details) back to UltraCart.
This guide covers the full integration lifecycle: initial setup and configuration, how UltraCart and ShipMonk communicate after an order is placed, and the correct workflows for modifying or canceling orders after transmission.
Prerequisites
An active ShipMonk account with API access enabled
A ShipMonk API Store (not a manual/import store)
A ShipMonk API Key and Store ID
UltraCart access to configure Distribution Centers and item fulfillment settings
Important: In ShipMonk, you must create and authorize an API store before you can generate API keys. See Step 1 below.
Setup
Step 1: Obtain ShipMonk API Credentials
Step 1a: Generate a Store (skip if you already have a ShipMonk API Store)
Within the ShipMonk app, navigate to Account Settings > General Settings > Stores. Click Integrate Another Store and complete the Typeform. A ShipMonk integrations team member will respond within 48 hours to complete the request.
Step 1b: Create an API Key
Once your store is authorized, navigate to Integration API Keys and create an API key. Your store's unique ID is also available on this screen.
Note: Save the API key in a secure location. If you lose it, you will need to generate a new one. You can revoke existing keys at any time via Action > Revoke API Key in the Integration API Key settings.
Step 2: Configure the UltraCart Transmission Mechanism
UltraCart requires a fulfillment endpoint to send orders to ShipMonk and receive shipment confirmations back.
In UltraCart, navigate to Operations > Fulfillment > Distribution Centers.
Create a new Distribution Center or edit an existing one you want ShipMonk to fulfill from.
Set the Transmission Mechanism to ShipMonk.
Enter the ShipMonk connection details:
Base URL:
https://api.shipmonk.comAuthentication header:
Api-Key: YOUR_API_KEYStore ID: (from your ShipMonk Integration API Keys screen)
Note: The exact UltraCart field names for URL, headers, and credential storage depend on which fulfillment transmission plugin or mechanism is enabled on your account. The ShipMonk values listed above are consistent regardless of UI variation.
Step 3: Configure ShipMonk Shipping Methods in UltraCart
ShipMonk requires each order to specify a shipping service value that ShipMonk recognizes. You map UltraCart checkout shipping method names to the ShipMonk shipping service values configured in your ShipMonk store.
In UltraCart, open the ShipMonk Distribution Center and go to Shipping Methods / Method Mapping.
Add a mapping for each shipping method available at checkout.
Use the following table as a template. Fill in the ShipMonk-side values that match your store's carrier and service configuration:
UltraCart Shipping Method (Checkout) | ShipMonk Shipping Service Value | Notes |
|---|---|---|
UPS Ground | [ShipMonk value] | Use the exact service configured for your ShipMonk store |
UPS 2nd Day Air | [ShipMonk value] |
|
UPS Next Day Air | [ShipMonk value] |
|
FedEx Ground | [ShipMonk value] |
|
FedEx 2Day | [ShipMonk value] |
|
FedEx Standard Overnight | [ShipMonk value] |
|
USPS Ground Advantage / First Class | [ShipMonk value] | Depends on account/carrier availability |
USPS Priority Mail | [ShipMonk value] |
|
DHL Express (International) | [ShipMonk value] | Optional |
Note: If you are unsure what ShipMonk expects for a shipping service value, confirm in ShipMonk OMS store settings or with ShipMonk support, then mirror those values in UltraCart.
Step 4: Configure Items with Their ShipMonk SKU
For ShipMonk to pick and pack correctly, the SKU on each UltraCart line item must exactly match the SKU in ShipMonk.
In UltraCart, navigate to Items → Item Management → Edit Item and select the item.
Go to the item's Shipping Tab → Inventory Control and Distribution settings.
For the ShipMonk Distribution Center, set the Fulfillment SKU / External SKU / 3PL SKU field to the exact ShipMonk SKU.
Save the item.
Warning: If the SKU does not match what ShipMonk has on file, ShipMonk may place the order on hold or reject fulfillment with a "SKU not found / insufficient inventory" error.
Integration Behavior Reference
Understanding how UltraCart and ShipMonk communicate after an order is placed is essential for handling post-payment changes correctly.
Orders flow from UltraCart to ShipMonk. When an order is transmitted, UltraCart sends the order details to ShipMonk via API. ShipMonk then manages the fulfillment process (picking, packing, shipping) independently.
Shipment confirmations flow from ShipMonk to UltraCart. Once ShipMonk ships an order, it sends tracking numbers and package details back to UltraCart. This is the primary return communication path.
ShipMonk holds are not communicated back to UltraCart. When ShipMonk places an order on hold (for any reason, including a merchant-requested hold), that status is not reflected in UltraCart. UltraCart will show the order as shipped once ShipMonk releases and fulfills it, regardless of any intermediate holds. To check hold status, log in to the ShipMonk portal directly.
Issuing a refund in UltraCart does not signal ShipMonk. A refund in UltraCart is a payment adjustment only. It does not send a cancellation, hold, or modification request to ShipMonk. If an order has been transmitted to ShipMonk, issuing a refund will not prevent ShipMonk from shipping it.
Order cancellations in UltraCart do signal ShipMonk, provided ShipMonk has not yet processed or shipped the order. If you need to stop fulfillment entirely, cancel the order in UltraCart rather than only issuing a refund.
Order Modification Workflows
Use these workflows when a customer requests changes to an order after payment has been processed and the order has been transmitted to ShipMonk.
Pre-Shipment Order Modification (Full or Partial)
Use this workflow when a customer requests item changes before the order has shipped.
Contact ShipMonk immediately and request a hold on the order by order ID. The hold must be placed before ShipMonk begins picking.
Confirm with ShipMonk that the hold is active before making any changes.
Make the required item changes directly in the ShipMonk portal (remove items, update quantities, or adjust shipping details as needed).
Update the order in UltraCart to match: edit item quantities or remove line items to keep UltraCart records accurate.
Release the hold in ShipMonk once all modifications are complete.
Issue the refund in UltraCart for any items that were removed.
Important: Do not issue the refund in UltraCart before completing modifications in ShipMonk. The refund has no effect on ShipMonk's fulfillment queue.
Full Order Cancellation
Cancel the order in UltraCart (Operations > Orders > [Order] > Cancel). UltraCart will send a cancellation signal to ShipMonk if the order has not yet been processed.
If ShipMonk has already begun processing, contact ShipMonk directly to request a cancellation hold.
Issue the refund in UltraCart after cancellation is confirmed.
Timing Constraints
Modification and cancellation requests must reach ShipMonk before the order enters picking. The table below describes what is possible at each fulfillment stage.
ShipMonk Fulfillment Status | Can Request Hold? | Can Modify Items? |
|---|---|---|
Awaiting fulfillment | Yes | Yes |
Processing | Yes (request immediately) | Usually yes |
Picking | Urgent request required | May be possible with direct ShipMonk support contact |
Packed | No | No |
Shipped | No | No |
UltraCart does not display ShipMonk fulfillment status. To determine where an order is in the fulfillment queue, log in to the ShipMonk portal or contact ShipMonk support directly.
Troubleshooting
Order shows "Shipped" in UltraCart but was expected to be on hold
Symptoms: UltraCart shows a shipped status, but the merchant had requested a hold or modification.
Root Cause: ShipMonk holds are not communicated back to UltraCart. UltraCart shows shipped status once ShipMonk releases and ships the order, regardless of any intermediate hold periods.
Solution: This is expected behavior. Verify actual hold and shipment status in the ShipMonk portal, not in UltraCart.
Refund was issued in UltraCart but ShipMonk shipped the full order
Symptoms: A refund was processed in UltraCart, but ShipMonk fulfilled and shipped the complete original order.
Root Cause: Refunds in UltraCart are payment adjustments and do not send any signal to ShipMonk. Issuing a refund does not hold, modify, or cancel the ShipMonk order.
Solution: For future orders, follow the Pre-Shipment Order Modification workflow above. A ShipMonk hold must be placed and item changes made in ShipMonk before issuing the refund in UltraCart.
ShipMonk holds the order due to SKU mismatch
Symptoms: ShipMonk places the order on hold with a "SKU not found" or "insufficient inventory" error.
Root Cause: The Fulfillment SKU configured on the UltraCart item does not match the SKU ShipMonk has on file.
Solution: In UltraCart, navigate to the item's Fulfillment / Distribution Center settings and update the Fulfillment SKU to match the exact value in ShipMonk. See Step 4.
ShipMonk says the order cannot be modified
Symptoms: ShipMonk declines a modification or hold request.
Root Cause: The order has already been picked, packed, or shipped.
Solution: Accept the fulfilled order. Issue a refund in UltraCart for unwanted items. Coordinate a return with the customer if applicable.
Related Documentation
ShipMonk Help Center - ShipMonk order management, holds, and API documentation