Script requirements and limitations
To create scripts, you need the Shopify Plus plan and the Script Editor. You also need knowledge of the Ruby programming language, or access to a developer or Shopify Partner who knows Ruby. Learn more about hiring a Shopify Partner.
Some script limitations exist to enhance security and to make sure that scripts can run no matter how many customers your store has at any given time. Keep the following restrictions in mind if you are developing scripts for your Shopify store.
On this page
- Online store and the Storefront API
- Published scripts
- Maximum number of Shopify Scripts
- Draft orders
- Metafields
- Cart/checkout attributes
- Discount codes
- Line items
- Shipping rates
- Regular expressions
- Themes
- Resources
- Input/output
- Time and randomness
- Script character limit
- Subscription orders
- Accelerated checkouts
- Shopify Point of Sale (POS)
- Renaming payment gateways
Online store and the Storefront API
When you create or edit a script, you choose whether it will run in your online store only or in your online store and in the following apps:
- Custom apps built with the Storefront API, JavaScript Buy SDK, Mobile Buy SDKs (Android and iOS)
- Custom apps that generate checkouts
- Tapcart and Plobal Apps mobile app builders
For scripts to work, they require the website to have built-in shopping cart functionality, so you can't use scripts with the Buy button, Facebook, or Wholesale sales channels.
Published scripts
Only one script per script type can be published at a time. For example, you can publish a line items script and a shipping rates script, but you can't publish two line items scripts at the same time.
Maximum number of Shopify Scripts
You can create up to 200 Shopify Scripts.
Draft orders
Line item scripts, shipping scripts, and payment scripts don't work with draft orders or the draft orders checkout.
Metafields
Shopify Scripts can't access Metafields.
Cart/checkout attributes
Shopify Scripts can't access Shopify Liquid cart attributes. You can add these attributes to your cart pages to collect extra information from your customers, but you can't create a script that uses them.
Discount codes
Scripts can access whether a discount code is applied, the amount of the discount, and the type of discount (fixed amount, percentage, or shipping), however they can't access how it applies (cart or line item specific). As such, Scripts can't access post-discount totals, and they also can't access automatic discounts.
Line item and shipping scripts that access discounts applied to a cart aren't compatible with discount combinations. The .discount_code method can only return a single discount code. Carts that include multiple discount codes using discount combinations aren't supported.
Line items
Scripts can't add items to the cart, or increase an item's price.
Shipping rates
Scripts can't increase a shipping rate's price.
Regular expressions
Regular expression matching is not supported. If you are creating a line item script, then you might be able to use one of the following methods as a workaround:
- split method
- start_with and end_with methods
- include method
Themes
You might need to update your Liquid theme to support your scripts and to avoid confusing your customers. For example, not all themes show line item discounts in the cart. If this is your case, then you need to edit your theme to show the line items discounts in the cart. Learn more about the types of modifications that you can make to your Liquid themes.
Resources
The amount of CPU and memory available to a script is limited. The resources reserved for a script depend on the size of the cart and the amount of calculations that the script requires. Shopify carefully tracks these resource limits to make sure they don't prevent your script from working as intended.
When you test a script, the Script Editor console prints the percentage of allocated resources that the script is using.
Input/output
With a few exceptions, Shopify Scripts are not capable of input/output. This means that scripts can't execute web requests or database calls, and can't get input from a user.
The puts
method, however, can be used to print text to the console in the Script Editor app.
Time and randomness
Scripts can't involve random or time-based calculations. The Time
object and rand
method can't be accessed by Shopify Scripts.
Because scripts run every time a cart's total is recalculated, scripts based on time or random number generation could have unpredictable or confusing results if a customer changes their cart often. However, you can schedule scripts to run during events using the Launchpad app.
Script character limit
You can create scripts up to 24,576 characters long.
Subscription orders
If your Lineitem and shipping scripts discount a subscription product, then the discount applies to the following payments:
- the first payment of a pay-per-delivery only, without applying to scheduled orders
- the entire amount of the a prepaid subscription order
Learn more about subscriptions and scripts.
Accelerated checkouts
When you use Shopify Scripts with accelerated checkouts, shipping discounts are applied after your customer selects an accelerated payment method. Because of this, changes to the order's price are not reflected on the customer's device or browser. Customers see the original price on their accelerated checkout, but will be charged the correct discounted price.
Shopify Point of Sale (POS)
Shopify Scripts don't work with the Shopify Point of Sale (POS).
Renaming payment gateways
You can't rename payment gateways that have images or logos that display as the name of the gateway. Payment gateways with logo images next to their names can be renamed.