*** title: Checklist sidebarTitle: Checklist description: Use this checklist as you build your integration last-updated: 'February 24, 2026' --------------------------------- Use this comprehensive checklist to ensure your ShipBob API integration is production-ready. Test each component thoroughly in the sandbox environment before going live. This checklist is comprehensive and flexible. Complete the sections that apply to your specific integration needs. *** ## Initial Setup & Authentication * [ ] Sign up for [sandbox account](https://webstage.shipbob.dev/app/merchant/#/SignUp) * [ ] Validate email address to activate account * [ ] Confirm access to ShipBob sandbox dashboard * [ ] Navigate to **Finances > Payment Methods** * [ ] Add test credit card: `4111 1111 1111 1111` * [ ] Verify payment method is active * [ ] Test that orders don't go On-Hold due to payment issues * [ ] Generate Personal Access Token (PAT) or set up OAuth 2.0 * [ ] Test authentication with GET `/2025-07/channel` endpoint * [ ] Retrieve and save your `channel_id` with write access * [ ] Verify all required scopes are present * [ ] Configure correct base URL: `https://sandbox-api.shipbob.com` * [ ] Set up proper headers (Authorization, `shipbob_channel_id`) * [ ] Implement rate limiting (150 requests/minute) * [ ] Handle 429 responses with exponential backoff * [ ] Monitor `x-remaining-calls` and `x-retry-after` headers for rate limits *** ## Product Management * [ ] Create a simple product with required fields (name, reference\_id) * [ ] Verify product created successfully via GET products endpoint * [ ] Confirm `inventory_id` is returned and stored * [ ] Add barcode to product (recommended for receiving) * [ ] Set packaging preferences (`requirement_id`, `material_type_id`) * [ ] Add customs information for international shipments (optional) * [ ] Decide on bundle handling strategy (deconstruct vs. ShipBob-managed) * [ ] If deconstructing: Test sending component SKUs separately * [ ] If ShipBob-managed: Create bundle in UI and test with bundle SKU * [ ] Verify bundle inventory calculations work correctly * [ ] Test order creation with bundle SKU * [ ] Confirm fulfillment returns correct component `inventory_ids` * [ ] GET all products with pagination * [ ] Filter products by SKU (`reference_id`) * [ ] Retrieve single product by `product_id` * [ ] Test product search functionality *** ## Inventory Management * [ ] Fetch all inventory levels using GET `/2025-07/inventory` * [ ] Map `inventory_id` to your product SKUs * [ ] Test pagination for large inventory datasets * [ ] Implement inventory sync schedule (recommended: every 15-30 minutes) * [ ] Calculate sellable inventory correctly * [ ] Handle bundle inventory (calculate based on component quantities) * [ ] Implement buffer/reserve stock logic (optional) * [ ] Test with inactive inventory items * [ ] Handle digital products (skip or set to 0) * [ ] Retrieve inventory by fulfillment center * [ ] Test inventory allocation across multiple locations * [ ] Verify location-specific inventory updates * [ ] Track inventory changes over time * [ ] Monitor inventory adjustments * [ ] Review inventory movement logs *** ## Order Processing * [ ] Create order with required fields (shipping\_method, recipient, products, reference\_id) * [ ] Verify unique `reference_id` validation works * [ ] Include optional `order_number` field * [ ] Confirm `shipbob_channel_id` header is included * [ ] Test with complete address (address1, city, country, state, zip) * [ ] Use ISO Alpha-2 country codes * [ ] Include recipient name, email, and phone number * [ ] Test address validation * [ ] Test with address2 field * [ ] Test international addresses (optional) * [ ] Add custom tags with name/value pairs * [ ] Test automation rule triggers with specific tag names * [ ] Verify tags appear in order details * [ ] Test multiple tags on single order * [ ] GET order by order\_id * [ ] GET order by reference\_id * [ ] List all orders with pagination * [ ] Filter orders by date range * [ ] Track order from creation to shipment * [ ] Monitor shipment status changes * [ ] Handle split shipments (multiple packages) * [ ] Track tracking numbers * [ ] Test order cancellation before fulfillment * [ ] Cancel specific shipments * [ ] Verify cancellation restrictions * [ ] Test order with out-of-stock items (should go to Exception) * [ ] Test order with invalid address (should go On-Hold) * [ ] Test order without payment method (should go On-Hold) * [ ] Handle orders split across multiple fulfillment centers * [ ] Test hazmat/restricted products (optional) *** ## Warehouse Receiving Orders (WRO) * [ ] Verify all products exist in ShipBob with inventory\_ids * [ ] Create missing products before WRO creation * [ ] Set customs information for international products (optional) * [ ] Create WRO * [ ] Include all required inventory items with quantities * [ ] Specify correct `fulfillment_center` id * [ ] Add tracking numbers if available * [ ] Monitor WRO status (Awaiting → In Transit → Processing → Completed) * [ ] Poll for completed WROs (recommended: every 15-30 minutes) * [ ] Retrieve WRO details and received quantities * [ ] Handle discrepancies between expected and received quantities * [ ] Update inventory in your system after WRO completion * [ ] Mark WRO as synced in your system *** ## Returns Management * [ ] Create basic return with inventory\_id and quantity * [ ] Include unique `reference_id` * [ ] Specify fulfillment\_center id * [ ] Add tracking\_number if available * [ ] Link to original\_shipment\_id when applicable * [ ] Set requested\_action (Default, Restock, Dispose) * [ ] Identify lot-tracked inventory items * [ ] Include lot\_number for lot-tracked returns * [ ] Include lot\_date for lot-tracked returns * [ ] Verify lot information matches original shipment * [ ] Create return with multiple inventory items * [ ] Test different quantities per item * [ ] Test different requested\_actions per item * [ ] Monitor return status progression * [ ] Track when return is received at warehouse * [ ] Monitor processing status * [ ] Verify completion status * [ ] GET return by return\_id * [ ] GET return by reference\_id * [ ] List all returns with pagination * [ ] Filter returns by status * [ ] Verify inventory restocked correctly (if applicable) * [ ] Handle refund processing in your system * [ ] Track disposed items * [ ] Monitor return completion webhooks *** ## Webhooks * [ ] Set up webhook endpoint URL (must be publicly accessible) * [ ] Implement HTTPS endpoint (required) * [ ] Return 2XX response for successful receipt * [ ] Subscribe to webhooks via POST `/2025-07/webhook` or create webhooks in ShipBob dashboard * [ ] Subscribe to `order.shipped` event * [ ] Subscribe to `order.shipment.delivered` event * [ ] Subscribe to `order.shipment.exception` event * [ ] Subscribe to `order.shipment.on_hold` event * [ ] Subscribe to `order.shipment.cancelled` event * [ ] Test each webhook fires correctly * [ ] Subscribe to `return.created` event * [ ] Subscribe to `return.updated` event * [ ] Subscribe to `return.completed` event * [ ] Verify webhook payloads contain expected data * [ ] Test webhook retry mechanism (fail to return 2XX) * [ ] Implement idempotency (handle duplicate webhooks) * [ ] Log webhook-timestamp and x-request-id headers * [ ] List all webhook subscriptions * [ ] Update webhook subscription URLs * [ ] Delete/unsubscribe from webhooks *** ## Sandbox Simulations * [ ] Ensure product has inventory in Cicero (IL) or Moreno Valley (CA) * [ ] Set packaging preferences in Merchant App or when creating product * [ ] Add customs info for international orders * [ ] Verify shipment is not On-Hold, Exception, or Cancelled * [ ] Confirm test payment method is active * [ ] Use POST `/2.0/simulate/shipment` endpoint * [ ] Simulate "ShipOrder" action * [ ] Verify shipment moves to Shipped status * [ ] Confirm tracking number is generated * [ ] Check `order.shipped` webhook fires * [ ] Simulate "DeliverOrder" action * [ ] Test with delay parameter (e.g., 10 minutes) * [ ] Verify shipment moves to Delivered status * [ ] Check `order.shipment.delivered` webhook fires * [ ] Track simulation\_id returned in response * [ ] Monitor background simulation completion * [ ] Handle simulation failures/errors *** ## Error Handling & Edge Cases * [ ] Implement rate limit handling (150 requests/minute) * [ ] Handle 429 TooManyRequests responses * [ ] Implement exponential backoff * [ ] Monitor rate limit headers * [ ] Handle 401 Unauthorized responses * [ ] Test expired OAuth tokens (refresh flow) * [ ] Validate PAT token before making requests * [ ] Handle missing or invalid `channel_id` * [ ] Test with missing required fields * [ ] Test with invalid data types * [ ] Test with duplicate reference\_ids * [ ] Handle invalid address data * [ ] Test with non-existent product/inventory IDs * [ ] Validate ISO country codes * [ ] Handle insufficient inventory scenarios * [ ] Test order creation with inactive products * [ ] Handle cancelled shipment modifications * [ ] Test returns for non-existent shipments * [ ] Validate fulfillment center availability * [ ] Reconcile order status between systems * [ ] Handle inventory sync discrepancies * [ ] Test webhook vs. polling data consistency * [ ] Implement data validation on webhook payloads *** ## Performance & Scalability * [ ] Minimize API calls using bulk endpoints * [ ] Implement pagination correctly * [ ] Use filtering to reduce response sizes * [ ] Batch operations when possible * [ ] Prefer webhooks over polling for real-time updates * [ ] Implement polling as backup for critical data * [ ] Set appropriate polling intervals (15-30 minutes) * [ ] Monitor webhook delivery reliability * [ ] Log all API requests/responses * [ ] Track API response times * [ ] Monitor error rates by endpoint * [ ] Set up alerts for critical failures * [ ] Track rate limit usage patterns * [ ] Test concurrent order creation * [ ] Simulate high-volume inventory syncs * [ ] Test webhook endpoint under load *** ## Pre-Production Checklist * [ ] Complete all sandbox testing scenarios * [ ] Document all API integration points * [ ] Set up production monitoring and alerts * [ ] Configure production API credentials * [ ] Update base URL to `https://api.shipbob.com` * [ ] Test with small volume in production (pilot) * [ ] Verify webhook endpoints are production-ready * [ ] Confirm inventory sync accuracy * [ ] Test order fulfillment end-to-end * [ ] Validate return processing workflow * [ ] Train support team on integration troubleshooting *** ## Additional Resources Set up your testing environment Test fulfillment workflows Complete API documentation Real-time event notifications For additional support or to report issues during integration testing, contact ShipBob Tech Specialists at [techspecialists@shipbob.com](mailto:techspecialists@shipbob.com).