
A practical look at what is new in the latest W2S release, and why it finally gives multi-platform store operators the visibility and control they have been missing.
If you run WooCommerce and Shopify side by side, you already know the drill. An order syncs across. You check Shopify. Something looks off: maybe the fulfillment provider is wrong, maybe a line item is missing, maybe the order total does not match what you expected. So you dig in.
You check the plugin logs. They tell you the sync ran. They do not tell you what was actually sent to Shopify. You check WooCommerce, compare fields manually, and eventually make your best guess about where things went wrong.
That guesswork has always been the hidden cost of running a two-platform operation. And when fulfillment also gets assigned to the wrong provider, or not assigned at all, and someone on your team ends up fixing it by hand in Shopify after every sync run.
The latest W2S update addresses both of these problems directly. Two new Pro features, the JSON Audit Log Viewer and Dynamic Fulfillment Service Mapping, tackle the two most common points of failure in WooCommerce-Shopify order sync: not being able to see what was sent, and not having control over where it goes.
Here is what changed, how it works, and who should care most.
Feature 1: JSON Audit Log Viewer: Finally See Exactly What Was Sent to Shopify
The Audit Log in W2S has always shown you that a sync happened: timestamp, entity type, action taken, and a status. What it could not show you was the actual data payload: the raw JSON object that was constructed and pushed to Shopify’s API for each order.
That gap matters more than it sounds. When a sync appears to succeed but the order in Shopify looks wrong, the problem is almost never the sync engine itself. It is the data: a field that did not transfer cleanly, a value that got dropped, a mapping that went sideways somewhere. Without seeing the payload, you are diagnosing blind.
How It Works
The Audit Log tab now includes a Payload column in its table. By default, this column is present but empty. The View button only becomes active once you enable debug logging.
To turn it on: go to the Audit tab and check the ‘Enable Debug Logging’ checkbox at the top of the page, then click Save. The description beneath the checkbox is explicit about what this does: W2S will store the raw Shopify order JSON sent for each sync attempt, subject to size limits.
Once enabled, every subsequent order sync will log its full payload. The Payload column will show a blue View button for each logged record. Click it and you get direct access to the complete JSON object that was sent to Shopify for that order.
| Where to find it:Woo-Shopify plugin > Audit tab > check ‘Enable Debug Logging’ > Save. The Payload column will populate with a View button for each order sync that runs after logging is enabled. |
What the Payload Shows You
Clicking View opens a modal titled ‘JSON payload’, a scrollable, dark-background panel showing the complete JSON object W2S sent to Shopify for that order. It is read-only: you can scroll through it and that is it. No editing, no field highlighting, no filtering. Just the raw data, exactly as it was sent.
What you see inside covers everything W2S assembled for that sync: line_items with title, quantity, price, SKU, variant_id, and fulfillment_service per item; financial_status; the note field (which shows ‘Synced from WooCommerce Order #[number]’ by default); tags such as ‘woocommerce-sync’; total_price, subtotal_price, and total_tax. The modal scrolls, so longer payloads with more line items are all visible.
The only action available is the Copy button in the modal header. One click copies the entire JSON to your clipboard. From there you can paste it into a JSON viewer, share it with your developer, or compare it directly against what Shopify shows on its end.
The Real Workflow Benefit
Before this feature, debugging a sync issue looked like this: pull the WooCommerce order, write down the key fields, open Shopify, find the corresponding order, compare fields manually, guess at the discrepancy, attempt a re-sync, and repeat until it looks right.
Now it looks like this: open the Audit Log, find the order, click View in the Payload column, see exactly what W2S sent to Shopify, and identify the problem in seconds.
For store operators running daily or scheduled syncs, this is especially useful after overnight runs. Instead of opening every order in Shopify to check for issues, you can scan the Audit Log and zero in on anything that looks off.
For developers managing the integration on behalf of clients, it removes an entire category of back-and-forth. Instead of asking ‘what did the plugin actually send?’, the answer is one click away.
| Important note:Debug logging only captures payloads from syncs that run after it is enabled. Existing log entries will still show in the Audit Log, but their Payload cells will not have data unless they were synced while logging was active. Turn it on before your next scheduled sync to start capturing. |
Feature 2: Dynamic Fulfillment Service Mapping: Route Orders to the Right Provider Automatically
Even when order data syncs across to Shopify correctly, there has always been a second failure point for stores using third-party logistics: Shopify receives the order but does not know which fulfillment service should handle it.
If you use a 3PL provider, whether that is Amazon MCF, ShipBob, a print-on-demand service like Contrado, or a custom logistics operation, Shopify needs to know who is responsible for fulfilling each order. Without this, orders land in Shopify in a limbo state: synced, but not routed. Someone has to manually assign the fulfillment provider after every sync.
At low volume, this is an annoyance. At scale, it is a real operational cost, and a risk, because manual steps get missed.
How It Works
The fulfillment mapping is configured inside the Orders Filters modal, which you access by clicking the Advanced Sync button on the Orders card in the main sync configuration screen.
Inside the Orders Filters modal, below the date and status filters, there is a Fulfillment Settings section. The UI is clear about what this does: ‘Woo to Shopify: sets fulfillment_service on line items and requested_fulfillment_service_id on shipping lines.’
You select your fulfillment provider from the Fulfillment service dropdown. The available options are:
| Option | What It Means | When to Use It |
| manual | No automated fulfillment assignment | If you fulfill orders yourself or manage routing separately in Shopify |
| shopify | Assigns to Shopify’s own fulfillment network | If you use Shopify Fulfillment Network (SFN) |
| contrado | Routes to Contrado (print-on-demand provider) | If you use Contrado for product fulfillment |
| Custom | Enter your own fulfillment service handle | For any 3PL or custom provider registered in Shopify |
The Custom Handle Option
The Custom option is the most flexible, and the most important for stores using their own 3PL or a provider not listed in the dropdown. When you select Custom, a ‘Custom handle’ text field appears where you enter the handle of your fulfillment service as it is registered in Shopify.
Once your selection is saved using the ‘Save fulfillment settings’ button, W2S will automatically apply that fulfillment service assignment during every subsequent order sync from WooCommerce to Shopify, setting it at the line item level via fulfillment_service and on the shipping line via requested_fulfillment_service_id.
| Where to find it:Woo-Shopify plugin > Config tab > Orders module > Advanced Sync button > Orders Filters modal > Fulfillment Settings section. Select your provider, enter a custom handle if needed, and click Save fulfillment settings. |
What This Eliminates
The manual step of opening each synced order in Shopify and assigning it to the right provider is gone. Configure it once in W2S and it applies on every sync, automatically, for every order. If you run hourly or daily sync schedules, the compounding time savings are significant.
More importantly, it closes the gap where orders could sit unassigned in Shopify, unnoticed, until a customer complained about a delay. The assignment now happens at the moment of sync, not as a separate manual task afterward.
What These Features Look Like in Practice
Scenario A: The sync ran, but something is wrong with the order in Shopify
A customer contacts support: their order arrived with wrong quantities. WooCommerce shows the correct items. Shopify shows something different. Your team would normally spend 30 minutes comparing fields across two platforms, hoping to spot the mismatch.
With the JSON Audit Log enabled, the investigation takes two minutes: open the Audit Log, find the order entry, click View in the Payload column, and read exactly what W2S sent. The discrepancy is visible immediately. Was a variant ID incorrect? Did a product weight override the line item? The payload shows it.
Scenario B: A new 3PL integration and orders are not reaching the fulfillment queue
You have onboarded a new third-party logistics provider and registered them as a fulfillment service in Shopify. Orders from WooCommerce are syncing across correctly, but the 3PL’s queue in Shopify is empty. The orders exist, they just have no fulfillment assignment.
You open the Orders Filters modal in W2S, select Custom under Fulfillment service, enter your 3PL’s Shopify handle, and save. The next sync run assigns the provider at the line item and shipping line level. Orders go directly into the 3PL’s queue. No manual step. No lag.
Scenario C: Daily syncs, dozens of orders, zero time to audit each one
You run a daily sync that processes 40 to 60 WooCommerce orders overnight. In the morning, you check the Audit Log and notice one order has an unusual message in the log. Before this update, you would need to open that order in both platforms to understand what happened.
With debug logging active, you click View on that entry, scan the JSON, and identify the issue immediately. Everything else looks clean. You move on. The whole check takes five minutes instead of thirty.
Frequently Asked Questions
What does the JSON Audit Log Viewer in W2S Sync show me?
Clicking View opens a read-only modal titled ‘JSON payload’. It shows the complete JSON object W2S sent to Shopify for that order, scrollable, with a dark background for readability. The fields visible include line_items (title, quantity, price, SKU, variant_id, fulfillment_service per item), financial_status, note, tags, total_price, subtotal_price, and total_tax. The only action available is the Copy button in the modal header, which copies the full JSON to your clipboard in one click.
How do I enable the View button in the Payload column?
Go to the Audit tab in W2S Sync and check the ‘Enable Debug Logging’ checkbox at the top of the page, then click Save. Once enabled, W2S will capture and store the full JSON payload for every subsequent order sync. The View button will appear in the Payload column for each logged record. Note: this only captures syncs that run after logging is enabled and does not backfill existing log entries.
Is the JSON payload viewer available in the free version?
No. The JSON Audit Log Viewer with payload capture and the View button is a Pro feature. The free version of W2S includes basic Audit Log visibility, but full payload inspection requires a Pro license.
What fulfillment services does the Dynamic Fulfillment Mapping support?
The dropdown includes manual, shopify (Shopify Fulfillment Network), and contrado (print-on-demand) as built-in options. The Custom option lets you enter any fulfillment service handle registered in your Shopify account, which means it works with any 3PL provider, warehouse system, or custom fulfillment service you have set up in Shopify.
Where exactly do I configure the fulfillment service in W2S?
Go to the Orders module in the main W2S configuration screen and click the Advanced Sync button. This opens the Orders Filters modal. Scroll to the Fulfillment Settings section at the bottom of the modal. Select your fulfillment provider from the dropdown, enter a custom handle if you selected Custom, and click ‘Save fulfillment settings’ before closing the modal.
What Shopify fields does the fulfillment mapping actually set?
W2S sets two fields during the order sync: fulfillment_service on each line item, and requested_fulfillment_service_id on the shipping line. These are the fields Shopify uses to route orders to specific fulfillment providers and locations. This is noted directly in the UI description inside the Orders Filters modal.
Will the fulfillment mapping apply to all future syncs automatically?
Yes. Once you configure and save the fulfillment settings in the Orders Filters modal, W2S applies that configuration to every subsequent order sync from WooCommerce to Shopify, whether triggered manually, on save, or on your scheduled sync interval. You configure it once and it runs automatically from that point forward.
The Bottom Line
Syncing orders between WooCommerce and Shopify has never been the hard part. If you have ever opened Shopify after a sync run and thought ‘that does not look right’, then spent the next hour figuring out why, you know exactly what this release is fixing.
The JSON payload modal gives you a direct, readable window into exactly what was sent to Shopify for every order. The Dynamic Fulfillment Service Mapping, including custom handle support, removes the manual fulfillment assignment step for anyone running a 3PL or non-standard provider setup.
Neither feature is flashy. Both save real time and remove real errors from a workflow that, until now, required too much guesswork.
If you are on W2S Pro, update to the latest version and turn on debug logging before your next sync. If you are still on the free version and hitting the limits of basic log visibility, this is a good moment to look at what Pro actually includes.
| Ready to stop guessing what your sync is sending? Upgrade to W2S Sync Pro and get full JSON payload visibility, automatic fulfillment routing with custom provider support, and priority support for your WooCommerce-Shopify integration. [Replace with link to W2S Pro plugin page] |