Skip to main content

scheduleFulfillment

Schedules a fulfillment for transmission to a 3PL integration.

This mutation initiates the async send process for a fulfillment. The fulfillment stays in "allocated" state while a background job handles the integration call. On success, the fulfillment transitions to "sent". If retries are exhausted, it transitions to "failed_to_fulfill".

Requirements

  • User must have schedule_fulfillment permission
  • Valid brand context must be provided (via argument or X-Brand-Id header)
  • Order must exist and be in "ordered" state (for V2 orders)
  • Fulfillment must exist and be in "allocated" or "failed_to_fulfill" state

Arguments

  • fulfillment_id (required): The ID of the fulfillment to schedule
  • order_id (required): The ID of the order the fulfillment belongs to
  • warehouse_id (required): The ID of the warehouse where the fulfillment is processed

Behavior

  • Validates transition requirements (shipping address, carrier service)
  • Creates a background job to transmit fulfillment to 3PL integration
  • On success: transitions to "sent" state
  • On failure: retries with exponential backoff (max 5 attempts)
  • After retry exhaustion: transitions to "failed_to_fulfill" state (can be retried manually)
scheduleFulfillment(
input: ScheduleFulfillmentInput!
): OrderFulfillment!

Arguments

scheduleFulfillment.input ● ScheduleFulfillmentInput! non-null input common

Parameters for ScheduleFulfillment

Type

OrderFulfillment object orders

This type represents an order fulfillment. An order can have multiple fulfillments, each one associated with a warehouse and a party that fulfilled the order.