deliveryCustomizationCreate - function not found

I’ve just followed this guide. Firstly with the app on my dev store, when I go to Shipping and Delivery, then click Add Delivery Customisation, I select the function but that just redirects me to the app within the store and doesn’t seem to add it.

So I tried deleting the app from the store, then installing from my dev dashboard. I then tried to run deliveryCustomizationCreate but just get the following. Am I missing something else? I can confirm the extension (delivery customisation) was deployed on the latest version.

{
  "data": {
    "deliveryCustomizationCreate": {
      "deliveryCustomization": null,
      "userErrors": [
        {
          "message": "Function hide-free-shipping not found. Ensure that it is released in the current app (2315872), and that the app is installed."
        }
      ]
    }
  },
  "extensions": {
    "cost": {
      "requestedQueryCost": 10,
      "actualQueryCost": 10,
      "throttleStatus": {
        "maximumAvailable": 20000,
        "currentlyAvailable": 19990,
        "restoreRate": 1000
      }
    }
  }
}

Just to add a bit more, I tried querying the following and I was able to see my extension, so I’m not sure why it isn’t working when passing the handle.

{
  shopifyFunctions(first: 250) {
    edges {
      node {
        id
        title
      }
    }
  }
}

Here’s the mutation I’m trying to do:

mutation {
  deliveryCustomizationCreate(deliveryCustomization: {
    functionHandle: "hide-free-shipping"
    title: "Hide free shipping options"
    enabled: true
  }) {
    deliveryCustomization {
      id
    }
    userErrors {
      code
      field
      message
    }
  }
}

Hey Luke,

You’ll need to run the deliveryCustomizationCreate mutation from your app since the Function handles are app-scoped. The tutorial will need to be updated to reflect this, but in the meantime, here’s more information on the introduction of Function handles.

Hope that helps! Let me know if you encounter any other issues with the tutorial and we’ll get it updated :slight_smile:

Hi Paige, sorry but that isn’t totally clear still. I have an extension-only app, how do we do this mutation from an app?

The dev assistant basically told me what I already knew. I hope you guys have a way to handle extension-only situations otherwise this is an awful change.

I was able to get around this by using 2025-07 and passing the functionId (after querying shopifyFunctions to find it).

But I’ve now just installed the extension-only app on the client/production store, tried querying shopifyFunctions to grab the ID but now I’m getting no functions being returned :sob:

{
    "data": {
        "shopifyFunctions": {
            "edges": []
        }
    },
    "extensions": {
        "cost": {
            "requestedQueryCost": 13,
            "actualQueryCost": 2,
            "throttleStatus": {
                "maximumAvailable": 20000.0,
                "currentlyAvailable": 19998,
                "restoreRate": 1000.0
            }
        }
    }
}

Got the same problem with a cartTransform Function..

It’s an Extension Only App, but I’m required to create the cartTransform Object using the Admin API Add a customized bundle function

This is fine for development (using the GraphiQL Explorer) but I can’t actually do anything for production as it’s an extension only App so I don’t have the Access Token :upside_down_face:
I can’t just setup i.e. a Custom App because it will say “function not found” as it’s not part of the same App :person_shrugging:

I can’t fetch the Access Token as that would require an installation step with a redirect (thus requiring a back-end, ergo not extension only app).

@KyleG-Shopify / @Alan_G don’t suppose one of you could cast your eyes over this too? This is a huge blocker.

Oh I didn’t think of the complications this would cause for extension-only apps!
You’re right this a massive blocker. Let me see if we can get this resolved as soon as possible.

Alright, looked into this and confirmed that extension-only apps can still utilize functionId in the 2025-10 API version. It hasn’t been removed at all so you’re safe to continue using it as usual.

Hi @Paige-Shopify, will Shopify be keeping functionId available alongside functionHandle for future versions then?

Just need to ensure this solution is future proof and not just a plaster for now.

Your concerns are completely fair considering it is marked as deprecated, and I appreciate you sharing them. We don’t have immediate plans to remove functionId, but we’re always looking for ways to improve the developer experience. If we do make changes in the future, we’ll ensure any new solution works well for different types of apps.

Personally, I’d like to see Functions become available immediately on stores without all these Admin API calls, similar to how UI Extensions work.

RE Functions being made available straight away, it would be nice if Extension Only Apps had some built-in settings to simply turn functions on/off.

Could the documentation be updated to reflect that developers have to use the Function ID (not handle) when ‘installing’ their functions on extension only apps? I feel it will save a lot of confusion.

Built-in setting to turn functions on/off would be very convenient!

Thanks for sharing your feedback Ceri. It’s possible to use handle with extension-only apps, though a minimal backend is needed to support this. If this isn’t an option, functionId would need to be used instead. I’ll make sure to add this information to our docs for clarity.

Thanks @Paige-Shopify in my mind an extension-only App wouldn’t have a back-end so to speak.

Agreed. I think we either need a way in the admin UI to enable these, or the functionId method needs to remain.

Thanks both for your feedback! It’s always great to hear about what works and what doesn’t work from the people who use our developer tools the most.

Are there any plans as to what Shopify will do going forward then?

Not at the moment.
As the information becomes available we will be including it in our changelog as usual.

HI @Paige-Shopify , another spanner in the works (so to speak) - normally I’d just create a Custom App (for the store) to fetch Admin API Credentials that can be used to then install the function - however come January 2026 this won’t be possible making it even more difficult to have extension only apps with functions :pensive_face:

I was just about to ask the both of you how the Admin API mutation is currently being run. It sounds like the approach being used differs from the ones I’m familiar with. These are the options I know:

  • Provide instructions to merchants for using the GraphiQL app
  • Use the GraphiQL app on the merchant shop via Collaborator access
  • Have a minimal backend

Thanks for the heads up about encountering another blocker for activating Functions. Let me see if I can arrange a better path forward for extension-only apps :slight_smile: