3PL Integration Guide
BundlesIQ includes built-in protection to prevent third-party logistics providers (3PLs) and warehouse management systems (WMS) from importing orders before bundle processing completes. This guide explains how to configure and use these features.
What You Will Accomplish
You will set up 3PL protection so your fulfillment partner never acts on an order before BundlesIQ has finished transforming it.
When to Use This Guide
- You use a 3PL or WMS that automatically imports orders from Shopify
- You want to prevent your warehouse from picking the ghost SKU instead of the real components
- You need to configure tag-based filtering in your 3PL system
The Race Condition Problem
Without protection, this failure mode can occur:
- Customer places an order containing the bundle ghost SKU
- Your 3PL imports the order immediately (or within seconds)
- Warehouse staff starts picking based on the ghost SKU (wrong item)
- BundlesIQ completes the transformation, but it is too late — the wrong items are already being packed
BundlesIQ prevents this with a "default deny" approach: orders are not eligible for fulfillment until BundlesIQ explicitly marks them as ready.
Protection Mechanisms
BundlesIQ uses a "belt and suspenders" approach with two layers of protection:
Layer 1: Tag-Based Gating (Primary)
BundlesIQ applies tags to orders at each stage of processing:
| Tag | When Applied | Meaning |
|---|---|---|
BIQ_PROCESSING |
Immediately when BundlesIQ begins processing | Order is being transformed — do not import |
BIQ_READY |
After successful transformation | Order is safe to import and fulfill |
BIQ_ERROR |
When processing fails | Order has an issue — do not import until resolved |
BIQ_REVERTED |
After a draft order transformation is reverted | Draft order has been restored to pre-transformation state (draft orders only) |
Recommended 3PL configuration: Configure your 3PL to only import orders that have the BIQ_READY tag. This is the most reliable approach because orders without the tag are simply invisible to the 3PL.
Layer 2: Shopify Fulfillment Holds (Backstop)
BundlesIQ optionally places a Shopify-native fulfillment hold on orders during processing. This is a system-level hold that appears in the Shopify Admin as "On hold" and is respected by many fulfillment integrations.
- The hold is placed after the order is created (note: there may be a brief delay as Shopify creates fulfillment orders)
- The hold is released after BundlesIQ successfully completes transformation
- If processing fails, the hold remains in place
Optional: Alias Tags
If your 3PL expects specific tag names, you can configure alias tags:
| Setting | Default | Purpose |
|---|---|---|
| Hold alias tag | ON-HOLD |
Applied during processing (same timing as BIQ_PROCESSING) |
| Ready alias tag | READY_TO_SHIP |
Applied after successful processing (same timing as BIQ_READY) |
Alias tags are applied in addition to the standard BIQ tags, not instead of them.
Setting Up 3PL Protection
Step 1: Enable Protection in BundlesIQ
- Navigate to BundlesIQ > Settings
- Under 3PL Protection, ensure the master toggle is Enabled
- Configure tag names if you need custom values (the defaults work for most setups)
- Enable alias tags if your 3PL expects specific tag names like
ON-HOLDorREADY_TO_SHIP - Enable fulfillment holds if you want the Shopify-native hold as a backstop
- Click Save
Step 2: Configure Your 3PL
Configure your 3PL or WMS to filter orders based on BundlesIQ tags. The exact steps depend on your system. Choose one of the three integration patterns below:
Pattern A (Recommended): Allowlist on BIQ_READY
Configure your OMS/WMS/3PL to only import orders containing BIQ_READY (or your ready alias tag).
- Pros: Zero race window — very hard to ship an unprocessed order
- Cons: Non-bundle orders may need a separate rule to add the ready tag (see Orders Without Bundles)
Pattern B: Denylist on Processing / Error Tags
Configure your OMS/WMS/3PL to skip orders containing BIQ_PROCESSING or BIQ_ERROR.
- Pros: Non-bundle orders flow normally without extra work
- Cons: Small race window exists in systems that import instantly before tags appear. Enabling fulfillment holds reduces the impact
Pattern C (Backstop Only): Rely on Fulfillment Holds
Use this only when the external system cannot filter by tags.
- Pros: Minimal configuration in the downstream system
- Cons: Does not always stop label creation in every tool — better as a safety net, not the primary control
Common 3PL Configuration Examples
ShipStation:
- Map Shopify order tags to a ShipStation custom field
- Create a "BundlesIQ Ready" saved view that only shows orders where the custom field contains
BIQ_READY - Train staff to work exclusively from the "BundlesIQ Ready" view
- See the dedicated ShipStation Setup guide for detailed step-by-step instructions
Easyship:
- Use "Exclude orders by tag" to exclude
BIQ_PROCESSINGandBIQ_ERROR - Orders become visible to Easyship after BundlesIQ switches them to
BIQ_READY
ShipHero:
- Use the ShipHero setting to control how Shopify fulfillment holds are imported
- Optionally use Shopify order tags inside ShipHero for batching and routing
Extensiv (formerly 3PL Central / Skubana):
- Use Shopify "Filter Order Rules" to only load orders that match your ready state tags
- Or use the "Hold Order By Tags" pattern (don't load orders until the processing tag is removed)
Shippo:
- If tag-based filtering is required, confirm whether Shippo can filter based on Shopify order tags in your setup
- Otherwise, rely on the
BIQ_READYworkflow discipline combined with the Shopify fulfillment hold backstop
Other 3PLs:
- Check your 3PL's documentation for Shopify tag filtering capabilities
- If your 3PL supports Shopify fulfillment status filtering, the fulfillment hold provides an additional safety net
Step 3: Test the Protection
Run through this quick verification test before going live:
- Place a test order containing a bundle product
- Check your 3PL system immediately — depending on your integration pattern:
- Allowlist (Pattern A): The order should not appear at all (no
BIQ_READYtag yet) - Denylist (Pattern B): The order should be clearly marked as not-ready
- Backstop (Pattern C): The order should be blocked by a fulfillment hold
- Allowlist (Pattern A): The order should not appear at all (no
- Wait a few seconds for BundlesIQ to process
- Check again — the order should now have the
BIQ_READYtag and be importable - Verify the imported order shows the correct component line items (post-transformation state)
- Test an error scenario — intentionally misconfigure a bundle to trigger a processing failure and confirm:
BIQ_ERRORappears on the order- The fulfillment hold remains in place (if enabled)
- The order does not become ship-ready in your downstream system
Compatibility Checklist for Any OMS/WMS/3PL
When evaluating whether a system works with BundlesIQ, answer these four questions:
- Tag filtering: Can it include or exclude Shopify orders based on order tags at import?
- Tag visibility: Does it import Shopify order tags at all?
- Hold handling: Does it delay importing orders that have a Shopify fulfillment hold?
- Fulfillment sync: Does it create fulfillments in Shopify or push tracking back to Shopify?
If you have (1) or (3), you can implement a robust "default deny" workflow. If you only have (2), you can still use a manual workflow where staff checks tags before shipping.
Tag Naming Best Practices
- Use ASCII, uppercase, underscore or hyphen format:
BIQ_READY,ON-HOLD - Avoid special characters that some systems handle inconsistently:
:/@emoji - Keep tags short and stable — 3PL rule builders often require exact matches
- Document your tag conventions and share them with your fulfillment team
What Happens When Processing Fails
If BundlesIQ cannot process an order:
- The
BIQ_PROCESSINGtag remains (or is replaced withBIQ_ERROR) - The
BIQ_READYtag is not applied - Fulfillment holds remain in place
- The order is not importable by the 3PL
- The error appears in the BundlesIQ Health dashboard
- If automatic retries are enabled, BundlesIQ will attempt to reprocess after the cooldown period
- Once resolved (automatically or manually), the
BIQ_READYtag is applied and the order becomes importable
Parent-Only (BOM) Mode and 3PL
If you use Parent-Only (BOM) mode, your 3PL will see only the bundle ghost SKU on the order — no component line items are added. This means:
- Your 3PL or warehouse must know the bill of materials (BOM) for each bundle SKU
- 3PL protection tags (
BIQ_PROCESSING,BIQ_READY) still apply — they gate inventory reservation processing, not order editing - Fulfillment holds are still placed and released during processing
Parent-Only mode is typically used with internal warehouses or assembly operations where staff have access to the BOM, not with external 3PLs that expect individual SKUs on each order. If your 3PL needs to see component line items, use Hybrid, Reporting, or Operational mode instead.
Orders Without Bundles
If an order does not contain any bundle products:
- BundlesIQ does not apply any tags to the order
- The order is immediately available to your 3PL through its normal import process
- No fulfillment holds are placed
If your 3PL is configured to only import orders with the
BIQ_READYtag, non-bundle orders will not be imported either. In this case, you may want to use a Shopify Flow or script to add theBIQ_READYtag to non-bundle orders automatically. Alternatively, configure your 3PL to import orders that either haveBIQ_READYor do not haveBIQ_PROCESSING.
Common Mistakes
- Not configuring the 3PL side — Enabling 3PL protection in BundlesIQ only adds tags. You must also configure your 3PL to filter on those tags
- Using denylist instead of allowlist — The denylist approach has a small race window (order created before tag is applied). The allowlist approach (
BIQ_READYrequired) is more reliable - Forgetting about non-bundle orders — If your 3PL requires the
BIQ_READYtag, make sure non-bundle orders also get tagged or use a combined filter rule