Shopify Functions for Dummies: The Ultimate Guide

If you’re looking to take your Shopify store’s customization to the next level, Shopify Functions are your secret weapon. They offer you the flexibility to create unique shopping experiences, streamline operations, and gain more control over your store’s backend. Whether you’re a merchant, developer, or someone just interested in Shopify, let’s dive into why Shopify Functions are so powerful and how they can elevate any store.
The Evolution: From Shopify Scripts to Shopify Functions 🕰️
Before Shopify Functions, we had Shopify Scripts, a powerful tool available only to Shopify Plus users. Scripts allowed store owners to customize discounts, payment options, and shipping rates using Ruby code. However, they had some limitations:
- Only for Shopify Plus: Regular Shopify users couldn’t access Scripts.
- Performance concerns: Scripts ran in Shopify’s checkout but could slow things down with complex logic.
- Difficult deployment: Making changes required editing the script manually and deploying updates.
What Are Shopify Functions?
In simple terms, Shopify Functions are APIs (Application Programming Interfaces) that allow us to customize parts of Shopify’s backend logic. Whether it’s adjusting how the checkout works, offering custom discounts, or changing shipping options, Shopify Functions give us the power to make these changes ourselves.
Instead of relying on default settings, Shopify Functions allow us to tailor specific parts of the Shopify experience to meet our needs. From product discounts to shipping rates, it’s all about giving us more control over our Shopify store’s inner workings.
- Function input: The function input is a JSON object which is the result of a GraphQL input query you define. Input queries allow you to select the specific data you need for your function, such as cart line product data or metafields.
- Function logic: The function logic is written in any language that can compile a WebAssembly module which meets function requirements. Function templates and client libraries are available for Rust and JavaScript.
- –
⚠️ Caution
Shopify strongly recommends RUST as the most performant language choice to avoid your function failing with large carts.
- Function output: The function output is a JSON document that describes the operations you’d like Shopify to carry out.
GraphQL schemas provided by Shopify specify the targets, available inputs, and expected outputs for a Functions API.

Lifecycle of a Shopify Function
The following diagram shows an example lifecycle of a Shopify Functions:
- App developers create and deploy apps that contain functions.
- Merchants install the app on their Shopify store and configure the function. An API call is made with the function configuration.
For example, an app developer might create and deploy an app with a function that defines a new discount type. The merchant can then install the app on their Shopify store and create a new discount from a discount type provided by the app. Shopify executes the function to calculate the discount when a customer adds a product to their cart.
Unlike traditional methods, Shopify does not invoke these functions directly by URL or any other means. Instead, it triggers them as needed within the customer journey.

