Shopify運用設計研究所 > Shopifyメタフィールド設計ガイド|メタオブジェクト・CSV・APIまで運用で破綻させない方法
2026年7月3日
•約17分で読めます
Shopifyメタフィールドを商品・バリエーション・顧客・注文の独自項目として設計する方法を、namespace/key/type命名、標準定義、メタオブジェクト、CSV一括更新、GraphQL Admin API、権限、棚卸し、外部PIM/DBへの切り分けまで整理します。
Shopifyの商品ページに、素材、注意事項、サイズ表、出荷条件のような独自項目を追加したいです。メタフィールドを作ればよいですか?
作ること自体はできます。ただし実務で大事なのは、どのリソースに、どのnamespace/key/typeで、誰が、どの方法で更新し、どこまでテーマやAPIで使うかを先に決めることです。
「shopify メタフィールド」で調べる人の多くは、単に入力欄を1つ増やしたいだけではありません。
商品ごとに素材や注意事項を出したい。バリエーションごとにJAN、容量、色番、配送制約を持たせたい。顧客ごとに会員ランクや法人属性を管理したい。注文ごとに出荷指示や社内確認フラグを残したい。CSVで一括更新したい。外部PIMや基幹DBからAPIで反映したい。テーマにも表示したい。
Shopify公式ヘルプのメタフィールドでは、メタフィールドは商品、お客様、注文など既存のShopifyデータモデルを独自のカスタムデータで拡張するものとして説明されています。つまりメタフィールドは「自由入力欄」ではなく、Shopifyのデータモデルに項目を追加する仕組みです。
ここを軽く扱うと、商品説明HTML、タグ、アプリ内設定、メタフィールドに似た情報が散らばり、CSVとAPIの更新が衝突します。
既存記事のShopifyテーマ開発の実務設計では、商品ごとに変わる情報をテーマコードへ直書きせず、メタフィールドやメタオブジェクトに逃がす考え方を扱いました。この記事では、テーマ側ではなく、メタフィールドそのものをデータモデルとしてどう設計・運用するかに絞って整理します。
Shopifyメタフィールド設計で最初に決めるべきなのは、入力欄の作り方ではなく、商品・バリエーション・顧客・注文のどこに責任を持たせるかです。
メタフィールドは、管理画面からすぐ追加できます。しかし、実務ではいきなり追加しない方がよいです。先に項目台帳を作り、リソース、namespace、key、type、更新方法、表示先、正本、削除可否を決めます。
| 決めること | 例 | 決めないと起きること |
|---|---|---|
| 持たせるリソース | 商品、バリエーション、顧客、注文 | 商品単位の値をバリエーション単位に分け直す移行が発生する |
| namespace/key | spec.material、shipping.temperature_zone |
似た項目が複数でき、テーマやCSVで参照しにくくなる |
| type | 単一行テキスト、数値、日付、重量、参照、JSON | 値の検証が効かず、API処理で例外が増える |
| 標準定義かカスタム定義か | Shopify標準定義、独自定義 | 互換性を捨てて独自項目を作りすぎる |
| 更新方法 | 管理画面、商品CSV、一括編集、GraphQL Admin API | 手入力と外部同期が衝突する |
| 正本 | Shopify、PIM、WMS、CRM、独自DB | どちらで直せばよいか分からなくなる |
| 棚卸し責任 | EC担当、CS、開発、外部ベンダー | 使われていない項目が残り続ける |
この台帳があれば、メタフィールドは運用できます。逆に台帳がない場合、便利な分だけ無秩序に増えます。
メタフィールドは商品だけの仕組みではありません。どのリソースにぶら下げるかで意味が変わります。
| リソース | 向いている独自項目 | 例 | 避けたい使い方 |
|---|---|---|---|
| 商品 | 商品全体に共通する販売・表示・分類属性 | 素材、注意事項、サイズ表参照、成分、保証、商品別FAQ | バリエーションごとに違うJANや容量を商品に持たせる |
| バリエーション | SKU単位で変わる属性 | JAN、型番、色番、容量、重量補足、倉庫連携キー | 商品全体で共通の説明文を全バリエーションへ重複入力する |
| 顧客 | 顧客ごとの管理属性 | 会員ランク、法人区分、担当営業、審査状態、誕生日 | 配信同意や個人情報を複数システムで無秩序に同期する |
| 注文 | 注文単位の処理・確認属性 | 出荷指示、ギフト対応、確認フラグ、外部連携ID | 商品マスタに持つべき恒久属性を注文ごとに複製する |
判断基準は「その値が何に対して一意か」です。素材や洗濯方法が商品全体で同じなら商品メタフィールドです。色や容量ごとにJANが違うならバリエーションメタフィールドです。購入後の出荷メモなら注文メタフィールドです。会員ランクなら顧客メタフィールドです。
この判断を誤ると、あとでCSVやAPI更新が難しくなります。たとえば「色番」を商品メタフィールドに持たせると、1商品に複数色がある時点で破綻します。
メタフィールドは、namespace、key、typeで扱います。Shopify Dev DocsのManage valuesでも、GraphQL Admin APIで値を作成・更新するときは、namespace、key、typeが定義と合っている必要があります。
| 設計対象 | 推奨方針 | 例 | NG例 |
|---|---|---|---|
| namespace | 業務領域で分ける | spec、shipping、compliance、crm、integration |
customだけに全部入れる |
| key | 意味が変わりにくい英小文字スネークケース | material、temperature_zone、external_product_id |
memo1、new_field、product_info |
| type | 表示ではなく値の性質で選ぶ | single_line_text_field、number_integer、date、metaobject_reference |
とりあえず複数行テキスト |
| name | 管理画面で人が分かる日本語名 | 素材、配送温度帯、外部商品ID |
項目A、表示用1 |
| description | 入力ルールと利用先を書く | 商品ページの仕様表に表示。PIM同期対象。 |
空欄、または入力者に伝わらない説明 |
| storefront access | 公開してよいものだけ許可 | 商品仕様、FAQ、サイズ表 | 原価、仕入先、社内メモ |
namespaceは業務領域が分かる粒度にし、typeは表示ではなく値の性質で選びます。数値、日付、参照型で扱うべき項目をテキスト型に逃がすと、検証、検索、絞り込み、API処理が弱くなります。
Shopifyのメタフィールドには、標準定義とカスタム定義があります。Shopify Dev DocsのManage metafield definitionsでは、定義はメタフィールドの構造、型、ルールを指定するスキーマとして扱われています。
| 種類 | 向いているケース | 利点 | 注意点 |
|---|---|---|---|
| 標準定義 | ISBN、原材料、商品仕様など、Shopifyやアプリとの互換性がありそうな項目 | テーマ、アプリ、カテゴリーメタフィールドとの相性がよい | 自社独自の意味を無理に押し込まない |
| カスタム定義 | 独自の出荷条件、社内分類、外部連携ID、独自表示項目 | 業務に合わせてnamespace/key/typeを設計できる | 命名、権限、棚卸しを自社で管理する必要がある |
| アプリ所有定義 | アプリが構造を管理し、値だけ一部編集させたい項目 | アプリの設定や同期状態を壊しにくい | merchant側が自由に変更できる範囲を制限する |
| merchant所有定義 | 管理画面や複数アプリから扱う共有項目 | EC担当が管理しやすい | 複数アプリが同じ項目を触る場合の責任分界が必要 |
商品仕様、素材、サイズ、色、カテゴリーメタフィールドに近い項目は、独自namespaceで作る前に標準側を確認します。一方で「出荷温度帯」「倉庫連携ID」「薬機確認ステータス」のように社内処理や外部連携の責任を持つ項目は、カスタム定義として管理します。
メタフィールドで何でも持たせようとすると、項目が横に増え続けます。Shopify Dev DocsのAbout metaobjectsでは、メタオブジェクトは複数の関連フィールドを持つ独自データ構造を定義できるものとして説明されています。
| 選択肢 | 向いているデータ | 例 | 判断ポイント |
|---|---|---|---|
| メタフィールド | 既存リソースにぶら下がる単一または少数の属性 | 商品の素材、注文の確認フラグ、顧客の会員ランク | その値は商品・顧客・注文に直接属するか |
| メタオブジェクト | 複数項目を持つ再利用データ | サイズ表、ブランド情報、成分辞書、FAQセット、店舗情報 | 複数商品や複数ページから参照するか |
| 外部PIM/DB | Shopify外にも正本があり、履歴・承認・大量更新が必要なデータ | 商品マスタ、規格マスタ、倉庫別出荷条件、会員DB | Shopifyだけで管理すると運用責任が重すぎないか |
商品ごとの「素材」は商品メタフィールド、複数商品で同じ「サイズ表」を参照するならメタオブジェクト、PIMの全商品属性を扱うなら外部PIM/DBを正本にして必要項目だけShopifyへ反映します。
メタフィールドは「既存リソースの属性」、メタオブジェクトは「再利用できる構造データ」、外部DBは「Shopifyだけに閉じない業務正本」と考えると判断しやすくなります。
メタフィールドはテーマに表示できます。Shopifyヘルプでも、動的ソースをサポートするテーマではテーマエディタから多くのメタフィールドを連携でき、対応しない型や旧テーマではコード編集が必要になる場合があると説明されています。
ただし、テーマ表示を先に考えるとデータ設計が崩れます。
| 表示要件 | データ側で決めること | テーマ側で決めること |
|---|---|---|
| 商品ページに仕様表を出す | 仕様項目のnamespace/key/type、未入力時の扱い | 表示順、空欄非表示、長文時のレイアウト |
| サイズ表を出す | 商品別か共通表か、メタオブジェクト参照か | モーダル、表、画像、スマホ表示 |
| 注意事項を出す | 法務・品質管理の確認フロー、改定履歴 | 目立たせ方、購入ボタン周辺に出すか |
| 会員ランク別文言を出す | 顧客メタフィールドの正本と更新方法 | ログイン時・未ログイン時の表示 |
| 出荷条件を出す | WMS正本かShopify管理か | 商品ページ、カート、注文確認メールへの出し分け |
LiquidやOnline Store 2.0のsection/blockは表示の組み立てに使います。メタフィールド設計では、その前段として「表示してよい項目か」「未入力時にどうするか」「型を変えたとき影響を受けるテーマはどこか」を決めます。
メタフィールドの更新方法は1つではありません。管理画面で直接編集する、商品CSVで更新する、一括編集ツールを使う、GraphQL Admin APIで更新する、外部PIMやアプリから同期する。運用では、更新方法ごとに責任を分けます。
ShopifyヘルプのCSVファイルを使用した商品のインポートとエクスポートでは、商品CSVで商品のメタフィールドがサポートされ、列ヘッダーにproduct.metafields.namespace.key形式を使えることが説明されています。一方で、バリエーションメタフィールドは商品CSVのインポート/エクスポートではサポートされず、バリエーションの一括編集を使う必要があるとされています。
また、メタフィールドの一括編集では、商品、バリエーション、コレクション、お客様のメタフィールドを一括編集ツールで変更できると説明されています。
| 更新方法 | 向いているケース | 注意点 |
|---|---|---|
| 管理画面の個別編集 | 少数商品の文言、EC担当の通常運用 | 入力ルールと承認フローを決める |
| 一括編集ツール | 商品・バリエーション・コレクション・顧客の少量から中量更新 | 対象を絞り、保存エラーを確認する |
| 商品CSV | 商品メタフィールドの棚卸し、初期投入、販売属性の一括更新 | バリエーションメタフィールドは別手段が必要 |
| 顧客CSV | 顧客メタフィールドの初期投入やCRM移行補助 | メール・電話の重複、個人情報、配信同意に注意 |
| GraphQL Admin API | 外部PIM、WMS、CRM、独自管理画面からの同期 | スコープ、定義、userErrors、再実行ログが必要 |
CSVは便利ですが、責任範囲を決めずに使うと危険です。APIで同期する項目は、CSVで更新してよいか、更新した場合にどちらが勝つかを明記します。
外部システムからメタフィールドを更新する場合は、GraphQL Admin APIを使います。Shopify Dev DocsのManage valuesでは、メタフィールド値の作成、読み取り、更新、削除をGraphQL Admin APIで行う方法が説明され、単独のメタフィールド操作にはmetafieldsSetを使えるとされています。
| 設計項目 | 確認すること |
|---|---|
| ownerId | 商品、バリエーション、顧客、注文など、どのリソースへ書くか |
| namespace/key/type | 定義と一致しているか。標準定義・カスタム定義のどちらか |
| value形式 | 数値、日付、JSON、参照型など、型に合う文字列か |
| スコープ | 商品ならwrite_products、顧客ならwrite_customersなど、owner typeに応じた権限があるか |
| userErrors | field、message、codeをログに残し、再実行対象を切り分けるか |
| 冪等性 | 同じ同期を再実行しても二重登録や意図しない上書きが起きないか |
metafieldsSetは複数メタフィールドをまとめて設定できます。どの商品IDのどのnamespace/keyが失敗したか、型不一致なのか、権限不足なのか、値の形式が悪いのかをログに残します。
API設計全体はShopify APIの種類と選び方でも整理しています。メタフィールド更新はAdmin APIの典型的な用途ですが、APIで書けるからといって、すべてを外部から上書きしてよいわけではありません。
メタフィールドには、公開してよい項目と社内だけで扱う項目があります。原価、仕入先、社内メモ、外部連携IDのような情報をテーマやStorefront APIへ出してはいけません。Shopifyヘルプで説明されている通り、編集には対応リソースのスタッフ権限も関わります。
| 運用ルール | 内容 |
|---|---|
| 追加申請 | 目的、対象リソース、namespace/key/type、表示先、正本を書く |
| 変更履歴 | 作成日、変更日、変更者、変更理由、影響するテーマ/APIを残す |
| 公開範囲 | Storefront公開、管理画面のみ、アプリ内部を分ける |
| 更新責任 | 手入力、CSV、API、PIM同期のどれが正か決める |
| 棚卸し | 四半期ごと、またはテーマ改修・PIM導入・アプリ入れ替え時に見る |
| 削除ルール | テーマ、API、Flow、アプリ、CSVで未参照と確認してから削除する |
変更履歴はShopifyだけに期待しすぎない方がよいです。定義変更、CSV投入、API同期、テーマ参照変更は、Git、スプレッドシート、チケット、同期ログなど、実務で追える場所に残します。
Shopifyをすべての業務データの正本にする必要はありません。商品点数、属性数、承認フロー、複数チャネル展開が増えるほど、外部PIMや独自DBを正本にした方がよい領域が出ます。
| 状況 | Shopifyメタフィールドでよい | 外部PIM/DBを検討する |
|---|---|---|
| 商品点数 | 数十から数百商品で、EC担当が直接管理できる | 数千以上で、カテゴリ別属性や承認が多い |
| 属性数 | 商品ページや絞り込みに使う主要項目だけ | 社内管理、仕入、品質、法務、販促の属性が大量にある |
| チャネル | Shopify中心 | モール、実店舗、卸、カタログ、海外サイトにも配信する |
| 履歴 | 最新値が分かれば足りる | いつ誰が何を変えたか、過去値が必要 |
外部PIM/DBに逃がす場合も、Shopifyメタフィールドが不要になるわけではありません。Shopifyの商品ページ、絞り込み、テーマ表示、注文処理に必要な項目だけをPIMからShopifyへ同期します。
Shopify API連携の設計方法で整理したように、API連携は正本と同期イベントを決める仕事です。メタフィールドも同じです。PIM側で承認済みになったらShopifyへ反映するのか、Shopify側の販売文言だけはEC担当が編集するのか、差分更新か全件上書きかを決めます。
メタフィールド運用で起きる問題は、作成手順よりも切り分けで差が出ます。
| 症状 | 見るべき場所 | よくある原因 | 復旧方針 |
|---|---|---|---|
| 商品ページに値が出ない | メタフィールド値、定義、テーマ設定、Liquid | 未入力、namespace/key違い、型非対応、Storefront公開なし | 対象商品の値とテーマ参照を照合する |
| CSVで更新できない | CSV列名、定義、インポートエラー | product.metafields.namespace.keyの不一致、型不一致 |
小さな件数で再現し、エラー列を修正する |
| バリエーション項目がCSVに出ない | 商品CSV仕様、一括編集画面 | 商品CSVはバリエーションメタフィールド更新に向かない | バリエーション一括編集かAPI更新に切り替える |
| API更新が失敗する | GraphQLレスポンス、userErrors、スコープ | 権限不足、ownerId違い、定義不一致、値形式エラー | field/message/codeをログ化して再実行する |
| 外部同期後に手入力が消える | 同期ログ、正本定義、更新ルール | PIMやバッチがShopify値を上書きしている | 項目ごとに編集権限と勝ち負けを決める |
| 社内項目が表示された | storefront access、テーマ参照、アプリ設定 | 公開範囲と表示ロジックの分離不足 | 非公開項目を切り離し、参照箇所を棚卸しする |
参考記事として、Tsun社のShopifyメタフィールドの使い方・設定方法を徹底解説のように、管理画面からの設定手順を丁寧に整理した記事もあります。実際の初期設定ではこうした手順記事が役に立ちます。ただし、複数部署・CSV・API・PIM連携まで含める場合は、手順の前に項目台帳と責任分界を作る方が重要です。
Shopifyメタフィールドは、商品ページに独自項目を追加する便利機能ではあります。しかし実務では、それだけではありません。
商品、バリエーション、顧客、注文のどこに値を持たせるか。namespace/key/typeをどう命名するか。標準定義とカスタム定義をどう分けるか。メタフィールド、メタオブジェクト、外部PIM/DBのどれを使うか。テーマ表示、CSV一括更新、GraphQL Admin API、権限スコープ、エラー処理、変更履歴、棚卸しをどう運用するか。
これらを決めて初めて、メタフィールドはEC運用のデータモデルになります。
Bitlightでは、Shopifyのテーマ表示だけでなく、商品属性、バリエーション属性、顧客属性、注文処理、CSV更新、API連携、外部PIM/DBとの責任分界まで含めて整理します。メタフィールドが増えてから整理するより、項目を追加する前に「どこに、何を、誰が、どう更新するか」を設計する方が、長く保守できるShopify運用になります。
千葉県出身。10歳の頃からプログラミングを始め、ゲーム、Webサイト、ロボット、スマホアプリなどを制作。大阪大学基礎工学部情報科学科で情報工学と統計学を学び、大学時代はAIを研究。大学在学中にWeb広告代理店でのインターンや人材系Webサービスの立ち上げを経験し、卒業後はフリーランスエンジニアとしてGISシステム、データ基盤構築、Webシステムの開発に従事。10年以上のWebアプリ開発・データ分析経験を基に、2023年9月に株式会社ビットライトを設立し、現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援。