🐙

Shopifyでノベルティを設定する方法を考察

2024/08/22に公開

はじめに

今回は、Shopify でノベルティを設定する方法について考察していきます。

Shopify の Webhook や Admin Graph QL API を用いてノベルティを設定する方法について考察していきます。

それでは、頑張っていきましょう。

Shopify でノベルティを実装する定義

まずは、Shopify でノベルティを実装する定義から考えていきます。

Shopifyでノベルティを設定するとは、特定の条件を満たした顧客に対して、無料のギフトや特典を自動的に提供する機能を指します。

ノベルティは、一定額以上の購入や特定の商品を購入した際に適用され、顧客の購買意欲を高める効果があります。

例えば、カートに特定の商品を追加すると、無料で関連アイテムが提供されるといった設定が可能です。この機能は、顧客満足度を向上させ、リピート購入を促進するための有効なマーケティング手法です。

Shopify でノベルティを実装するメリット・デメリット

それでは次に、Shopify でノベルティを実装するメリット・デメリットについてまとめていきます。

ノベルティを実装するメリットが無いと、実装方法を考察する意味もあまり無いですからね。

Shopifyでノベルティを実装するメリット

まずは、Shopify でノベルティを実装するメリットについて考えていきます。

Shopifyでノベルティ(無料ギフト)を実装することは、ECサイト運営において非常に効果的なマーケティング手法です。以下では、そのメリットを技術ブログ風に解説します。

1. 顧客満足度の向上

ノベルティを提供することで、顧客に「特別扱いされている」という満足感を与えることができます。このような体験は、顧客のロイヤルティを高め、リピート購入につながる可能性が高まります。特に、初めて購入する顧客に対してノベルティを提供することで、ポジティブな初回体験を提供でき、次回以降の購入を促進します。

2. 購入単価の向上

ノベルティを一定額以上の購入条件に設定することで、顧客はその特典を得るために追加購入を検討するようになります。これにより、顧客が購入する商品点数や金額を増やすことができ、結果として客単価が向上します。例えば、「5,000円以上の購入でノベルティプレゼント」といったプロモーションは、顧客の購買意欲を刺激する有効な手段です。

3. 在庫管理の効率化

シーズンオフの商品や、余剰在庫となっているアイテムをノベルティとして活用することで、在庫を効率的に処理することができます。これにより、倉庫スペースの確保や在庫回転率の向上につながります。また、ノベルティを提供することで、通常の販売では動かない在庫品を顧客に提供できるため、無駄な在庫コストを削減することが可能です。

4. 競争力の強化

他のECサイトとの差別化を図るために、ノベルティの提供は非常に効果的です。顧客は、同じ価格で購入するなら、特典が付いている店舗を選ぶ傾向があります。ノベルティを上手く活用することで、競合他社との差別化を図り、顧客の購買意欲を高めることができます。

5. マーケティングキャンペーンとの連動

ノベルティは、季節キャンペーンや特別プロモーションと組み合わせることで、その効果をさらに高めることができます。例えば、ホリデーシーズンに限定ノベルティを提供することで、短期間での売上増加を図ることが可能です。こうしたマーケティング施策との連携により、ブランドの認知度を高め、顧客とのエンゲージメントを深めることができます。

それでは次に、Shopify でノベルティを実装するデメリットについて考えていきましょう。

Shopifyでノベルティを実装するデメリット

ノベルティ(無料ギフト)の提供は、効果的なマーケティング手法である一方で、いくつかのデメリットやリスクも伴います。以下では、そのデメリットについて技術ブログ風に解説します。

1. コストの増加

ノベルティを提供することは、企業にとって直接的なコスト負担を伴います。特に、品質の高いノベルティや、単価の高い商品を無料で提供する場合、そのコストが企業の利益を圧迫する可能性があります。継続的にノベルティを提供する場合、これらのコストが積み重なり、総利益の低下につながるリスクがあります。

2. 顧客の期待値の変化