Types of Shopify Functions
Function API | Description |
---|---|
Delivery Customization API | Rename, reorder, and sort the delivery options available to buyers during checkout. |
Order Discount API | Create a new type of discount that’s applied to all merchandise in the cart. |
Product Discount API | Create a new type of discount that’s applied to a particular product or product variant in the cart. |
Shipping Discount API | Create a new type of discount that’s applied to one or more shipping rates at checkout. |
Payment Customization API | Rename, reorder, and sort the payment methods available to buyers during checkout. |
Cart Transform API | Expand cart line items and update the presentation of cart line items. |
Cart and Checkout Validation API | Provide your own validation of a cart and checkout. |
Fulfillment Constraints API | Provide your own logic for how Shopify should fulfill and allocate an order. |
Local Pickup Delivery Option Generator API | Generate custom local pickup options available to buyers during checkout. |
Pickup Point Delivery Option Generator API | Generate custom pickup point options available to buyers during checkout. |
Why Should We Use Shopify Functions?
Here’s why Shopify Functions should be at the top of everyone’s list for boosting efficiency and improving the customer experience:
1. Create Custom Discounts
Who doesn’t love a good discount? With the Order Discount API and Product Discount API, we can create custom discount types. Want to offer a discount on a specific product or apply a blanket discount to the entire cart? You can do that! These functions give us the flexibility to design unique discount strategies based on our specific needs.
2. Customize Shipping & Payment Options for a Better UX
The checkout process is crucial for customer satisfaction. With the Shipping Discount API and Payment Customization API, we can adjust how shipping options appear, sort payment methods, or even hide certain options based on the contents of the cart. This means that customers see only the most relevant options, enhancing their shopping experience.
3. Fulfillment Rules That Work for Us
Every business has its own rules for fulfilling orders. The Fulfillment Constraints API lets us customize how Shopify fulfills and allocates orders based on our specific needs. We can define rules about how items should be grouped, shipped, or allocated, optimizing how we handle fulfillment.
4. Transform the Cart Experience
Want to offer a more personalized cart experience? The Cart Transform API allows us to update how cart line items are displayed. Whether we want to offer specific promotions or change how products are shown, we can customize the cart presentation to match our brand or sales strategies.
5. Offer Custom Delivery Options
Want to give customers more flexible delivery options? Shopify Functions let us create Local Pickup and Pickup Point Delivery options right at checkout, using the Local Pickup Delivery Option Generator API and Pickup Point Delivery Option Generator API. This flexibility can be a game-changer for stores offering local delivery or pick-up.
Who Can Use Shopify Functions?
Shopify Functions are available to stores on all Shopify plans, but there are a few exclusive features for Shopify Plus stores:
- All Shopify Plans: We can install public apps from the Shopify App Store that include Shopify Functions.
- Shopify Plus: If we’re on Shopify Plus, we can create custom apps containing Shopify Function APIs. This opens the door to more advanced features like the Cart Transform API and Order Routing Location Rule API.
Limitations and considerations
The following limitations and considerations apply to all functions:
- Apps can reference only their own functions in GraphQL Admin API mutations, such as discountAutomaticAppCreate and cartTransformCreate. Referencing a function from another app results in a Function not found error.
- Shopify doesn’t allow nondeterminism in functions, which means that you can’t use any randomizing or clock functionality in your functions.
- –
- You can’t debug your function by printing out STDOUT, which is reserved for function output. Use STDERR instead.
- Apps that provide dynamic editing and execution of function code aren’t permitted on the Shopify App Store.
- Network access is supported for some functions, refer to network access for more information. You can also pre-populate data by using metafields on products and customers, or passing data using cart attributes.
Resource limits
Function resource limits treat 1 kilobyte (kB) as 1000 bytes.
Fixed limits
The following resource limits apply to all functions:
Resource | Limit |
---|---|
Compiled binary size | 256 kB |
Runtime linear memory | 10,000 kB |
Runtime stack memory | 512 kB |
Logs written to STDERR | 1 kB (truncated) |
Dynamic limits
Certain limits are dynamic and scale based on the number of line items in a cart. The following resource limits apply to all functions for carts with up to 200 line items:
Resource | Limit (up to 200 line items) |
---|---|
Execution instruction count | 11 million instructions |
Function input | 128 kB |
Function output | 20 kB |
For carts with more than 200 line items, these values will scale proportionally as the number of cart lines increases. Calculated limits for a function execution are available in your Partner Dashboard and can be tested with Shopify CLI.
Generating Shopify Functions with apps
Creating Shopify functions can be difficult sometimes, a waste of time and money, especially for less experienced people or for stores that need to migrate from scripts; many times it is necessary to hire external developers, turn to specialized agencies or train internal resources. For this reason, there are some apps available on the Shopify app store but one in particular stands out among all the apps. That’s where SupaEasy by Nextools steps in, making the process easier and ensuring a smooth transition.

SupaEasy is a game changer in the Shopify Functions ecosystem and helps any Shopify Plus store to migrate from Script to the new Shopify Functions. SupaEasy can also generates Discounts, Payments, Delivery & Validation Functions with different methods for all the Shopify users; from AI assistant for novice users up to an advanced mode where you can get involved with code.
So why delay? Discover new opportunities and elevate your Shopify store today!
Credits:
- https://shopify.dev/docs/api/functions
- https://shopify.dev/docs/apps/build/functions