Admin rest apiを利用して customer metafieldを更新したい

Topic summary

Admin REST APIを使用してcustomer metafieldを更新しようとしているが、200レスポンスは返るものの実際には更新されない問題が発生。

試した方法:

  • エンドポイント: /admin/api/2023-01/customers/{customer.id}.json
  • APIスコープ: write_customersread_customers
  • PUTメソッドでmetafieldsを含むペイロードを送信

判明した仕様と解決策:

  1. 空のmetafieldは更新可能 - 初期状態(値が入っていない)のmetafieldはAPIで更新できる

  2. 既存値があると更新不可 - すでに値が入っているmetafieldは更新できない仕様の可能性

  3. 代替手段 - customer.notecustomer.tagsを使用する方法もある

  4. 最終的な解決方法 - 各ユーザーに紐づいた固有のmetafield IDを指定する必要がある。メタフィールド定義IDではなく、「ユーザー × メタフィールド」ごとに生成される個別のIDをペイロードに含めることで更新が可能になる。このIDはLiquidなどで表示させて確認できる。

Summarized with AI on November 15. AI used: claude-sonnet-4-5-20250929.

SIN_88 様

お世話になっております。

customerのメタフィールドの更新ですが、以前私もやったことがありました。

そのとき、メタフィールド内の更新できるときとできないときがありましたので、ご参考までに。

・更新できるとき

→メタフィールドが空のとき、更新してデータをいれることができました。

・更新できないとき

→メタフィールドになにかの値が入っているとき、更新できませんでしたが、200のレスポンスが返ってきました。

直接Shopifyに確認はしておりませんが、上記のような仕様かなと思いました。

この仕様からメタフィールドが使えなかったので、customer.noteとcustomer.tagsで代用しました。

なにかヒントになれば幸いです。

1 Like