【Shopify Flow活用】他社アプリのメタフィールドへデータの型を変換して投入する方法

Shopifyアプリ間で顧客メタフィールドのデータの持ち方が異なる場合に、Shopify Flowでデータ型を変換して引き渡す方法を紹介します。マーチャントが既にインストール済みのShopifyアプリが利用しているメタフィールドへ、別のアプリが利用しているメタフィールドからデータを渡し、データを一つのメタフィールドへ集約したい時などに活用できます。

今回のケースでは、自社アプリ「CRM PLUS on LINE」とBonify社のアプリ「Customer Account Fields」でデータの整合性をとる必要があり、実際に実現できたので記事にしました。

ワークフローの自動化アプリ「Shopify Flow」を利用するため、Shopify(ベーシックプラン・スタンダードプラン・プレミアムプラン)及びShopify Plusにて実現可能な方法です。(2023年7月27日追記)

Shopify Flowで他社アプリのメタフィールドへデータの型を変換して投入する方法

どんなケースだったのか

Shopifyの会員登録ページのデフォルト項目にはない情報(生年月日等)を会員登録ページに追加したい場合、なにかしらShopifyアプリを導入して解決することが多いかと思います。
弊社のアプリ「CRM PLUS on LINE」では、LINEログインを利用した会員登録フォームに「生年月日・お気に入り店舗」の項目を追加し、取得した情報をメタフィールドやタグに保存する機能を持っています。(関連プレスリリースはこちら

CRM PLUS on LINEーLINEログインを利用した会員登録フォームへの項目追加イメージ
LINEログインを利用した会員登録フォームへの項目追加イメージ
取得した情報は、CRM PLUS on LINEの顧客メタフィールド・タグに格納されます
取得した情報は、CRM PLUS on LINEの顧客メタフィールド・タグに格納されます

ただし「CRM PLUS on LINE」が対応しているのは、Shopify Plus環境かつLINEアカウントで会員登録をするケースのみです。LINEアカウントで会員登録しない場合(一般的なメールアドレスでの会員登録フォーム等)、生年月日やお気に入り店舗などの追加情報の取得は、他社アプリが担っているか独自のカスタマイズが行われています。今回のケースでは、Bonify社のアプリ「Customer Account Fields」が担っていました。

つまり、

  • LINEアカウントでの会員登録時に取得した生年月日情報:CRM PLUS on LINEのメタフィールドとタグ
  • メールアドレスでの会員登録時に取得した生年月日情報:Customer Account Filedsのメタフィールド

にそれぞれ情報が保存される状況になっています。

全顧客の追加情報(生年月日などメタフィールドに保存する情報)は、「Customer Account Fields」のメタフィールドに集約したいという要望だったのですが、今回は「CRM PLUS on LINE」と「Customer Account Fields」で生年月日のデータの持ち方が異なっており、そのまま引き渡すことはできないというケースでした。

アプリ間での「生年月日」データ型の違い

CRM PLUS on LINE」では生年月日を yyyy-mm-dd の型(日付型)で顧客メタフィールドへ保存しつつ、誕生日月にクーポンが送信できるよう、年・月・日をバラして顧客タグを付与しています。

「CRM PLUS on LINE」の顧客メタフィールド(生年月日)
「CRM PLUS on LINE」の顧客メタフィールド(生年月日)
「CRM PLUS on LINE」の顧客タグ(生年月日)
「CRM PLUS on LINE」の顧客タグ(生年月日)

一方、「Customer Account Fields」は年・月・日をバラバラに数値で顧客メタフィールドに保存する設定になってました。「Customer Account Fields」は柔軟に設定が可能で日付型でメタフィールドに保存させることもできます。今回はおそらく誕生日月が扱いやすいようこのような定義にしたと思われます。

「Customer Account Fields」の顧客メタフィールド(生年月日)
「Customer Account Fields」の顧客メタフィールド(生年月日)

データ型が違って困ったなーというのが最初の感想だったんですが、ここでShopify Flowの知見が役に立ちました。

日付型の生年月日データを数値型に変換するワークフロー構築例

いろいろと試行錯誤した結果、ワークフローはこうなりました。

日付型の生年月日データを数値型に変換するワークフロー構築例ー誕生日を「CRM PLUS on LINE」から「Customer Account Fields」のメタフィールドへ反映

LINEログインでの会員登録時に、「CRM PLUS on LINE」が設定した顧客メタフィールドのデータを「アクション」欄の指示に従って、「Customer Account Fields」の年・月・日欄へ、それぞれデータをアップデートするというワークフローです。

「アクション」の具体的な挙動の設定は下記のようになっています。

「月」データの変換アクション設定例ー「CRM PLUS on LINE」が設定した顧客メタフィールドのデータを「アクション」欄の指示に従って、「Customer Account Fields」の年・月・日欄へ、それぞれデータをアップデートするというワークフロー
「月」データの変換アクション設定例

指定したメタフィールドへ別のメタフィールドのデータの型を変換してアップデートする、というアクションです。このワークフロー内の「アクション」に設定されている3つでは、年と月と日をそれぞれ変換しています。見やすく清書します。

{% for metafields_item in customer.metafields %}
 {% if metafields_item.namespace == 'crmplus' %}
  {% if metafields_item.key == 'birthday' %}
   {{ metafields_item.value | date: "%Y" }}
  {% endif %}
 {% endif %}
{% endfor %}
{% for metafields_item in customer.metafields %}
 {% if metafields_item.namespace == 'crmplus' %}
  {% if metafields_item.key == 'birthday' %}
   {{ metafields_item.value | date: "%-m" }}
  {% endif %}
 {% endif %}
{% endfor %}
{% for metafields_item in customer.metafields %}
 {% if metafields_item.namespace == 'crmplus' %}
  {% if metafields_item.key == 'birthday' %}
   {{ metafields_item.value | date: "%-d" }}
  {% endif %}
 {% endif %}
{% endfor %}

3行目までの記述は3つとも同じで、ざっくり解説すると

顧客メタフィールド内でネームスペースが「crmplus」かつキーが「birthday」

という条件を付与するための記述です。

「CRM PLUS on LINE」の顧客メタフィールド内での生年月日は、「ネームスペース=crmplus」「キー=birthday」で定義しています
「CRM PLUS on LINE」の顧客メタフィールド内での生年月日は、「ネームスペース=crmplus」「キー=birthday」で定義しています

続く{{ metafields_item.value | date: ” ” }} で yyyy/mm/dd の日付型データから 年・月・日だけをそれぞれ抽出します。

{{ metafields_item.value | date: "%Y" }}
{{ metafields_item.value | date: "%m" }}
{{ metafields_item.value | date: "%d" }}

Yだけ大文字なのが曲者ですね。

上記のままの状態だと、月・日の値が一桁の場合、 01 というように0がつきます。月・日を01から1に変換したい場合は「-」を加えて数値型に変換します。

{{ metafields_item.value | date: "%-m" }}
 {{ metafields_item.value | date: "%-d" }}

これで生年月日データを「CRM PLUS on LINE」の日付型から「Customer Account Fields」で定義していた数値型に変えて、「Customer Account Fields」の顧客メタフィールドへ引き渡せました。

「CRM PLUS on LINE」の日付型から「Customer Account Fields」で定義していた数値型に変換前のデータ型(日付型)
変換前のデータ型(日付型)
「CRM PLUS on LINE」の日付型から「Customer Account Fields」で定義していた数値型に変換後のデータ型(数値型)
変換後のデータ型(数値型)

Shopify Flowはやりたいことが実現できた瞬間がうぉおおお!という感じでテンションが上がります。日付データの型変換の記述は、弊社CTOの佐藤さんが調べてくれたおかげで実現できました。チームワークです。みんなでやる仕事って楽しいですね!

参考ページ(%Y %m %d の仕様)

Shopify FlowでLINEが配信できるアプリ「CRM PLUS on LINE」

我々が提供する Shopifyアプリ「CRM PLUS on LINE」はShopify Flowに対応してLINE配信ができます。アプリ名の通りCRM的に使えるワークフローを沢山用意しているので、ShopifyとLINEで実現したいことがありましたらお気軽にご相談ください!

LINE連携・ステップ配信・発送通知・カゴ落ち配信等が無料プランから!セキュアなソーシャルログイン機能にも対応しています| Shopify アプリストア
岡田風早

株式会社ソーシャルPLUS 代表取締役社長

ソーシャルPLUSのカスタマーサクセスとして2015年にフィードフォースに入社し、プロダクトマネージャーを経て執行役員に。2021年9月にソーシャルPLUSが分社化して現在の役職に至る。

LINE社のTechnology PartnerとしてLINEログインやミニアプリなどのAPI活用、Sales PartnerとしてLINEのCRM活用、またShopify Partnerとしてエンタープライズ向けのShopify × LINEやShopify Flow・メタフィールドの活用、データ設計を得意とする。

Shopify連携
タイトルとURLをコピーしました