Skip to Content

Bol.com Orders Sync for WooCommerce — Documentation

Bol.com Orders Sync for WooCommerce — Documentation

What this plugin does

Bol.com Orders Sync for WooCommerce connects one bol.com seller account to WooCommerce through the Retailer API (v10). It imports open orders every 15 minutes, creates shipments on bol when an order reaches your chosen status, cancels order items when you cancel, and pushes stock to your offers every hour.

Scheduled work runs on Action Scheduler, or WP-Cron if Action Scheduler is unavailable. Nothing runs until you tick Enable syncing.

Requirements

  • WordPress 5.8 or later and PHP 7.4 or later
  • WooCommerce 7.0 or later, HPOS or legacy order storage
  • A bol.com seller account with Retailer API access (technical contact details filled in)

Installation

  1. Upload the zip at Plugins → Add New → Upload Plugin and activate it. WooCommerce must be active.
  2. Open WooCommerce → bol.com Sync. There are three tabs: Settings, Sync log and Status.

Getting Retailer API credentials

  1. Log in to the bol Seller Dashboard and open Instellingen → Diensten → API Instellingen.
  2. Fill in the technical contact details. bol requires this before it will grant API access.
  3. Create a set of Client Credentials for the Retailer API (not the Advertising API).
  4. Paste the Client ID and Client Secret into the plugin, choose the fulfilment method and save.
  5. Press Test connection. When it succeeds, tick Enable syncing and save again.

There is no redirect or authorisation step: bol’s Retailer API uses client credentials. The plugin requests an access token on the first call and caches it until just before it expires.

Bol.com Orders Sync settings with Client ID, Client Secret, fulfilment method and import options
WooCommerce → bol.com Sync: Client ID and Secret from the Seller Dashboard, fulfilment method (FBR/FBB) and the order settings.

Settings reference

SettingWhat it does
Client ID / Client SecretRetailer API client credentials. The secret is encrypted at rest.
Fulfilment methodFBR (you ship), FBB (bol ships) or both.
Enable syncingMaster switch for scheduled jobs.
ImportImport open bol orders every 15 minutes.
Status for imported ordersWooCommerce status for new bol orders, usually Processing.
Create shipment when status becomesWhen an order reaches this status (usually Completed), a shipment is created on bol. Untick Enabled to register shipments manually.
Default transporterbol transporter code used when the order has none, e.g. TNT for PostNL.
Cancel on bol when status becomesCancelling in WooCommerce with this status cancels the order items on bol.
Cancellation reasonThe bol reason code sent with cancellations, such as Out of stock.
Look back (days)How far back each sync looks for orders.
Stock syncPush WooCommerce stock to your bol offers every hour.

Buttons on the settings screen

ButtonWhat it does
Test connectionRequests a token and makes a read-only call, then logs the result.
Sync orders nowImports open orders immediately.
Push stock nowSends stock for all known offers immediately.
Clear offer mapForgets the offer IDs learned from imported orders.
Clear cached tokenDiscards the cached access token so a new one is requested on the next call.

How orders are imported

Every 15 minutes the plugin asks bol for open orders of the fulfilment method you chose. Each order becomes a WooCommerce order with line items, prices, the shipment and billing addresses and, where relevant, a pickup-point flag. The currency defaults to EUR and can be changed with the rau_bos_order_currency filter.

Items are matched on the offer reference first — set it on your bol offers to equal your SKU — and on EAN second. An unmatched item is still imported as a placeholder line and the order gets a warning note.

Imports are keyed on the bol order ID, so a repeat sync never duplicates an order. If the customer has asked to cancel, the order is flagged on import.

Shipping and cancelling orders on bol

Imported orders get a bol.com panel on the order edit screen with the bol order ID, the number of order items, pickup-point and cancellation flags, and fields for the transporter and tracking number. Save the order first so the transporter and tracking are stored.

When the order reaches the status in Create shipment when status becomes, the plugin creates a shipment for all order items with the transporter code and tracking number. Tracking recorded by a shipment-tracking plugin is used automatically.

Cancelling the order in WooCommerce cancels its items on bol with your chosen reason code. Do this before shipping — bol does not accept cancellations for shipped items.

WooCommerce order edit screen with the bol.com panel showing order ID, shipment created, PostNL transporter and tracking number
An imported bol.com order. The bol.com panel shows the bol order ID, order items, pickup-point and cancellation flags, and the transporter and tracking number used for the shipment.

Stock sync

bol addresses stock by offer ID. Mapping every SKU to an offer ID requires an asynchronous offer export, so to stay lightweight the free version learns offer IDs from the orders it imports. Import a few orders first, then stock sync covers those offers every hour.

Out-of-stock products push zero. Use rau_bos_stock_buffer to hold back a safety quantity and rau_bos_unmanaged_stock_value for products that don’t manage stock.

The sync log and Status tab

The Sync log records imports, shipments, cancellations, stock pushes and errors, with bol’s violations translated into readable messages and raw API detail attached. Filter by level; entries linked to an order open it directly. Logs are kept for seven days.

The Status tab shows whether the connection is configured, whether syncing is enabled, the cached token state, the fulfilment method, the number of known offers, last and next sync, orders this month, errors in the last 24 hours and the scheduler in use.

Bol.com Orders Sync log with imported orders, a PostNL shipment and a stock sync entry
The sync log after a connection test, two imports, a shipment with PostNL tracking and an hourly stock push.

What the free version includes

  • Up to 150 imported orders per month
  • One bol account
  • 15-minute order sync and hourly stock sync
  • 7-day log retention
  • Whole-order shipments
  • Stock sync for offers learned from imported orders

Troubleshooting

What you seeWhat to do
Test connection fails with 401Check the Client ID and Secret are Retailer API credentials, and that the technical contact details are complete in the Seller Dashboard.
bol warns about too many token requestsThis plugin caches tokens. If you run another bol integration on the same server, make sure it caches too — bol limits per IP.
Stock sync says no offers are knownThe free version learns offers from imported orders. Import some orders first.
Shipment is rejectedRead the log entry — usually the transporter code doesn’t match the tracking format, or the items were already shipped or cancelled.
Items import as placeholdersSet the offer reference on the bol offer to your WooCommerce SKU, or make sure the EAN matches.

For developers: hooks

Every hook below is part of the plugin’s public surface and safe to use from a theme’s functions.php or a small site plugin.

HookTypeUse it to
rau_bos_order_importedactionRun code after a bol order is created. Receives the WC_Order and the raw bol order.
rau_bos_order_currencyfilterCurrency for imported orders (default EUR).
rau_bos_stock_bufferfilterHold back a safety quantity per product.
rau_bos_unmanaged_stock_valuefilterQuantity to push for products that don’t manage stock.
rau_bos_stock_rowsfilterAdjust rows before stock is pushed.
rau_bos_loadedactionFires once the plugin has booted.
// Tag every bol order so it is easy to find in reports.
add_action( 'rau_bos_order_imported', function ( $order, $bol_order ) {
	$order->add_order_note( 'Channel: bol.com' );
}, 10, 2 );

Uninstalling

Deleting the plugin removes its settings, cached token, offer map, counters and log table. Imported orders stay in WooCommerce.

Questions people ask

Does it support bol’s pickup points?

Pickup-point deliveries are imported with a flag on the order so you can see them at a glance.

Can I print bol shipping labels (Verzenden via bol)?

Not in the free version — labels are part of the Pro edition. You can ship with your own transporter and tracking.