# fulfillmentServiceCreate - admin-graphql - MUTATION Version: 2025-01 ## Description Creates a fulfillment service. ## Fulfillment service location When creating a fulfillment service, a new location will be automatically created on the shop and will be associated with this fulfillment service. This location will be named after the fulfillment service and inherit the shop's address. If you are using API version `2023-10` or later, and you need to specify custom attributes for the fulfillment service location (for example, to change its address to a country different from the shop's country), use the [LocationEdit](https://shopify.dev/api/admin-graphql/latest/mutations/locationEdit) mutation after creating the fulfillment service. ### Access Scopes `write_fulfillments` access scope. Also: The user must have fulfill_and_ship_orders permission. ## Arguments * [callbackUrl](/docs/api/admin-graphql/2025-01/scalars/URL): URL! - The URL to send requests for the fulfillment service. The following considerations apply: - Shopify queries the <code>callback_url/fetch_tracking_numbers</code> endpoint to retrieve tracking numbers for orders, if `trackingSupport` is set to `true`. - Shopify queries the <code>callback_url/fetch_stock</code> endpoint to retrieve inventory levels, if `inventoryManagement` is set to `true`. - Shopify uses the <code>callback_url/fulfillment_order_notification</code> endpoint to send [fulfillment and cancellation requests](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations). * [fulfillmentOrdersOptIn](/docs/api/admin-graphql/2025-01/scalars/Boolean): Boolean - Whether the fulfillment service uses the [fulfillment order based workflow]( https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments ) for managing fulfillments. [As of 2022-07 API version](https://shopify.dev/changelog/legacy-fulfillment-api-deprecation), the fulfillment order based workflow is the only way to manage fulfillments. As the migration is now finished, the `fulfillmentOrdersOptIn` property is deprecated and is always set to `true` on correctly functioning fulfillment services. The `fulfillmentOrdersOptIn` input field is [deprecated and will be removed in the next API version]( https://shopify.dev/changelog/deprecation-of-the-fulfillmentservice-fulfillmentordersoptin-field). This API version makes it optional and defaults to `true` for a smooth migration experience. Do not set the `fulfillmentOrdersOptIn` argument, and you are ready for the next API version release. * [inventoryManagement](/docs/api/admin-graphql/2025-01/scalars/Boolean): Boolean - Whether the fulfillment service manages product inventory and provides updates to Shopify. * [name](/docs/api/admin-graphql/2025-01/scalars/String): String! - The name of the fulfillment service. * [permitsSkuSharing](/docs/api/admin-graphql/2025-01/scalars/Boolean): Boolean - Whether the fulfillment service can stock inventory alongside other locations. * [trackingSupport](/docs/api/admin-graphql/2025-01/scalars/Boolean): Boolean - Whether the fulfillment service provides tracking numbers for packages. ## Returns * [fulfillmentService](/docs/api/admin-graphql/2025-01/objects/FulfillmentService): FulfillmentService The created fulfillment service. * [userErrors](/docs/api/admin-graphql/2025-01/objects/UserError): UserError! The list of errors that occurred from executing the mutation. ## Examples ### Create a new FulfillmentService Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2025-01/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation fulfillmentServiceCreate($name: String!, $callbackUrl: URL!) { fulfillmentServiceCreate(name: $name, callbackUrl: $callbackUrl) { fulfillmentService { id serviceName callbackUrl } userErrors { field message } } }\",\n \"variables\": {\n \"name\": \"example_fulfillment_service\",\n \"callbackUrl\": \"https://callback.org/\"\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation fulfillmentServiceCreate($name: String!, $callbackUrl: URL!) {\n fulfillmentServiceCreate(name: $name, callbackUrl: $callbackUrl) {\n fulfillmentService {\n id\n serviceName\n callbackUrl\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"name\": \"example_fulfillment_service\",\n \"callbackUrl\": \"https://callback.org/\"\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation fulfillmentServiceCreate($name: String!, $callbackUrl: URL!) {\n fulfillmentServiceCreate(name: $name, callbackUrl: $callbackUrl) {\n fulfillmentService {\n id\n serviceName\n callbackUrl\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"name\": \"example_fulfillment_service\",\n \"callbackUrl\": \"https://callback.org/\"\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation fulfillmentServiceCreate($name: String!, $callbackUrl: URL!) {\n fulfillmentServiceCreate(name: $name, callbackUrl: $callbackUrl) {\n fulfillmentService {\n id\n serviceName\n callbackUrl\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"name\": \"example_fulfillment_service\",\n \"callbackUrl\": \"https://callback.org/\"\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation fulfillmentServiceCreate($name: String!, $callbackUrl: URL!) {\n fulfillmentServiceCreate(name: $name, callbackUrl: $callbackUrl) {\n fulfillmentService {\n id\n serviceName\n callbackUrl\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "name": "example_fulfillment_service", "callbackUrl": "https://callback.org/" } #### Graphql Response { "data": { "fulfillmentServiceCreate": { "fulfillmentService": { "id": "gid://shopify/FulfillmentService/1061774487?id=true", "serviceName": "example_fulfillment_service", "callbackUrl": "https://callback.org/" }, "userErrors": [] } } }