ShipStation Integration
Real ID can automatically sync ID checks on your orders with ShipStation and update their corresponding order status when customers complete ID checks.
That way you can automate a holding process, where a high risk order is automatically held until the customer verifies their ID.
How does it work?
Real ID integrates with ShipStation using their REST API. Once you enter your ShipStation API credentials in Real ID, then pick order statuses that should be applied when the customer completes or requires ID verification from your ID triggers.
Orders are searched in ShipStation using the WooCommerce order ID as the external reference, with optional prefix support for merchants who use prefixes in their ShipStation setup.
Creating ShipStation API Credentials
First, generate API credentials in your ShipStation account:
- Log into your ShipStation API account
- Go to Settings > API Settings
- Click "Generate API Keys", make sure to select the
v1 ShipStation API
key option
- Copy both the API Key and API Secret for the next step
Integrating ShipStation with Real ID
Now that you have ShipStation API credentials, let's connect them to Real ID.
Open the Real ID Settings > WooCommerce tab and scroll to the ShipStation Integration settings.
Then enter your API Key and API Secret that you generated in ShipStation:
If your WooCommerce orders appear in ShipStation with a prefix (like "WC-1234" instead of just "1234"), enter that prefix in the Order Prefix field. Otherwise, leave it blank.
As you enter your credentials, click Test Connection to verify the connection. If the credentials are correct, you'll see a "Connected" message.
Don't forget to click Save in the top right hand corner so these changes are saved.
ShipStation Order Statuses syncing
After setting up the integration and successfully connecting, Real ID will automatically handle fulfillment statuses in ShipStation:
- When ID Check is Created: On Hold (prevents shipping until verified)
- When ID Check Passes: Awaiting Shipment (ready to fulfill)
- When ID Check Fails: Cancelled (prevents fulfillment)
Order Processing Flow
When ID Verification is Required
When an order requires ID verification:
- First checks if the order is already shipped, cancelled, or in fulfillment (skips if true)
- Updates ShipStation order to your chosen "On Check Created" status (default: On Hold)
- Adds an internal note: "ID verification required"
- Prevents the order from shipping until verification completes
When ID Verification Passes
When the customer successfully completes verification:
- First checks if the order is already shipped or cancelled (skips if true)
- Updates ShipStation order to your chosen "On Check Passed" status (default: Awaiting Shipment)
- Adds an internal note: "ID verification passed"
- The order can now be fulfilled normally
When ID Verification Fails
When verification fails:
- First checks if the order is already shipped or cancelled (skips if true)
- Updates ShipStation order to your chosen "On Check Failed" status (default: Cancelled)
- Adds an internal note: "ID verification failed"
- The merchant can decide how to proceed
Edge Cases Handled
Late ID Verification: If a customer completes ID verification after their order has already been cancelled or shipped, the integration will skip the update and log this event. You'll see a note in the ID check events explaining what happened.
Orders Already Being Packed: If an order is already in "Awaiting Shipment" status when an ID check is created, it won't be reverted back to "On Hold". This prevents disrupting your warehouse operations.
Order Status Protection
The ShipStation integration includes comprehensive safeguards to ensure ID verification never disrupts your fulfillment operations. Understanding these protections helps you confidently use the integration without worrying about interference with your shipping workflow.
Protected Order States
The integration will automatically skip updates for orders in these states:
1. Shipped Orders (Status ID: 4)
- Why it's protected: Once an order is marked as shipped in ShipStation, it represents a completed fulfillment transaction
- What happens: If ID verification completes after shipping, no update occurs
- Event logged: "Order [ID] is in a final state (Shipped) and will not be updated"
- Use case: Prevents confusion when customers complete verification after receiving their order
2. Cancelled Orders (Status ID: 5)
- Why it's protected: Cancelled orders represent a business decision that shouldn't be reversed automatically
- What happens: ID verification results won't change cancelled status
- Event logged: "Order [ID] is in a final state (Cancelled) and will not be updated. Note: ID verification passed but order was already cancelled."
- Use case: Maintains order history integrity and prevents resurrection of cancelled transactions
3. Orders Being Fulfilled (Status ID: 2 - Awaiting Shipment)
- Why it's protected: Orders in active fulfillment shouldn't be disrupted
- What happens: New ID checks won't revert these orders back to "On Hold"
- Event logged: "Order [ID] is already in fulfillment and will not be reverted to hold"
- Use case: Prevents warehouse confusion when packing is already underway
How Protection Works
When any ID verification event occurs, the integration follows this decision flow:
- Fetch Current Status: Retrieves the order's current status from ShipStation
- Check Protection Rules: Determines if the order is in a protected state
- Skip or Proceed:
- Protected states: Logs the skip reason and takes no action
- Non-protected states: Proceeds with the configured status update
Viewing Protected Order Events
All protection decisions are transparently logged in the ID check's event timeline:
- Navigate to the ID check details in your WooCommerce admin
- Scroll to the Events section
- Look for events with type "shipstation-order-sync-skipped"
- These events explain why an update was skipped
Common Scenarios
Scenario 1: Late Verification
- Customer places order requiring ID verification
- Merchant manually ships order before verification completes
- Customer later completes ID verification
- Result: Order remains "Shipped", skip event is logged
Scenario 2: Quick Cancellation
- Order requires ID verification
- Customer requests cancellation
- Merchant cancels in ShipStation
- Customer attempts ID verification
- Result: Order remains "Cancelled", skip event is logged
Scenario 3: Fast Fulfillment
- Order initially doesn't require ID (under threshold)
- Merchant begins fulfillment (Awaiting Shipment)
- Manual ID check is created later
- Result: Order remains "Awaiting Shipment", not reverted to hold
Customizing Protection Behavior
While the core protections cannot be disabled (by design), you can:
- Adjust Status Mappings: Configure which statuses are applied for non-protected orders
- Use Manual Overrides: Manually update orders in ShipStation when needed
- Monitor Skip Events: Use the event log to identify patterns and adjust your workflow
Frequently Asked Questions
How are orders matched between WooCommerce and ShipStation?
Real ID searches for orders in ShipStation using the WooCommerce order ID as the external reference. If you've configured an order prefix, it will be prepended to the order ID during the search.
What happens if an order isn't found in ShipStation?
If an order can't be found in ShipStation (perhaps it hasn't synced yet), the status update will be skipped and an event will be logged. The integration will continue to function normally for other orders.
Can I disable certain status updates?
Yes, you can leave any status mapping blank in the settings to disable that particular update. For example, if you don't want to automatically cancel failed orders, leave the "When ID Check Fails" field empty.
How do I know if the integration is working?
Each ShipStation action is logged as an event on the ID check. You can view these events in the check details to see exactly what happened with the ShipStation integration.
The ShipStation order status isn't updating, what should I check?
- Verify the integration is enabled in settings
- Check that your API credentials are correct using the "Test Connection" button
- Ensure the order exists in ShipStation with the correct external reference
- Check if you're using an order prefix and have it configured correctly
- Review the events on the ID check for any error messages
- Make sure thare aren't multiple ShipStation orders for a single corresponding WooCommerce order
- Review the order's status in ShipStation, if it's in a final state such as
canceled
orshipped
, then Real ID cannot update it