初回注文の配送リードタイムを基に、定期購買の次回お届け予定日・時間帯を自動調整できます。
定期購買アプリでは、初回注文時にお客様へ配送日時を指定させる機能がないため、配送日時指定アプリを併用して初回のみ配送希望日・時間帯を取得するケースがあります。
しかし、配送日時指定アプリで取得した配送希望日は、定期購買アプリの契約情報(次回お届け予定日)へ自動では連携されません。
そのため、
初回に「注文日から◯日後に届く」感覚を、次回以降も維持したい
お客様が指定した配送希望日を基準に、次回以降も同じリードタイムで届けたい
といったニーズが発生します。
本ノウハウでは、初回注文の「注文日→配送希望日」の間隔(リードタイム)」を算出し、それを次回お届け予定日に引き継ぐ方法を紹介します。
「お届け日に合わせて注文日も変更する」を有効にしていないストアであること
本ノウハウは「初回のリードタイムを引き継ぐ」設計です
「お届け日に合わせて注文日も変更する」を有効にしている場合、「注文されてから届くまでの最短日数」として登録した日数がリードタイムとして計算されます
配送日時指定アプリが、注文に以下のカスタム属性を付与していること
配送希望日(日付として解釈可能な形式)配送時間帯
Shopify のプランがGrowプラン以上であること
※ShopifyFlowでHTTPリクエストアクションを利用する必要があるため
定期購買アプリのプランがENTERPRISEプランであること
※アプリの公開APIを利用するため
配送日時指定アプリと、定期購買一般設定の「お届け時間設定」に登録されている時間帯設定が一致していること
初回注文で、配送日時指定アプリ経由で配送希望日・時間帯が注文情報に保存される
Shopify Flow が定期購買の初回注文をトリガーに起動
初回注文の「注文日→配送希望日」の差分(リードタイム)を算出
次回の基準日を元にリードタイムを加算し、次回お届け予定日を算出
定期購買アプリの 公開 API を利用して、契約の次回お届け予定日・時間帯を更新
以下を参考にShopifyFlowを作成
Bodyに入力するLiquidとクエリの例
{%- assign new_date = "" -%}
{%- assign delivery_time_value = "" -%}
{%- for customAttributes_item in order.customAttributes -%}
{%- if customAttributes_item.key == '配送希望日' -%}
{%- assign order_date = order.createdAt | date: "%Y-%m-%d" | date: "%s" -%}
{%- assign delivery_date = customAttributes_item.value | date: "%s" -%}
{%- assign date_parts = nextBillingDate
| replace: "年", "-"
| replace: "月", "-"
| replace: "日", ""
| replace: ":00頃", ""
| replace: " ", " 00:00:"
-%}
{%- assign base_date = date_parts | date: "%Y-%m-%d" | date: "%s" -%}
{%- assign diff_seconds = delivery_date | minus: order_date -%}
{%- assign new_timestamp = base_date | plus: diff_seconds -%}
{%- assign new_date = new_timestamp | date: "%Y-%m-%d" -%}
{%- endif -%}
{%- if customAttributes_item.key == '配送時間帯' -%}
{%- assign delivery_time_value = customAttributes_item.value -%}
{%- endif -%}
{%- endfor -%}
{
"query": "mutation UpdateDelivery($id:String!, $date:Date!, $time:String!) { subscriptionContractUpdateDeliveryDate(subscriptionContractId: $id, nextDeliveryDate: $date, nextDeliveryTime: $time) { subscriptionContractId } }",
"variables": {
"id": {{ subscriptionContractId | json }},
"date": {{ new_date | json }},
"time": {{ delivery_time_value | json }}
}
}