<aside>

Project Overview

<aside>

Key Objectives

<aside>

Scope of Work

The scope of work covers all integration requirements as enumerated in Shopify’s SFN integration steps 1 through 11. Below is a breakdown of each major component to be delivered:

  1. Shopify App Creation: We will create a Shopify App specifically for SFN integration. This app will be built to Shopify’s latest API version and high standards of quality, as required to participate in SFN. If no app exists, we will follow Shopify’s app development guidelines to set one up from scratch.

  2. Fulfillment Service Setup: The app will be configured to support fulfillment services in Shopify. This means for each merchant store that installs the app, the app will register a FulfillmentService object representing the partner’s fulfillment location. In line with Shopify’s guidance, we will start by using a single fulfillment location (warehouse) and single fulfillment service for the integration, rather than multiple locations, to reduce complexity. The FulfillmentService will be created via the Shopify API with inventoryManagement and trackingSupport enabled (both set to true) so that the app manages inventory and tracking on Shopify’s side. This establishes the foundation for Shopify to route orders to the partner and for the partner to manage those orders’ fulfillment in Shopify.

  3. Fulfillment Order Flow & API Integration: We will implement the complete fulfillment order workflow using Shopify’s Fulfillment Orders API (GraphQL). When a merchant sells an item stocked at the partner’s location, Shopify will generate a Fulfillment Order assigned to the partner’s service. The app will listen for these fulfillment requests (via webhook or periodic query) and accept or decline them appropriately using GraphQL mutations. Accepting a fulfillment order triggers the partner’s warehouse to pick, pack, and ship the order; if the order cannot be fulfilled, the app will send a rejection with an appropriate reason code. We will handle fulfillment order acceptance, creation of fulfillments, and posting tracking info using Shopify’s APIs (e.g. fulfillmentOrderAcceptFulfillmentRequest, fulfillmentCreate, etc.). This workflow ensures orders flow from Shopify to the partner’s system and back to Shopify as completed fulfillments.

  4. Shipment Tracking Updates: The integration will support end-to-end package tracking visibility for merchants. For every order fulfilled by the partner, the app will update Shopify with tracking numbers and shipment status events. Specifically, the app will use the Fulfillment Events API to record shipping milestones (in transit, out for delivery, delivered, etc.) via fulfillmentEventCreate mutations. It will also pass the carrier tracking number and carrier name to Shopify when creating the fulfillment so that merchants and customers can track orders in real time. To guarantee no tracking information is lost, we will implement Shopify’s callback for retrieving tracking numbers (fetch_tracking_numbers). This means if Shopify ever needs to reconcile missing tracking data, it can call our app and our app will respond with any and all tracking numbers for shipments, ensuring 100% coverage of tracking info. These measures align with Shopify’s requirement that fulfillment apps support tracking and respond to all tracking requests.

  5. Inventory Management Integration: The app will integrate the partner’s inventory system with Shopify so that merchants see accurate stock levels for the partner’s location. We will implement Shopify’s Inventory Management API in the app. The partner’s system will regularly push inventory updates (or respond to Shopify inquiries) for each SKU at the fulfillment location. The integration will handle multiple inventory states that SFN monitors – including Incoming (items en route to the warehouse), On Hand (physical stock in warehouse), Available (sellable stock not committed to orders), Reserved (temporarily held for open orders), Damaged, Safety Stock, and Quality Control states. The app will update Shopify with these quantities as they change, using GraphQL mutations (for example, adjusting available and on-hand quantities when stock is received or orders are fulfilled). The “Committed” state (units allocated to open orders) is managed by Shopify itself, but all other relevant states will be kept in sync. Additionally, we will implement Shopify’s fetch_stock callback to handle on-demand stock reconciliation: if there’s a spike in sales or a delay in routine updates, Shopify can call our app to fetch the latest inventory levels, ensuring that inventory data remains accurate.

  6. Exception Handling (Rejections & Holds): The integration will gracefully handle scenarios where a fulfillment cannot proceed normally. If the partner must reject a fulfillment request (e.g. item not found, address unserviceable) or put an order on hold (e.g. awaiting stock or clarification), the app will use Shopify’s GraphQL mutations to do so with appropriate context. We will provide the most relevant reason codes when calling fulfillmentOrderRejectFulfillmentRequest or fulfillmentOrderHold. Shopify requires selecting a reason (OUT_OF_STOCK, ADDRESS_UNDELIVERABLE, etc.), and if none of Shopify’s standard reasons apply, the app will use “OTHER” with a descriptive message for clarity. This ensures that the merchant can see why an order was held or rejected, maintaining transparency. Handling these exceptions correctly is critical for merchant trust and is mandated by the SFN integration guide.

  7. Estimated Shipping Date Estimates: To set proper expectations with merchants, the integration will provide Shopify with an estimated shipping date for each order. Shopify’s 2025-07 API version introduces a field for estimatedShippedAt on fulfillment orders. Our app will capture the partner’s expected ship date (based on SLA or current warehouse queue) and supply this date when accepting a fulfillment request. This date will be surfaced to merchants in Shopify, so they know when the order is expected to leave the warehouse. As Shopify evolves this feature (including potential future mutations to update the date), we will remain aligned and update our integration accordingly. By providing estimated ship times, the partner’s performance is transparent to merchants and Shopify can display reliable fulfillment timelines.

  8. SFN Configuration & Partner Profile (Intake Form): We will complete the SFN Fulfillment Partner Intake configuration in coordination with Shopify. This involves supplying detailed information about the partner’s services via Shopify’s intake form. We will work with the partner’s team to gather all required data, such as:

    Providing this information is critical because it populates the SFN system that merchants use to filter and compare fulfillment partners. By fully completing the intake form, we ensure the partner’s profile in SFN is accurate and attractive to the right merchants, with correct pricing estimates and capability disclosures. (For example, SFN will use the supplied formulas to show merchants an estimated fulfillment cost given their product size and order volume inputs.) We will make sure all required fields are filled so that the partner meets SFN’s onboarding requirements.

  9. Built for Shopify Alignment: The integration will be developed to meet the “Built for Shopify” program standards. This means the app will adhere to Shopify’s best practices for quality, security, performance, and user experience. Concretely, we will ensure the app obtains Built for Shopify status as required for SFN fulfillment service apps. Achieving this involves:

  10. Optional Webhooks & Additional Features: In addition to the required APIs, Shopify recommends certain webhooks for fulfillment and inventory events that, while not mandatory, can enhance the integration. As part of a comprehensive solution, we will implement these optional webhooks where they add value. For instance, webhooks for fulfillment creation, cancellation, or stock level changes can allow the partner’s system to get real-time push notifications whenever relevant events occur, supplementing our polling or scheduled syncs. By incorporating these, we improve resilience — if any event is missed via the primary flow, the webhook can trigger a secondary update. We will review Shopify’s list of fulfillment and inventory webhooks and include those that make the data exchange more robust. (These might include webhooks like fulfillment_order.Notification, inventory_levels/update, etc., based on Shopify’s offerings.) While labeled “optional” in the guide, we recognize these can be important for a belt-and-suspenders approach to data sync, and will include them to ensure no gaps in integration.

  11. Embedded App Experience: The partner app will include an embedded user interface in Shopify Admin that delivers key merchant-facing workflows within Shopify. According to SFN requirements, merchants should not be forced out to an external website for any essential integration steps. We will design and build an intuitive embedded app UI that allows merchants to:

    These embedded experiences will be built using Shopify’s Polaris design system to feel native to Shopify. The goal is a seamless UX, where the merchant can do everything from setup to day-to-day monitoring without confusion or needless redirection. This is not only a Shopify requirement but also good for merchant satisfaction. (Notably, fully self-serve merchant onboarding via the app is considered optional at this stage. Our initial focus will be on the required elements – authentication and dashboard – but we will design the app in a way that could be extended later to support more self-service onboarding steps if needed.)

  12. End-to-End Testing & Shopify Certification (Step 11): Finally, we will support comprehensive end-to-end testing of the integration in cooperation with Shopify’s SFN team. A testing sandbox or procedure will be established so that Shopify’s developers can validate the integration thoroughly before go-live. To facilitate this, we will:

    By providing this robust testing environment, we allow Shopify’s SFN onboarding team to run through all scenarios – the “happy path” as well as edge cases – to verify everything works as expected. We will collaborate with them during this phase, addressing any issues they find. Successful completion of Shopify’s official onboarding test plan is a key deliverable before launch, ensuring the integration meets all functional criteria.

</aside>

<aside>

Technical Architecture

The integration will follow a client-server architecture where the Shopify App (our fulfillment service app) acts as a middleware between Shopify and the fulfillment partner’s backend system. Below is an outline of the major components and data flows:

In summary, the technical architecture connects Shopify and the fulfillment partner’s operations in real time, using a combination of GraphQL API calls, webhooks, and a secure embedded application. It is designed for reliability, accuracy, and speed, which are all critical for a smooth fulfillment experience.

</aside>

<aside>

Deliverables

We will deliver a complete integration package, including all code, configurations, and supporting materials required for a successful SFN onboarding. Key deliverables include:

<aside>

Timeline and Delivery Phases

To consider this project successfully completed, the following acceptance criteria must be met. These criteria align with Shopify’s requirements and the partner’s business goals:

Only when all the above acceptance criteria are met will we consider the integration project complete. This ensures a high-quality outcome aligned with both Shopify’s and the fulfillment partner’s expectations.

</aside>