Who actually builds custom Shopify Functions? Do we need an in-house developer or can an agency do it?
Short answer
Custom Shopify Functions, code Shopify runs inside checkout, can be built by an agency or one in-house developer, but only Shopify Plus stores can run them as custom apps (shopify.dev, October 2026). The build is the small part. Hire whoever will change the rule and catch its failures, because Shopify's monitoring guide describes no merchant-facing alert (shopify.dev, October 2026).
- Plan for custom Function apps
- Shopify Plus onlyOnly Plus stores can use custom apps that contain Shopify Function APIs; stores on any plan can use public App Store apps that contain functions.Source: Shopify developer docs (About Shopify Functions)
- Language Shopify recommends
- Rust; JavaScript hits limits soonerAny language that compiles to WebAssembly works, with templates for Rust and JavaScript; Shopify strongly recommends Rust to avoid failures on large carts.Sources: Shopify developer docs (About Shopify Functions, Language considerations)
- Instruction budget per run
- 11 million, for carts up to 200 linesWith 128 kB of input and 20 kB of output; all three limits scale proportionally above 200 line items, and logs truncate after 1 kB.Source: Shopify developer docs (Function APIs limitations)
- Merchant-facing failure alert
- None described in Shopify's guideEach run's input, output and logs sit in the Dev Dashboard, and the guide lists 12 error types; Deploi's observability record scores building the alert CUSTOMIZE.Sources: Shopify developer docs (Monitoring and handling errors in production); Deploi Build vs. Buy (Build or Buy Observability for Checkout Functions on Shopify?)
Deploi’s call
Either an agency or one in-house developer can build a custom Shopify Function, so hire for ownership, not for the build. Deploi's record on checkout Function observability scores it CUSTOMIZE, because Shopify keeps the run logs and leaves the alert to you (Deploi decision record, October 2026). The rule set, the staged rollout and that alert are a standing obligation, and their owner is the hire that matters.
BuildKeep the Function in-house when
- Your discount rule changes more than three or four times a year, a Deploi rule of thumb, so an agency queue would slow every change.
- One developer already owns your checkout path and sits close to merchandising.
- That developer writes Rust or will learn it; Shopify strongly recommends Rust to keep Functions from failing on large carts (shopify.dev, October 2026).
CustomizeHave an agency build it and own it in-house when
- The job is bounded and dated, such as porting rules that went dark when Shopify Scripts stopped on 30 June 2026 (Shopify Help Center, October 2026).
- Nobody in-house writes Rust, but a named person will own the rule's numbers, the deploy and the alert after handover.
- The agency hands over the alerting and a runbook, the written steps for when the rule fails, along with the Function.
Basis: Build or Buy Observability for Checkout Functions on Shopify?, our Build vs. Buy decision record, scored CUSTOMIZE.
What does building a custom Shopify Function actually involve?
Building a custom Shopify Function means writing code that Shopify runs inside its own backend, such as a discount rule at checkout. Shopify Functions "allow developers to customize the backend logic of Shopify," and Shopify ships templates and client libraries for Rust and JavaScript (Shopify developer docs, October 2026).
Shopify supports "any language that compiles to WebAssembly (Wasm), such as Rust, Zig, or TinyGo." It is direct about the trade: "Languages that compile directly to WebAssembly, such as Rust, perform better than dynamic languages, such as JavaScript." A JavaScript author should "expect to run into instruction limits sooner" (Shopify developer docs, October 2026).
That matters for staffing, because it moves the skill off the standard Shopify stack. A team fluent in Liquid, Shopify's theme language, is not automatically a team that ships Rust into a checkout path. Which Function to build first, a discount or a checkout validation for example, is a separate choice among the Function categories.
Which Shopify plan can run a custom Function?
Only a Shopify Plus store can run a custom Shopify Function, because only Plus stores can use custom apps that contain Shopify Function APIs (application programming interfaces). Stores on any plan can use public apps that are distributed through the Shopify App Store and contain functions (Shopify developer docs, October 2026).
That plan rule inverts the usual staffing question. Below Plus, a custom Function app cannot run on your store, so the answer to "in-house or agency" is neither. The answer is a pre-built Function app or a no-code Function builder, and both run on any plan because they are public apps. On Plus, the staffing question is real.
Which Shopify limits decide how hard a Function is to build?
Shopify's resource and input query limits decide how hard a custom Shopify Function is to build, because every Function must fit inside them (Shopify developer docs, October 2026). The instruction count caps how much computing one run may do, and the input query is the request that fetches the data the rule reads.
| Limit | Value |
|---|---|
| Compiled binary size | 256 kB |
| Runtime linear memory | 10,000 kB |
| Runtime stack memory | 512 kB |
| Execution instructions, carts up to 200 line items | 11 million |
| Function input, carts up to 200 line items | 128 kB |
| Function output, carts up to 200 line items | 20 kB |
| Input query size, excluding comments | 3,000 bytes |
| Metafield values returned | None over 10,000 bytes |
| List-type field arguments | 100 elements maximum |
| Input query cost | 30 maximum |
| Logs written | 1 kB, then truncated |
A discount that reads three product tags and applies a percentage sits far inside these limits. A discount that walks a 200-line wholesale cart against a metafield (custom data) table runs close to them, so it needs a developer fluent in Rust. In our judgment, that difference, more than who writes the code, sets the size of the build.
Why does ownership after launch decide in-house versus agency?
Ownership after launch decides in-house versus agency, because a live custom Shopify Function keeps creating work that someone must be named to do. Shopify records each run's input, output and logs in the Dev Dashboard, its developer console. Its monitoring guide lists 12 error types and describes no merchant-facing alert (Shopify monitoring guide, October 2026).
That leaves three standing jobs:
- Change the rule. Every tier change merchandising asks for lands on whoever owns the code.
- Keep the Function API (application programming interface) version current. Shopify releases a new version every three months and supports each for at least 12 months (Shopify developer docs, October 2026). A Function on an unsupported version "has been removed from all merchant stores" (Shopify monitoring guide, October 2026).
- Answer the failures. Somebody has to build an alert, receive it and fix the rule mid-sale. Deploi's record on Function observability scores that work CUSTOMIZE (October 2026).
So the real staffing question is who changes the discount tiers when merchandising changes them, and who finds out when the Function silently stops applying them. A shipping-rate Function that needs a deploy for every new location shows that question left unanswered. What the three jobs cost against an app subscription decides whether to build at all.
Which staffing model fits: in-house, agency or both?
Four staffing models fit a custom Shopify Function, and the right one depends on how often the rule changes and who already owns checkout.
- In-house, when the rules change often and someone already owns checkout. In our judgment, a rule that changes more than three or four times a year turns every agency request into a queue, so marketing stops asking. A developer who owns the checkout path, writes Rust or will learn it, and sits near merchandising is then the cheapest long-run answer.
- An agency, when the work is bounded and dated. Porting the rules that Shopify Scripts ran until Scripts stopped on 30 June 2026 is the clearest case (Shopify Help Center, October 2026). Deploi's Scripts-to-Functions record scores that port BUILD when the rules still earn money. What an agency charges for one discount Function depends on the written rule.
- An agency to build, an in-house owner to operate. In our judgment, this model fails least. The agency ships the Function, the alerting and a runbook, the written steps for when the rule fails. A named person in your business owns the numbers, the deploy and the alert; without that person, the model degrades into a bounded agency job with a longer invoice.
- Buy instead, and staff nobody. A public App Store app that already expresses the rule needs no developer at all.
When should you not hire anyone to build a Function?
Deploi’s point of view
Our own position, from building on Shopify. Kept apart from the sourced facts above.
- What we’ve seen
- The Functions that cause trouble are almost never the ones that were hard to write. They are the ones whose business rules moved after launch and whose original author was no longer the person answering the question.
- Where we disagree
- The category answers this with "you need a Shopify Plus development partner," which is what an agency would say and is often not true. If your discount tiers change monthly and you have one developer who already owns checkout, keeping this in-house is cheaper, faster and less fragile than handing it to any agency, us included. We would rather scope the observability and the runbook and hand you the keys.
- What we refuse to quote
- A market rate for "a Shopify Function." The sibling page on agency cost explains why, and the short version is that no such rate exists because no two Functions are the same object.
Decision records behind this answer
When this answer changes
- Shopify lets custom apps that contain Shopify Function APIs run on plans below Plus; they are Plus only as of October 2026.
- Shopify adds a merchant-facing alert for failing Functions, which would shrink the ownership job this answer rests on.
- Shopify changes the Function resource limits, such as 11 million instructions for carts up to 200 line items.
- Shopify changes its quarterly API release cadence or the 12-month minimum support for each Function API version.
- Deploi re-scores its Function observability or Scripts-to-Functions decision record.
Follow-up questions
What's inside the number
- What does it realistically cost to have an agency build a custom Shopify Function for one discount use case?
An agency-built Shopify Function, the custom code Shopify runs at checkout, has no published market rate for one discount rule.
How it compares
- Once we factor in ongoing maintenance (not just the initial build), does a custom Shopify Function ever actually beat a third-party discount app's subscription cost over 2-3 years?
A custom Shopify Function, code Shopify runs at checkout, does not beat a discount app's three-year cost on one common rule.
What changes afterwards
- If our custom shipping-rate Function needs updating every time we add a new fulfillment location, does that ongoing cost make a simpler native rule table a better long-term choice?
No: custom shipping-rate code that needs a code change for every new location was scoped wrong, not chosen wrong.
What to do next
- Can we prototype a discount-stacking or validation rule using Shopify Flow first, before committing budget to a custom Function build?
Shopify Flow can test the data behind a discount or validation rule, not the rule itself, because Shopify Functions run during checkout (shopify.dev, October 2026).
- How do we write a clear brief for an agency to scope a custom Shopify Function, if we don't know the technical terms ourselves?
A clear Shopify Function brief answers 4 questions in plain words: what the rule reads and decides, how it meets other discounts, what happens when it fails, and who edits it.
- Is it possible to buy a pre-built Function for a common use case (like tiered volume discounts) from the Shopify App Store instead of commissioning a custom build?
Yes: Shopify's App Store curates 34 discount apps built on Shopify Functions, the code Shopify runs at checkout.
- Which of the five Shopify Functions categories (discount, shipping, payment, validation, fulfillment) should a mid-market brand tackle first if we can only afford one custom build this year?
Discount, not fulfillment, is the Shopify Function to build first for most mid-market brands, because a discount rule maps straight to margin.
Sources
Every figure on this page traces to one of these. Official and vendor pages are checked on the date shown; Deploi records are our own published decisions.
- Shopify developer docs, About Shopify Functions
- Shopify developer docs, Language considerations
- Shopify developer docs, Function APIs limitations
- Shopify developer docs, Monitoring and handling errors in production
- Shopify developer docs, About Shopify API versioning
- Shopify Help Center, Shopify Scripts and the Script Editor app
- Deploi Build vs. Buy, Build or Buy Observability for Checkout Functions on Shopify?
- Deploi Build vs. Buy, Should You Build or Buy Your Shopify Scripts-to-Functions Migration?