特定の商品が入った注文が作成されたとき、フルフィルメントを自動にする方法

Topic summary

課題:
Shopify Flowを使用して、特定商品Aを含む注文作成時に自動フルフィルメントを実現したい。支払方法はクレジットカードのみで、顧客への通知は不要。

解決方法:

  • Shopify Flowで「Order Created」をトリガーに設定
  • 支払方法が「shopify_payments」の場合に分岐
  • ShopifyのREST APIを実行してフルフィルメントを自動化

実装詳細:

  • HTTP method: POST
  • エンドポイント: /admin/api/2024-01/fulfillments.json
  • カスタムアプリを作成してアクセストークンを発行し、X-Shopify-Access-Tokenヘッダーに設定
  • Bodyにはfulfillment_order_idを動的に取得するLiquidコードを使用

検証結果:
開発ストアでテストし、この方法で正常に動作することを確認。スクリーンショット付きで具体的な設定手順が共有されている。

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

お世話になります。

フルフィルメントの自動化について知っていらっしゃる方がおられましたら教えてください。

★shopifyflowを利用予定です。

特定の商品Aが入った注文が作成されたとき、「アイテムをフルフィルメント」を自動で行いたいと考えております。

※支払い方法はクレジットカードのみ

※お客様への通知は不要

shopify flowで実装できないかと調査しておりますが、なかなかうまくいかずの状態です・・・。

わかる方がいらっしゃいましたら、何卒ご協力いただけますと幸いです。

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

@tatsuki_ttt

Order Createdをトリガーとした場合、シンプルに「発送済み」にするアクションが見当たらなかったので、

調査してみたところ、下記の投稿を見つけました。

https://community.shopify.com/post/2209832

しかし、こちらの投稿の方法で本当にうまくいくのか確信がなかったので、

開発ストアで試してみました。

結論、下記の方法でうまく行きました。

(1)トリガー: Order Created

(2) 分岐: 支払方法(Order.paymentGatewayNames)が "shopify_payments"の時

(3) ShopifyのAPI実行

※クレジットカード支払いを、Shopify Paymentによる支払いとして考えています。

API実行は下記のようにします。

HTTP method: POST

URL: https://{{shop.myshopifyDomain}}/admin/api/2024-01/fulfillments.json

Body:

{%- assign fulfillment_order_id = 0 -%}
{%- for fulfillmentOrders_item in order.fulfillmentOrders -%}
  {%- assign fulfillment_order_id = fulfillmentOrders_item.id | remove: "gid://shopify/FulfillmentOrder/" -%}
{%- endfor -%}
{
    "fulfillment": {
        "line_items_by_fulfillment_order": [
            {
                "fulfillment_order_id": {{  fulfillment_order_id }}
            }
        ],
        "tracking_info": {
            "number": "MS1562678",
            "url": "https://www.my-shipping-company.com?tracking_number=MS1562678"
        }
    }
}

上記のtacking_infoは、

https://shopify.dev/docs/api/admin-rest/2024-01/resources/fulfillment#post-fulfillments

こちらのサンプルの値をそのまま利用しています。

不要であれば、指定しなくても大丈夫ですので、下記にご変更ください。

{%- assign fulfillment_order_id = 0 -%}
{%- for fulfillmentOrders_item in order.fulfillmentOrders -%}
  {%- assign fulfillment_order_id = fulfillmentOrders_item.id | remove: "gid://shopify/FulfillmentOrder/" -%}
{%- endfor -%}
{
    "fulfillment": {
        "line_items_by_fulfillment_order": [
            {
                "fulfillment_order_id": {{  fulfillment_order_id }}
            }
        ]
    }
}

X-Shopify-Access-Tokenについてです。

こちらは下記の方法で、カスタムアプリを作成して発行したトークンを指定します。

https://help.shopify.com/ja/manual/apps/app-types/custom-apps#enable-custom-app-development

APIスコープは、正確にはどれが必要か分かっていませんが、私は下記を指定して実際の動作を確認しました。

(設定しなくても問題ないスコープもありそうです。)

特定の商品Aが入った注文が作成されたとき

こちらについては、

(2) 分岐: 支払方法(Order.paymentGatewayNames)が "shopify_payments"の時

の、後に、商品情報による分岐を作成すれば良いはずです。

ご参考まで。

(キュー田辺)

1 Like