Create a selling plan group with the sellingPlanGroupCreate Admin GraphQL mutation, providing name, merchantCode, options (e.g., ['Delivery every']), and a sellingPlans array with billingPolicy (recurringBillingPolicy: interval and intervalCount), deliveryPolicy, and pricingPolicies
Associate the selling plan group with products or variants using sellingPlanGroupAddProducts or sellingPlanGroupAddProductVariants mutations, passing the selling plan group GID and an array of product or variant GIDs
On the storefront, query sellingPlanGroups on the product object via the Storefront API to retrieve available plans with their IDs and human-readable options
When adding to cart, include sellingPlanId in the cartLinesAdd mutation (Storefront API) alongside the merchandiseId to create a subscription line item
Read back subscription contracts created by Shopify via GET /admin/api/2025-07/subscription_contracts.json (REST) or the subscriptionContracts query (GraphQL Admin API) after purchase
Update a subscription contract's billing interval with subscriptionContractUpdate mutation and commit with subscriptionContractCommit mutation
Known gotchas
Selling plan IDs are prefixed gid://shopify/SellingPlan/ — passing a bare integer as a selling plan ID to cartLinesAdd will fail; always use the full GID
sellingPlanGroupAddProducts and sellingPlanGroupAddProductVariants are separate mutations — adding a product does not automatically include all its variants; you may need to call both
Subscription contracts are created asynchronously after checkout completes; polling immediately after order creation may return no results — use the subscriptions/create webhook instead
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp