# scriptTagCreate - admin-graphql - MUTATION Version: 2024-10 ## Description

Theme app extensions

Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. Learn more.

Script tag deprecation

Script tags will be sunset for the Order status page on August 28, 2025. Upgrade to Checkout Extensibility before this date. Shopify Scripts will continue to work alongside Checkout Extensibility until August 28, 2025.

Creates a new script tag. ### Access Scopes `write_script_tags` access scope. ## Arguments * [input](/docs/api/admin-graphql/2024-10/input-objects/ScriptTagInput): ScriptTagInput! - The input fields for a script tag. ## Returns * [scriptTag](/docs/api/admin-graphql/2024-10/objects/ScriptTag): ScriptTag The script tag that was created. * [userErrors](/docs/api/admin-graphql/2024-10/objects/UserError): UserError! The list of errors that occurred from executing the mutation. ## Examples ### Creates a new script tag Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-10/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation ScriptTagCreate($input: ScriptTagInput!) { scriptTagCreate(input: $input) { scriptTag { id cache createdAt displayScope src updatedAt } userErrors { field message } } }\",\n \"variables\": {\n \"input\": {\n \"src\": \"https://js.example.org/bar.js\",\n \"displayScope\": \"ONLINE_STORE\",\n \"cache\": true\n }\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation ScriptTagCreate($input: ScriptTagInput!) {\n scriptTagCreate(input: $input) {\n scriptTag {\n id\n cache\n createdAt\n displayScope\n src\n updatedAt\n }\n userErrors {\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"input\": {\n \"src\": \"https://js.example.org/bar.js\",\n \"displayScope\": \"ONLINE_STORE\",\n \"cache\": true\n }\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 ScriptTagCreate($input: ScriptTagInput!) {\n scriptTagCreate(input: $input) {\n scriptTag {\n id\n cache\n createdAt\n displayScope\n src\n updatedAt\n }\n userErrors {\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"input\": {\n \"src\": \"https://js.example.org/bar.js\",\n \"displayScope\": \"ONLINE_STORE\",\n \"cache\": true\n }\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 ScriptTagCreate($input: ScriptTagInput!) {\n scriptTagCreate(input: $input) {\n scriptTag {\n id\n cache\n createdAt\n displayScope\n src\n updatedAt\n }\n userErrors {\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"input\": {\n \"src\": \"https://js.example.org/bar.js\",\n \"displayScope\": \"ONLINE_STORE\",\n \"cache\": true\n }\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation ScriptTagCreate($input: ScriptTagInput!) {\n scriptTagCreate(input: $input) {\n scriptTag {\n id\n cache\n createdAt\n displayScope\n src\n updatedAt\n }\n userErrors {\n field\n message\n }\n }\n}" #### Graphql Input { "input": { "src": "https://js.example.org/bar.js", "displayScope": "ONLINE_STORE", "cache": true } } #### Graphql Response { "data": { "scriptTagCreate": { "scriptTag": { "id": "gid://shopify/ScriptTag/870402687", "cache": true, "createdAt": "2024-12-18T11:36:28Z", "displayScope": "ONLINE_STORE", "src": "https://js.example.org/bar.js", "updatedAt": "2024-12-18T11:36:28Z" }, "userErrors": [] } } }