You can create fulfillment apps that integrate into inventory management, order management, shipping, and fulfillment processes. This guide describes the different types of apps that you can build with Shopify. It also provides information about migrating your app to use fulfillment order-based workflows, and offers related developers tools and resources to get you started. ## Inventory management apps [Inventory management apps](/docs/apps/build/orders-fulfillment/inventory-management-apps) automate the inventory management process by querying and adjusting inventory quantities on behalf of merchants. Inventory apps can help merchants organize and manage goods throughout the supply chain, manage what customers can purchase on the merchant's sales channels, determine when to make a purchase order, and centralize inventory and order data. The following diagram shows some of the inventory management activities that an app or third-party logistics provider can perform in the context of an order lifecycle: ## Order management apps [Order management apps](/docs/apps/build/orders-fulfillment/order-management-apps) fulfill orders on behalf of merchants. Apps can automate fulfillment, or merchants can directly fulfill orders through the app. Order management apps can help merchants with complicated shipping workflows that include multiple steps like buying shipping labels, reassigning inventory based on availability, or rescheduling upcoming shipments for a different date. The following diagram shows an example lifecycle of fulfilling an order using an order management app: ## Order routing apps [Order routing apps](/docs/apps/build/orders-fulfillment/order-routing-apps) provide a way for merchants with complex or highly custom needs to take control over their fulfillment and delivery strategy needs. Order routing apps use [Shopify Functions](/docs/apps/build/functions) to customize fulfillment and delivery strategies. Apps can register custom [location rules](/docs/apps/build/orders-fulfillment/order-routing-apps/location-rules) for use with order routing, or generate [fulfillment constraints](/docs/apps/build/orders-fulfillment/order-routing-apps/build-fulfillment-constraints) to determine how items are to be fulfilled. The following diagram shows an example lifecycle of registering and executing a Shopify Function using an order routing app: ## Fulfillment service apps [Fulfillment service apps](/docs/apps/build/orders-fulfillment/fulfillment-service-apps) are services that perform the fulfillment of physical products for merchants. These apps enable high-quality communication between fulfillment centers and merchants and transparent reporting about order status through the Shopify admin. Merchants and other apps can submit requests to fulfill orders, and fulfillment services can subsequently approve or reject requests to fulfill. After a request is approved, merchants can also submit requests to cancel the fulfillment order before the order is shipped. The following diagram shows an example lifecycle of fulfilling an order using a fulfillment service app: ## Returns apps [Return apps](/docs/apps/build/orders-fulfillment/returns-apps) capture the financial, logistical, and business intent of a return. These apps provide merchants with various ways to manage their returns. Merchants manage their returns in Shopify, and returns apps can take actions on behalf of merchants. For example, a returns app can identify eligible items for a return and issue customers a refund for returned items on behalf of the merchant. The following diagram shows an example lifecycle of a return: ## Migrating your app In Shopify, the [`FulfillmentOrder`](/docs/api/admin-graphql/latest/objects/FulfillmentOrder) object models an end-to-end fulfillment process and is available in the GraphQL Admin API. The `FulfillmentOrder` object enables fulfillment data to sync accurately between Shopify and apps. > Deprecated: > By API version 2023-07, all apps should be using the [`FulfillmentOrder`](/docs/api/admin-graphql/latests/objects/FulfillmentOrder) object to manage fulfillments. > Apps using the following GraphQL Admin API objects to fulfill orders are using a legacy workflow that is no longer supported as of API version 2022-07: > > - [`Order`](/docs/api/admin-graphql/latest/objects/Order) > - [`Fulfillment`](/docs/api/admin-graphql/latest/objects/Fulfillment) ### Benefits Migrating your app to the fulfillment orders workflow provides the following benefits: - You can fetch the assigned location of a given group of unfulfilled line items to determine where fulfillment should occur. - You no longer need to match SKUs or filter out the items on an order that don’t apply to you before you can determine which items you need to fulfill. - App users and apps can both add notes to requests, which can improve communication throughout the fulfillment process. - The process of making fulfillment and cancellation requests is formalized. ### Implementing recommended workflows To learn how to migrate your app, refer to [Migrate to fulfillment orders](/docs/apps/build/orders-fulfillment/migrate-to-fulfillment-orders). If you maintain a third-party app or Shopify Flow workflow that relies on `Order` and `Fulfillment` API resources for order automation, then refer to [Track orders placed through third-party marketplaces](/docs/apps/build/orders-fulfillment/order-management-apps/track-orders-other-platforms). ## Developer tools and resources Explore the following developer tools and resources to learn more about fulfillment apps.