ノベルティの提供が常態化すると、顧客はそれを当然のことと考えるようになる可能性があります。これにより、ノベルティが提供されない場合に顧客が不満を感じたり、次回以降の購入を躊躇するリスクがあります。また、ノベルティを目的とした購入が増えると、実際の商品価値ではなく、ノベルティの有無が購入判断に影響を与えるようになり、価格戦略やブランド価値に悪影響を及ぼす可能性があります。

3. 在庫管理の複雑化

ノベルティを用意するためには、その在庫管理が必要となります。特に、限定数や期間限定のノベルティを提供する場合、その在庫を適切に管理しなければ、過剰在庫や不足在庫が発生しやすくなります。また、ノベルティが予想以上に人気を集めた場合、すぐに在庫切れとなり、顧客に対して約束を果たせなくなるリスクもあります。

4. ブランドイメージへの影響

頻繁にノベルティを提供することで、ブランドの高級感やプレミアム感が損なわれる可能性があります。特に、高級ブランドや独自性を重視するブランドにおいては、無料のノベルティを提供することがブランドイメージを低下させるリスクがあります。顧客がブランドを「安っぽい」と感じるようになると、長期的なブランド戦略に悪影響を与える可能性があります。

5. 他のプロモーションとの競合

ノベルティを導入することで、他のプロモーション施策(例:割引、クーポンなど)との競合が発生する可能性があります。これにより、顧客がどのプロモーションに注目すべきか迷うことがあり、結果として購入を見送るリスクがあります。また、複数のプロモーションが重複すると、企業側の管理が複雑になり、全体的なマーケティング効果が低下する可能性もあります。

Shopifyでノベルティを実装する方法

それでは、Shopify でノベルティを実装する方法を考察していきましょう。

以下の記事を参考にしています。

https://unreact.jp/blog/shopify-app-novelty

まずは、実装の大まかな方針を考えていきましょう。

最初に、顧客が商品を購入した際に、Webhook を走らせる必要があるかと思います。

その Webhook の中で、特定の条件を満たすorderオブジェクトを更新することで、ノベルティを付与できそうです。

上記の方針で、実装方法を考えていきたいと思います。

ノベルティを付与するための Webhook の実装について

まずは、ノベルティを付与するための Webhook の実装について考えていきましょう。

以下の公式ドキュメントの、orders/createを参考にしていきましょう。

https://shopify.dev/docs/api/admin-rest/2024-07/resources/webhook#event-topics

orders/createイベントは、顧客が注文を行った際に走る Webhook です。

以下のオブジェクトを受け取ることができます。

長すぎるので、途中で省略しています。

{
  "id": 820982911946154508,
  "admin_graphql_api_id": "gid://shopify/Order/820982911946154508",
  "app_id": null,
  "browser_ip": null,
  "buyer_accepts_marketing": true,
  "cancel_reason": "customer",
  "cancelled_at": "2021-12-31T19:00:00-05:00",
  "cart_token": null,
  "checkout_id": null,
  "checkout_token": null,
  "client_details": null,
  "closed_at": null,
  "confirmation_number": null,
  "confirmed": false,
  "contact_email": "jon@example.com",
  "created_at": "2021-12-31T19:00:00-05:00",
  "currency": "USD",
  "current_subtotal_price": "398.00",
  "current_subtotal_price_set": {
    "shop_money": {
      "amount": "398.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "398.00",
      "currency_code": "USD"
    }
  },
  "current_total_additional_fees_set": null,
  "current_total_discounts": "0.00",
  "current_total_discounts_set": {
    "shop_money": {
      "amount": "0.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "0.00",
      "currency_code": "USD"
    }
  },
  "current_total_duties_set": null,
  "current_total_price": "398.00",
  "current_total_price_set": {
    "shop_money": {
      "amount": "398.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "398.00",
      "currency_code": "USD"
    }
  },
  "current_total_tax": "0.00",
  "current_total_tax_set": {
    "shop_money": {
      "amount": "0.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "0.00",
      "currency_code": "USD"
    }
  },
  "customer_locale": "en",
  "device_id": null,
  "discount_codes": [

  ],
  "email": "jon@example.com",
  "estimated_taxes": false,
  "financial_status": "voided",
  "fulfillment_status": "pending",
  "landing_site": null,
  "landing_site_ref": null,
  "location_id": null,
  "merchant_of_record_app_id": null,
  "name": "#9999",
  "note": null,
  "note_attributes": [

  ],
  "number": 234,
  "order_number": 1234,
  "order_status_url": "https://jsmith.myshopify.com/548380009/orders/123456abcd/authenticate?key=abcdefg",
  "original_total_additional_fees_set": null,
  "original_total_duties_set": null,
  "payment_gateway_names": [
    "visa",
    "bogus"
  ],
  "phone": null,
  "po_number": null,
  "presentment_currency": "USD",
  "processed_at": "2021-12-31T19:00:00-05:00",
  "reference": null,
  "referring_site": null,
  "source_identifier": null,
  "source_name": "web",
  "source_url": null,
  "subtotal_price": "388.00",
  "subtotal_price_set": {
    "shop_money": {
      "amount": "388.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "388.00",
      "currency_code": "USD"
    }
  },
  "tags": "tag1, tag2",
  "tax_exempt": false,
  "tax_lines": [

  ],
  "taxes_included": false,
  "test": true,
  "token": "123456abcd",
  "total_discounts": "20.00",
  "total_discounts_set": {
    "shop_money": {
      "amount": "20.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "20.00",
      "currency_code": "USD"
    }
  },
  "total_line_items_price": "398.00",
  "total_line_items_price_set": {
    "shop_money": {
      "amount": "398.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "398.00",
      "currency_code": "USD"
    }
  },
  "total_outstanding": "398.00",
  "total_price": "388.00",
  "total_price_set": {
    "shop_money": {
      "amount": "388.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "388.00",
      "currency_code": "USD"
    }
  },
  "total_shipping_price_set": {
    "shop_money": {
      "amount": "10.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "10.00",
      "currency_code": "USD"
    }
  },
  "total_tax": "0.00",
  "total_tax_set": {
    "shop_money": {
      "amount": "0.00",
      "currency_code": "USD"
    },
    "presentment_money": {
      "amount": "0.00",
      "currency_code": "USD"
    }
  },
  "total_tip_received": "0.00",
  "total_weight": 0,
  "updated_at"
  ...
}

こちらのオブジェクトに、商品の情報や金額の情報が入っているので、特定の商品を含む・含まないといった条件や、合計金額がx円以上といった条件に応じてノベルティを付与することが可能です。

ここまでで、Webhook の具体的なオブジェクトと、ノベルティを付与するかどうかの条件分岐の実装についての考察は終了です。

それでは次に、ノベルティを付与するための具体的な実装について考察していきます。

ノベルティを付与する具体的な実装

それでは、ノベルティを付与する具体的な実装について考えていきます。

最初に思いつくのは、orderUpdateという Admin GraphQL API です。

以下の公式ドキュメントを参照していきましょう。
https://shopify.dev/docs/api/admin-graphql/2024-01/mutations/orderupdate

以下が、サンプルコードになります。

mutation updateOrderMetafields($input: OrderInput!) {
  orderUpdate(input: $input) {
    order {
      id
      metafields(first: 3) {
        edges {
          node {
            id
            namespace
            key
            value
          }
        }
      }
    }
    userErrors {
      message
      field
    }
  }
}
{
  "input": {
    "metafields": [
      {
        "namespace": "my_field",
        "key": "delivery_instructions",
        "type": "single_line_text_field",
        "value": "leave on back porch"
      },
      {
        "id": "gid://shopify/Metafield/1069228936",
        "value": "123"
      }
    ],
    "id": "gid://shopify/Order/148977776"
  }
}

上記のサンプルコードに有る通り、OrderInput型に対応した注文の更新が行えそうです。

公式ドキュメントを参照する限り、以下の値を渡すことができます。

tagemailの更新は問題無く行えそうですが、注文に対して商品を追加することはできそうにないですね。別の方法を模索する必要がありそうです。

色々調査を進めたところ、orderEditBeginというメソッドが使えそうです。

https://shopify.dev/docs/api/admin-graphql/2024-01/mutations/orderEditBegin

mutation orderEditBegin($id: ID!) {
  orderEditBegin(id: $id) {
    calculatedOrder {
      # CalculatedOrder fields
    }
    userErrors {
      field
      message
    }
  }
}

こちらの Mutation を用いると、注文の編集を行えそうです。

また、orderEditAddVariantを用いると、注文に対して商品を追加することができそうでした。

https://shopify.dev/docs/api/admin-graphql/2024-01/mutations/orderEditAddVariant

mutation orderEditAddVariant($id: ID!, $quantity: Int!, $variantId: ID!) {
  orderEditAddVariant(id: $id, quantity: $quantity, variantId: $variantId) {
    calculatedLineItem {
      # CalculatedLineItem fields
    }
    calculatedOrder {
      # CalculatedOrder fields
    }
    userErrors {
      field
      message
    }
  }
}

また、orderEditCommitを最後に行うことで、注文の更新を反映させることができそうです。

https://shopify.dev/docs/api/admin-graphql/2024-01/mutations/orderEditCommit

mutation orderEditCommit($id: ID!) {
  orderEditCommit(id: $id) {
    order {
      # Order fields
    }
    userErrors {
      field
      message
    }
  }
}

この処理を行えば、注文の更新を問題無く行えそうですね。

ここまでで、Shopify でノベルティを実装する解説は終了です。

後は、カスタムアプリを作成して Webhook の中身を実装すれば、Shopify でノベルティを実装できるかと思います。

それでは次に、非エンジニアの方の方に向けて、Shopify アプリを用いてノベルティの実装を行う方法を解説していきたいと思います。

Shopify アプリを用いてノベルティを実装する方法

それでは、Shopify アプリを用いてノベルティを実装する方法を解説していきます。

今回紹介するのは、シンプルノベルティ|お手軽ギフト特典というアプリです。

以下の記事を参考にしています。

https://unreact.jp/blog/shopify-app-novelty

https://qiita.com/eijiSaito/items/9495383f3b8fdb46fa37

https://unblog.unreact.jp/blog/3wh78qcrddf3

https://unreact.jp/shopify-apps/sa-043-ur-novelty-app/guide

以下が、Shopify 公式のアプリストアになります。

https://apps.shopify.com/shopify-application-435?locale=ja

それでは、こちらのアプリについて紹介していきます。

シンプルノベルティ|お手軽ギフト特典

シンプルノベルティ|お手軽ギフト特典は、Shopify でノベルティを設定できるアプリです。

以下の画像のように、ノベルティ商品を自動で注文に対して付与することができます。

こちらのアプリのノベルティ付与には、二つの条件が有ります。

一つ目の条件は、注文の金額や個数に応じたノベルティ付与です。

二つ目の条件は、特定の商品が含まれる場合のノベルティ付与です。

そして、各々のノベルティ付与条件を管理画面から簡単に設定できます。

また、ノベルティの対象となる注文に対して自動でタグをつけることができます。

そして、ノベルティの対象となる顧客に対しても自動でタグをつけることができます。

また、顧客に付与したタグを元に、既にノベルティを付与されたことがある顧客にノベルティを付与するかどうかを選択できます。

安価でシンプルなアプリなので、Shopify でノベルティを実装する際には選択肢の一つに入ってくるかと思います。

https://apps.shopify.com/shopify-application-435?locale=ja

最後に

今回は、カスタムアプリや Webhook を作成してノベルティ付与を実装する方法と、Shopify アプリを用いてノベルティを設定する方法の二つを紹介しました。

お疲れさまでした。

参考記事

以下が、参考記事になります。

https://unreact.jp/blog/shopify-app-novelty

https://qiita.com/eijiSaito/items/9495383f3b8fdb46fa37

https://unblog.unreact.jp/blog/3wh78qcrddf3

https://unreact.jp/shopify-apps/sa-043-ur-novelty-app/guide

Discussion