HomeSolutionsAboutDocumentation

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:

  1. Customer places an order containing the bundle ghost SKU
  2. Your 3PL imports the order immediately (or within seconds)
  3. Warehouse staff starts picking based on the ghost SKU (wrong item)
  4. 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

  1. Navigate to BundlesIQ > Settings
  2. Under 3PL Protection, ensure the master toggle is Enabled
  3. Configure tag names if you need custom values (the defaults work for most setups)
  4. Enable alias tags if your 3PL expects specific tag names like ON-HOLD or READY_TO_SHIP
  5. Enable fulfillment holds if you want the Shopify-native hold as a backstop
  6. 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_PROCESSING and BIQ_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_READY workflow 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:

  1. Place a test order containing a bundle product
  2. Check your 3PL system immediately — depending on your integration pattern:
    • Allowlist (Pattern A): The order should not appear at all (no BIQ_READY tag 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
  3. Wait a few seconds for BundlesIQ to process
  4. Check again — the order should now have the BIQ_READY tag and be importable
  5. Verify the imported order shows the correct component line items (post-transformation state)
  6. Test an error scenario — intentionally misconfigure a bundle to trigger a processing failure and confirm:
    • BIQ_ERROR appears 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:

  1. Tag filtering: Can it include or exclude Shopify orders based on order tags at import?
  2. Tag visibility: Does it import Shopify order tags at all?
  3. Hold handling: Does it delay importing orders that have a Shopify fulfillment hold?
  4. 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:

  1. The BIQ_PROCESSING tag remains (or is replaced with BIQ_ERROR)
  2. The BIQ_READY tag is not applied
  3. Fulfillment holds remain in place
  4. The order is not importable by the 3PL
  5. The error appears in the BundlesIQ Health dashboard
  6. If automatic retries are enabled, BundlesIQ will attempt to reprocess after the cooldown period
  7. Once resolved (automatically or manually), the BIQ_READY tag 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_READY tag, non-bundle orders will not be imported either. In this case, you may want to use a Shopify Flow or script to add the BIQ_READY tag to non-bundle orders automatically. Alternatively, configure your 3PL to import orders that either have BIQ_READY or do not have BIQ_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_READY required) is more reliable
  • Forgetting about non-bundle orders — If your 3PL requires the BIQ_READY tag, make sure non-bundle orders also get tagged or use a combined filter rule

Related Pages