Shopify Functionsを実装する
顧客タグに応じた自動割引をFunctionsで実装し、デプロイして有効化できる
最終確認: 2026-09
解説
受託の現場でなぜ必要か: この回では、顧客タグに応じた自動割引をFunctionsで実装し、デプロイして有効化できるようになります。
受託では、テーマのJSで書いた割引は誰でも改ざんできるので、チェックアウトの中で動くFunctionsで実装します。
Functionsとは、チェックアウトの中でShopifyが実行するロジック
JavaScript / TypeScript(WebAssemblyにコンパイル)またはRustで書きます。
テーマのJSと違って改ざんできず、チェックアウトの価格計算に介入できます。
大きいカートではRustが推奨です。
手順は、生成 → 入力クエリ → 純粋関数 → ローカル実行 → デプロイ → 有効化、の6つです。
どう生成し、何を書くのか
shopify app generate extensionでDiscountテンプレートを選びます。
生成されるのは、入力クエリ(.graphql)と、入力を受けて割引の指示を返す純粋関数(.js)と、shopify.extension.tomlです。
TOMLにはターゲットcart.lines.discounts.generate.runとinput_query・exportを書きます。
ファイル名や関数名は生成されたものに従います。
ローカル実行 → デプロイ → 有効化の3段階
shopify app function run --input input.jsonでローカルでテストし、shopify app deployで配布します。
有効化はdiscountAutomaticAppCreateでfunctionHandleとdiscountClassesを指定するか、アプリが用意する管理画面UIから行います。
デプロイしただけでは割引は効きません。
発展:統合されたDiscount APIと制約
商品割引・注文割引・配送割引は1つのDiscount Functionにまとまり、discountClassesとターゲットで出し分けます。
古い「product_discounts」型の記事と混ぜません。
実行時間・命令数・出力サイズに上限があり、外部APIは呼べません。
必要なデータは入力クエリで取り切ります。
※ ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。