Hi Paul. It’s not currently possible to define that nested JSON structure via the feed settings. We do have it on the feature request list for consideration by the development team when planning future versions of the add-on and I added a vote for you there.
You could use the gform_webhooks_request_data filter in the theme functions.php file or a custom functionality plugin to create your own array of data, including using nested arrays. The array you return via the filter will then be json encoded by the add-on before being sent to the designated endpoint.
An alternative solution would be to use the third-party Gravity Flow add-on which has an outgoing webhook step which supports defining the request body using json in a textarea setting.
Is there any logging you can enable on the site where WooCommerce is running? That is where you will need to see what is happening if it worked at the webhook.site.
Does the WC Rest API expect your data to be sent as a JSON array which the gform webhook is/not encoding in expected format?
I find the combination of tools like Postman and RequestBin to be invaluable when debugging API request/responses. Sending my webhook to RequestBin shows me the output format exactly while PostMan can help me build up a request structure that API will definitely receive independent of any WP/GForms (or my own) code.
If you do look at Gravity Flow’s outgoing webhook, from your description the RAW body format would be a good approach to build the structure without PHP code (i.e. define the json array in the step settings and use merge tags to populate values.