Setting Up Webhooks for Order Export
If you use the Export shipping workflow — where CloudFFL sends orders to ShipStation and your warehouse team ships from there — webhooks are what close the loop. They are the mechanism that sends tracking numbers, shipping costs, and status updates back to CloudFFL automatically after your team ships a package in ShipStation.
Without webhooks, you would have to manually update every delivery order in CloudFFL with the tracking number after shipping. With webhooks, it all happens automatically within seconds of a package being shipped.
How Webhooks Work (The Simple Version)
Think of webhooks like a notification system:
- Your warehouse team ships a package from ShipStation.
- ShipStation immediately sends a message to CloudFFL saying "this order shipped, here is the tracking number."
- CloudFFL receives the message, finds the matching delivery order, and updates it with the tracking number, carrier, shipping cost, and date.
- The delivery order status changes from "Exported" to "Shipped."
All of this happens automatically in the background — no one needs to do anything after the initial setup.
Registering Webhooks
Setting up webhooks takes one click:
- Open the ShipStation app in CloudFFL.
- Go to Configuration > Instances.
- Click on your ShipStation instance.
- Click the Register Webhooks button in the header.
CloudFFL handles everything behind the scenes:
- It generates a unique security key to verify that incoming messages are really from ShipStation (not someone else).
- It tells ShipStation exactly where to send updates (your CloudFFL system's address).
- It registers for two types of events:
- Fulfillment Shipped — Fires when a package is shipped from ShipStation. This is the main event that updates your delivery orders with tracking numbers.
- Shipment Created — Fires when a new shipment record is created in ShipStation. Used for logging and future features.
You will see a success message confirming how many webhooks were registered.
Verifying Webhooks Are Working
After registering, you can confirm everything is set up:
- On your ShipStation instance page, click the Webhooks button on the right side (it shows a count).
- You will see a list of registered webhooks.
- Each webhook shows:
- Event — The type of event (e.g., "Fulfillment Shipped v2")
- Registered — A checkmark confirming it is active with ShipStation
- Last Triggered — When ShipStation last sent an update (empty until the first shipment)
- Trigger Count — How many times this webhook has fired
What Happens When a Package Ships
Here is the full chain of events after your warehouse team ships a package from ShipStation:
- ShipStation sends a secure message to CloudFFL with the shipment details.
- CloudFFL verifies the security key to make sure the message is legitimate.
- CloudFFL looks up the matching delivery order using the unique reference number that was sent during export.
- The delivery order is updated with:
- Tracking number — The carrier tracking number for the package
- Carrier — Which carrier shipped it (UPS, FedEx, USPS, etc.)
- Service — Which service level was used (Ground, 2-Day, etc.)
- Ship date — When the package was shipped
- Shipping cost — How much the label cost
- Status — Changes from "Exported" to "Shipped"
- If you have Auto-Validate on Ship turned on in your instance settings, CloudFFL also automatically marks the delivery order as complete — no manual step needed.
Auto-Validate on Ship
This optional setting makes the process fully hands-off:
- Go to your ShipStation instance page.
- Click the Settings tab.
- Check Auto-Validate on Ship.
- Click Save.
With this turned on, when ShipStation reports a package as shipped, CloudFFL will:
- Update the delivery order with all the shipping details (tracking, carrier, cost)
- Automatically mark the delivery order as "Done"
- Close out the shipment so no further action is needed
This means your entire flow — from sales order to shipped and complete — can happen without anyone touching the delivery order in CloudFFL after the initial export.
Tip: Auto-Validate works best when your warehouse team ships everything that gets exported. If they sometimes split shipments or only ship part of an order, you may want to leave this off and validate manually so you can review each delivery.
Troubleshooting Webhooks
Webhooks are not updating my orders:
- Go to your instance page and check the Webhooks button. Make sure each webhook shows "Registered" with a checkmark.
- Check the Logs for any error messages related to webhooks.
- If webhooks show as not registered, click Register Webhooks again.
The wrong delivery order was updated:
- This is rare. CloudFFL matches orders using a unique reference number created during export (e.g., "ODOO-WH/OUT/00042-15"). Check the ShipStation tab on the delivery order to see the reference number.
Webhooks stopped working after a system change:
- If your CloudFFL system's web address changed, the webhook URLs need to be updated. Click Register Webhooks on your instance to re-register with the new address.
I see "Invalid secret" errors in the logs:
- The security key may be out of sync. Go to your instance's Webhook tab, click the Generate button to create a new secret, and then click Register Webhooks to re-register with the new key.
Important: Webhooks require your CloudFFL system to be accessible from the internet. If you are running CloudFFL on a local network that ShipStation cannot reach, webhooks will not work. Contact your CloudFFL administrator if you are unsure.