Update Metafields in Shopify using API

 import uvicorn
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import requests
import os

app = FastAPI()

class MetafieldData(BaseModel):
    namespace: str
    key: str
    value: str
    value_type: str
    resource_id: int
    resource_type: str
    shopify_store_url: str

class UpdateMetafieldData(MetafieldData):
    metafield_id: int

@app.post("/metafield", summary="Create Metafield", description="Creates a metafield for a specified resource.")
async def create_metafield(metafield_data: MetafieldData):
    resource_url = f"https://{metafield_data.shopify_store_url}/admin/api/2024-01/{metafield_data.resource_type}/{metafield_data.resource_id}/metafields.json"
    headers = {

About this template

A app for managing metafields in a Shopify store. It includes endpoints to create, update, and retrieve metafields for resources in a Shopify store. The app requires a SHOPIFY_ADMIN_API_TOKEN to authenticate requests

Introduction to the Update Metafields in Shopify using API Template

Welcome to the guide on how to use the "Update Metafields in Shopify using API" template on Lazy. This template is designed to help you manage metafields in a Shopify store with ease. It includes endpoints to create, update, and retrieve metafields for resources in a Shopify store. Before you can use this template, you'll need a Shopify Admin API token to authenticate requests.

Clicking Start with this Template

To begin using this template, simply click on the "Start with this Template" button in the Lazy Builder interface. This will pre-populate the code in the Lazy Builder, so you won't need to copy, paste, or delete any code manually.

Initial Setup: Adding Environment Secrets

Before you can test and use the app, you need to set up an environment secret for the Shopify Admin API token. Here's how to do it:

  • Log in to your Shopify admin dashboard.
  • Go to the "Apps" section and select "Manage private apps."
  • Create a new private app or use an existing one to generate an API token.
  • Copy the API token provided by Shopify.
  • In the Lazy Builder, navigate to the "Environment Secrets" tab.
  • Create a new secret with the key `SHOPIFY_ADMIN_API_TOKEN` and paste the API token you copied as the value.

Test: Pressing the Test Button

Once you have set up the environment secret, press the "Test" button in the Lazy Builder. This will begin the deployment of the app and launch the Lazy CLI.

Entering Input: Filling in User Input

If the template requires user input, the Lazy App's CLI interface will prompt you to provide the necessary information after you press the "Test" button. Follow the prompts to enter the required data, such as the resource ID, resource type, and Shopify store URL.

Using the App

After deploying the app and providing any required user input, you will be given a dedicated server link to interact with the API. Additionally, since this template uses FastAPI, you will also receive a link to the API documentation. This documentation will guide you on how to use the endpoints to create, update, and retrieve metafields.

Integrating the App

To integrate this app with your Shopify store, you will need to use the server link provided by Lazy. Here's an example of how to make a request to create a new metafield:

POST /metafield HTTP/1.1
Host: [Your Lazy Server Link]
Content-Type: application/json

  "namespace": "inventory",
  "key": "warehouse",
  "value": "42",
  "value_type": "integer",
  "resource_id": 123456789,
  "resource_type": "product",
  "shopify_store_url": "yourstore.myshopify.com"

And here's an example of a successful response:

  "metafield": {
    "id": 721389480,
    "namespace": "inventory",
    "key": "warehouse",
    "value": 42,
    "value_type": "integer",
    "description": null,
    "owner_id": 123456789,
    "created_at": "2023-04-02T14:00:00-04:00",
    "updated_at": "2023-04-02T14:00:00-04:00",
    "owner_resource": "product",
    "admin_graphql_api_id": "gid://shopify/Metafield/721389480"

Use the provided server link to send requests to the API for creating, updating, and retrieving metafields. Ensure that you replace `[Your Lazy Server Link]` with the actual link provided by Lazy and update the JSON payload with the correct data for your Shopify store and resources.

By following these steps, you can effectively manage metafields in your Shopify store using the Lazy platform.

Last published
July 20, 2024

More templates like this

Shopify Order Creation Webhook Handler

A webhook handler app for Shopify that can receive webhooks related to the creation of orders on your Shopify store.


Get Orders using Shopify API

A python app for getting orders in a store using the Shopify API. The python FastAPI is used for making the API call. The app requires a SHOPIFY_ADMIN_API_TOKEN and "orders" scope permissions to authenticate requests. This app can be customized to get all orders by name, by order ID (order number), fulfilled orders only and so on.

Fast API

Get Product Metafields using Shopify API

A FastAPI application that retrieves all products from a Shopify store and returns them in JSON format. Requires the SHOPIFY_ADMIN_API_TOKEN environment secret. The app includes an endpoint at "/product_metafields" where users can provide a product ID and the Shopify store URL to retrieve the product's metafields. The only environment secret required is SHOPIFY_ADMIN_API_TOKEN, which must be set for the app to authenticate with the Shopify API.

Fast API
Update Metafields in Shopify using API