--- title: appSubscriptionTrialExtend - GraphQL Admin description: >- Extends the trial period for an existing app subscription, giving merchants additional time to evaluate premium features before committing to paid billing. This mutation provides flexibility in trial management and can improve conversion rates by accommodating merchant needs. Trial extensions are particularly valuable when merchants need more time to fully evaluate complex features, experience technical setup delays, or require additional approval processes within their organization before committing to paid subscriptions. Use the `AppSubscriptionTrialExtend` mutation to: - Accommodate merchant requests for additional evaluation time - Compensate for service interruptions during trial periods - Support complex enterprise evaluation and approval workflows - Implement customer success strategies that improve trial-to-paid conversion - Handle technical onboarding delays that impact trial effectiveness The extension modifies the existing trial end date, allowing continued access to subscription features without immediate billing. This approach maintains subscription continuity while providing merchants the flexibility they need for thorough feature evaluation. Trial extension strategies and conversion techniques are covered in the [offer free trials guide](https://shopify.dev/docs/apps/launch/billing/offer-free-trials). api_version: unstable api_name: admin source_url: html: >- https://shopify.dev/docs/api/admin-graphql/unstable/mutations/appSubscriptionTrialExtend md: >- https://shopify.dev/docs/api/admin-graphql/unstable/mutations/appSubscriptionTrialExtend.md --- # app​Subscription​Trial​Extend mutation Requires This must be a third party developed application that you can access. Extends the trial period for an existing app subscription, giving merchants additional time to evaluate premium features before committing to paid billing. This mutation provides flexibility in trial management and can improve conversion rates by accommodating merchant needs. Trial extensions are particularly valuable when merchants need more time to fully evaluate complex features, experience technical setup delays, or require additional approval processes within their organization before committing to paid subscriptions. Use the `AppSubscriptionTrialExtend` mutation to: * Accommodate merchant requests for additional evaluation time * Compensate for service interruptions during trial periods * Support complex enterprise evaluation and approval workflows * Implement customer success strategies that improve trial-to-paid conversion * Handle technical onboarding delays that impact trial effectiveness The extension modifies the existing trial end date, allowing continued access to subscription features without immediate billing. This approach maintains subscription continuity while providing merchants the flexibility they need for thorough feature evaluation. Trial extension strategies and conversion techniques are covered in the [offer free trials guide](https://shopify.dev/docs/apps/launch/billing/offer-free-trials). ## Arguments * days [Int!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/Int) required The number of days to extend the trial. The value must be greater than 0 and less than or equal to 1000. * id [ID!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/ID) required The ID of the app subscription to extend the trial for. *** ## App​Subscription​Trial​Extend​Payload returns * app​Subscription [App​Subscription](https://shopify.dev/docs/api/admin-graphql/unstable/objects/AppSubscription) The app subscription that had its trial extended. * user​Errors [\[App​Subscription​Trial​Extend​User​Error!\]!](https://shopify.dev/docs/api/admin-graphql/unstable/objects/AppSubscriptionTrialExtendUserError) non-null The list of errors that occurred from executing the mutation. *** ## Examples * ### Extend an app subscription for a shop #### Query ```graphql mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } } ``` #### Variables ```json { "id": "gid://shopify/AppSubscription/443388186", "days": 10 } ``` #### cURL ```bash curl -X POST \ https://your-development-store.myshopify.com/admin/api/unstable/graphql.json \ -H 'Content-Type: application/json' \ -H 'X-Shopify-Access-Token: {access_token}' \ -d '{ "query": "mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }", "variables": { "id": "gid://shopify/AppSubscription/443388186", "days": 10 } }' ``` #### React Router ```javascript import { authenticate } from "../shopify.server"; export const loader = async ({request}) => { const { admin } = await authenticate.admin(request); const response = await admin.graphql( `#graphql mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }`, { variables: { "id": "gid://shopify/AppSubscription/443388186", "days": 10 }, }, ); const json = await response.json(); return json.data; } ``` #### Ruby ```ruby session = ShopifyAPI::Auth::Session.new( shop: "your-development-store.myshopify.com", access_token: access_token ) client = ShopifyAPI::Clients::Graphql::Admin.new( session: session ) query = <<~QUERY mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } } QUERY variables = { "id": "gid://shopify/AppSubscription/443388186", "days": 10 } response = client.query(query: query, variables: variables) ``` #### Node.js ```javascript const client = new shopify.clients.Graphql({session}); const data = await client.query({ data: { "query": `mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }`, "variables": { "id": "gid://shopify/AppSubscription/443388186", "days": 10 }, }, }); ``` #### Response ```json { "appSubscriptionTrialExtend": { "userErrors": [], "appSubscription": { "id": "gid://shopify/AppSubscription/443388186", "status": "ACTIVE" } } } ``` * ### appSubscriptionTrialExtend reference [Open in GraphiQL](http://localhost:3457/graphiql?query=mutation%20AppSubscriptionTrialExtend\(%24id%3A%20ID!%2C%20%24days%3A%20Int!\)%20%7B%0A%20%20appSubscriptionTrialExtend\(id%3A%20%24id%2C%20days%3A%20%24days\)%20%7B%0A%20%20%20%20userErrors%20%7B%0A%20%20%20%20%20%20field%0A%20%20%20%20%20%20message%0A%20%20%20%20%20%20code%0A%20%20%20%20%7D%0A%20%20%20%20appSubscription%20%7B%0A%20%20%20%20%20%20id%0A%20%20%20%20%20%20status%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D\&variables=%7B%0A%20%20%22id%22%3A%20%22gid%3A%2F%2Fshopify%2FAppSubscription%2F443388186%22%2C%0A%20%20%22days%22%3A%2010%0A%7D) ```javascript import { authenticate } from "../shopify.server"; export const loader = async ({request}) => { const { admin } = await authenticate.admin(request); const response = await admin.graphql( `#graphql mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }`, { variables: { "id": "gid://shopify/AppSubscription/443388186", "days": 10 }, }, ); const json = await response.json(); return json.data; } ``` ##### GQL ``` mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } } ``` ##### cURL ``` curl -X POST \ https://your-development-store.myshopify.com/admin/api/unstable/graphql.json \ -H 'Content-Type: application/json' \ -H 'X-Shopify-Access-Token: {access_token}' \ -d '{ "query": "mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }", "variables": { "id": "gid://shopify/AppSubscription/443388186", "days": 10 } }' ``` ##### React Router ``` import { authenticate } from "../shopify.server"; export const loader = async ({request}) => { const { admin } = await authenticate.admin(request); const response = await admin.graphql( `#graphql mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }`, { variables: { "id": "gid://shopify/AppSubscription/443388186", "days": 10 }, }, ); const json = await response.json(); return json.data; } ``` ##### Node.js ``` const client = new shopify.clients.Graphql({session}); const data = await client.query({ data: { "query": `mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } }`, "variables": { "id": "gid://shopify/AppSubscription/443388186", "days": 10 }, }, }); ``` ##### Ruby ``` session = ShopifyAPI::Auth::Session.new( shop: "your-development-store.myshopify.com", access_token: access_token ) client = ShopifyAPI::Clients::Graphql::Admin.new( session: session ) query = <<~QUERY mutation AppSubscriptionTrialExtend($id: ID!, $days: Int!) { appSubscriptionTrialExtend(id: $id, days: $days) { userErrors { field message code } appSubscription { id status } } } QUERY variables = { "id": "gid://shopify/AppSubscription/443388186", "days": 10 } response = client.query(query: query, variables: variables) ``` ## Input variables JSON ```json { "id": "gid://shopify/AppSubscription/443388186", "days": 10 } ``` ## Response JSON ```json { "appSubscriptionTrialExtend": { "userErrors": [], "appSubscription": { "id": "gid://shopify/AppSubscription/443388186", "status": "ACTIVE" } } } ```