You can use delivery profiles to manage advanced shipping information in Shopify. Shops that use delivery profiles gain the ability to create shipping rates per product variant and location. This guide shows you how to manage delivery profiles for pre-orders and Try before you buy (TBYB). ## Requirements - Your app can make [authenticated requests](/docs/api/admin-graphql#authentication) to the GraphQL Admin API. - Your app has the following [access scopes](/docs/api/usage/access-scopes): - `write_products` - `read_all_orders` - `read_customer_payment_methods` - `read_purchase_options` - `write_purchase_options` - `read_payment_mandate` - `write_payment_mandate` Learn how to [configure your access scopes using Shopify CLI](/docs/apps/build/cli-for-apps/app-configuration). - You've completed the [Create and manage pre-orders and TBYB options](/docs/apps/build/purchase-options/deferred/build-deferment-solution) guide. > Note: > > - Most subscriptions, pre-order and try before you buy apps need to request API access through the [Partner Dashboard](/docs/apps/build/authentication-authorization/access-tokens/authorization-code-grant#ask-for-permission). We give API access to apps that are designed according to our [principles for subscriptions, pre-order and TBYB apps] (/docs/apps/selling-strategies/purchase-options#shopifys-principles). > - Public apps that use subscriptions, pre-order or TBYB need to meet [specific requirements](/docs/apps/launch/app-requirements-checklist#purchase-option-apps) to be published on the Shopify App Store. > - Custom apps [created in the Shopify admin](/docs/apps/build/authentication-authorization/access-tokens/generate-app-access-tokens-admin) can't use subscriptions, pre-order or TBYB because these apps can't use extensions or request access to protected scopes. If you're building a solution for a single store, then build your custom app in the Partner Dashboard. ## Step 1: Create delivery profiles A delivery profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones. You can associate the [`DeliveryProfile`](/docs/api/admin-graphql/latest/objects/deliveryprofile) with the [`SellingPlanGroup`](/docs/api/admin-graphql/latest/objects/SellingPlanGroup) object to do the following tasks: - [Set free shipping](#set-free-shipping) for all orders with pre-orders or TBYB - [Restrict shipping](#restrict-shipping-to-specific-countries) to specific countries - [Set a flat shipping rate by country](#set-a-flat-shipping-rate-by-country) for all orders with pre-orders or TBYB ### Set free shipping You can set free shipping for all orders with a pre-order or TBYB. The following example uses the [`deliveryProfileCreate`](/docs/api/admin-graphql/latest/mutations/deliveryProfileCreate) mutation to set free shipping.