Shopify Flowを用いて、同じ商品を2回購入してくれた顧客にアクションをする方法

いつもお世話になっております。

同じ商品を2回購入してくれた顧客にメールを送りたいです。

Shopify FlowとKlaviyoを使って送る方法を考えています。

1回目の購入時→顧客タグに「商品ハンドル」のタグを追加

2回目の購入時→顧客タグの中に今回購入した商品ハンドルのタグがあるかを判定し、あったらKlaviyoのTrack an Eventを実行

という方法を考えていたのですが、「顧客タグの中に今回購入した商品ハンドルのタグがあるかを判定」部分がうまくいきません。

どのように設定すれば、良いでしょうか?

それとも全く別の方法がありますでしょうか?

よろしくお願いいたします。

@Anonymous_876e90207c84eec074dc8f1fbdf1c908

Run Codeを利用されるのが良いかと思います。

Flowの全体図です。最後のLog outputをKlaviyoのアクションにご変更ください。

Run Codeの内容です。

input

{
  order {
    lineItems {
      product {
        handle
      }
    }
    customer {
      tags
    }
  }
}

code

export default function main(input) {
  let isSecondPurchase = false;
  const handles = input.order.lineItems.map(lineItem => lineItem.product.handle);
  handles.forEach(handle => {
    if(!isSecondPurchase) isSecondPurchase = input.order.customer.tags.includes(handle);
  })
  return {
    isSecondPurchase: isSecondPurchase
  }
}

output

type Output {
  isSecondPurchase: Boolean!
}

十分に検証はしていませんので、

うまく動作しない場合は、Run Codeのcode を見直していただくと良いかと思います。

ご参考まで。

(キュー田辺)

1 Like

株式会社Q (キュー)田辺様

いつもお世話になっております。

今回も丁寧にご回答いただき、ありがとうございます。

こんな方法があるのですね。

Run Codeは使用したことがなく、よく理解していないのですが、勉強してみようと思います。

もしよろしければ、簡単に解説をお願いしても良いでしょうか?

よろしくお願いいたします。

@Anonymous_876e90207c84eec074dc8f1fbdf1c908

codeの解説、でよかったでしょうか?

codeにコメントを入れてみました。

export default function main(input) {

  // 同じ商品を2回購入しているかのフラグ
  let isSecondPurchase = false;

  // 注文のlineItemsからproduct.handleを取り出して、配列に変換。["handle1","handle2","handle3"]のような配列が出来上がる
  const handles = input.order.lineItems.map(lineItem => lineItem.product.handle);

  // handelsの要素1つずつ(注文があった商品のハンドル)が顧客タグに含まれるかを調査
  handles.forEach(handle => {
    // まだ、同じ商品を2回購入していることが確認できていない場合
    if(!isSecondPurchase) {
      // 顧客タグに、商品ハンドルが含まれていれば、同じ商品を2回購入しているかのフラグをtrueに、そうでなければ、falseにする
      isSecondPurchase = input.order.customer.tags.includes(handle);
    }
  })

  // outputに渡す値
  return {
    isSecondPurchase: isSecondPurchase
  }
}

ご参考まで。

(キュー田辺)

1 Like

株式会社Q (キュー)田辺様

いつもお世話になっております。

丁寧に教えていただき、ありがとうございました。

理解することができました。

Run Code使いこなせるようになればできることが増えそうなので、色々試してみます。

教えていただき、ありがとうございました。

1 Like