Gmailを使ってAirtableからShopify注文を自動化
中級
これは自動化ワークフローで、14個のノードを含みます。主にIf, Gmail, Shopify, Webhook, Airtableなどのノードを使用。 Airtableを使用してShopifyの注文を自動化し、Gmailで確認メールを送信
前提条件
- •Googleアカウント + Gmail API認証情報
- •Shopify Admin API認証情報
- •HTTP Webhookエンドポイント(n8nが自動生成)
- •Airtable API Key
カテゴリー
-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "JjrhFDyBIgB20pnY",
"meta": {
"instanceId": "1a54c41d9050a8f1fa6f74ca858828ad9fb97b9fafa3e9760e576171c531a787"
},
"name": "Automate Shopify Orders from Airtable with Gmail Confirmations",
"tags": [],
"nodes": [
{
"id": "c07b2f4e-f9c6-40a9-88a3-cd3d905b1ab4",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1632,
-416
],
"parameters": {
"color": 3,
"width": 384,
"height": 560,
"content": "## The Trigger\n\n### This node acts as the workflow's entry point. It waits for a signal from an external service\n\n### It's designed to be triggered by an Airtable Automation whenever you mark an order as ready. The Airtable Automation will send the unique recordId of the order to this webhook.\n\n### Action Required: You must copy the 'Production URL' from this node and use it in your Airtable Automation script. This is how Airtable tells n8n to start."
},
"typeVersion": 1
},
{
"id": "aa293e3f-80ae-4d7d-822d-99060117f9d8",
"name": "Airtableからのトリガー",
"type": "n8n-nodes-base.webhook",
"position": [
-1520,
-16
],
"webhookId": "f4e69e57-40f0-4af9-b44d-17eb9389b427",
"parameters": {
"path": "f4e69e57-40f0-4af9-b44d-17eb9389b427",
"options": {}
},
"typeVersion": 2.1
},
{
"id": "5446b168-c78c-438f-9670-1a5e050a978f",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
-416
],
"parameters": {
"color": 3,
"width": 368,
"height": 560,
"content": "## Fetch Order & Customer Details\n\n### This node receives the recordId from the Webhook and uses it to look up the complete order record in your Airtable Orders table.\n\n### It gathers all the essential customer information needed for the Shopify order, such as the customer's name, email, and shipping address.\n\n### This step turns a simple ID into a full customer and order profile."
},
"typeVersion": 1
},
{
"id": "2f2c60e4-ffab-475a-9b09-5cd5bfa5e723",
"name": "注文と顧客詳細を取得",
"type": "n8n-nodes-base.airtable",
"position": [
-1056,
-16
],
"parameters": {
"id": "={{ $json.query.recordId }}",
"base": {
"__rl": true,
"mode": "list",
"value": "appQTd8PXDgHdjOpr",
"cachedResultUrl": "https://airtable.com/appQTd8PXDgHdjOpr",
"cachedResultName": "Dynamic Video Content"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblEXxxmfYYsMDLC9",
"cachedResultUrl": "https://airtable.com/appQTd8PXDgHdjOpr/tblEXxxmfYYsMDLC9",
"cachedResultName": "Orders"
},
"options": {}
},
"typeVersion": 2.1
},
{
"id": "d2faa646-73ed-4945-973c-9519a5ef172b",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-784,
-416
],
"parameters": {
"color": 3,
"width": 368,
"height": 560,
"content": "## Fetch Product Line Items \n\n### After getting the main order details, this node looks up the associated Order Line Items record.\n\n### It retrieves the specific products for the order, including the Product Name, Quantity, and Price. Without this step, Shopify wouldn't know what items to add to the cart.\n\n### This step builds the contents of the customer's order."
},
"typeVersion": 1
},
{
"id": "f95ca4c0-d248-45d7-b6f1-e232b625dc09",
"name": "商品ラインアイテムを取得",
"type": "n8n-nodes-base.airtable",
"position": [
-640,
-16
],
"parameters": {
"id": "={{ $json['Order Line Items'][0] }}",
"base": {
"__rl": true,
"mode": "list",
"value": "appQTd8PXDgHdjOpr",
"cachedResultUrl": "https://airtable.com/appQTd8PXDgHdjOpr",
"cachedResultName": "Dynamic Video Content"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblC9b18Rf1uZZW7m",
"cachedResultUrl": "https://airtable.com/appQTd8PXDgHdjOpr/tblC9b18Rf1uZZW7m",
"cachedResultName": "Order Line Items"
},
"options": {}
},
"typeVersion": 2.1
},
{
"id": "d26b1db9-f190-4ff5-9f9a-f8e24cb15fe0",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
-416
],
"parameters": {
"color": 3,
"width": 368,
"height": 576,
"content": "## Create the Order in Shopify\n\n### This is the core action of the workflow. It takes all the customer and product information gathered from Airtable and uses it to create a new order directly in your Shopify store.\n\n### The fields in this node are carefully mapped to pull data like First Name, Country, Product Name, and Quantity from the previous steps.\n\n### This node turns your Airtable data into a real Shopify transaction."
},
"typeVersion": 1
},
{
"id": "5f84993b-5a4b-4afb-b9b5-4afe10c5e86e",
"name": "Shopifyで注文を作成",
"type": "n8n-nodes-base.shopify",
"position": [
-208,
-16
],
"parameters": {
"limeItemsUi": {
"lineItemValues": [
{
"price": "={{ $json.Price }}",
"title": "={{ $json.Title }}",
"quantity": "={{ $json.Quantity }}",
"productId": "={{ $json['Product Name'] }}"
}
]
},
"authentication": "oAuth2",
"additionalFields": {
"email": "={{ $('Fetch Order & Customer Details').item.json['Email ID'] }}",
"shippingAddressUi": {
"shippingAddressValues": {
"zip": "={{ $('Fetch Order & Customer Details').item.json['Zip Code'] }}",
"city": "={{ $('Fetch Order & Customer Details').item.json.City }}",
"phone": "={{ $('Fetch Order & Customer Details').item.json.Phone }}",
"country": "={{ $('Fetch Order & Customer Details').item.json.Country }}",
"address1": "={{ $('Fetch Order & Customer Details').item.json['Address Line 1'] }}",
"address2": "={{ $('Fetch Order & Customer Details').item.json['Address Line 2'] }}",
"lastName": "={{ $('Fetch Order & Customer Details').item.json['Last Name'] }}",
"province": "={{ $('Fetch Order & Customer Details').item.json.Province }}",
"firstName": "={{ $('Fetch Order & Customer Details').item.json['First Name'] }}"
}
}
}
},
"typeVersion": 1
},
{
"id": "1a679ecb-190e-47b7-b8cc-e7a552ef265b",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
48,
-416
],
"parameters": {
"color": 3,
"width": 368,
"height": 576,
"content": "## Send Order Confirmation Email\n\n### Once the Shopify order is created successfully, this node sends a confirmation email to the customer.\n\n\n### It uses data from the new Shopify order (like order_number and total_price) to populate a professional HTML email template. You can customize the HTML in this node to match your brand's style.\n"
},
"typeVersion": 1
},
{
"id": "faaae486-32c7-4cf8-8c1b-15b2bb84ede0",
"name": "注文確認メールを送信",
"type": "n8n-nodes-base.gmail",
"position": [
176,
-16
],
"webhookId": "a4a8c440-78fa-487e-929a-3f3506078ca0",
"parameters": {
"sendTo": "samartian8@gmail.com",
"message": "=<div style=\"font-family: Arial, sans-serif; color: #333333; line-height: 1.5; max-width: 600px; margin: auto; padding: 20px; background-color: #f9f9f9; border-radius: 8px;\"> <h2 style=\"color: #4CAF50; text-align: center;\">Your Order is Confirmed!</h2> <p>Hi <strong> {{ $json.customer.first_name }} {{ $json.customer.last_name }}</strong>,</p> <p>Thank you for your order! We're excited to let you know that your order has been successfully placed and is being processed.</p> <h3>Order Summary</h3> <table style=\"width: 100%; border-collapse: collapse; margin-bottom: 20px;\"> <tr> <th style=\"text-align: left; border-bottom: 1px solid #ddd; padding: 8px;\">Order Number</th> <td style=\"padding: 8px;\"> {{ $json.order_number }}</td> </tr> <tr> <th style=\"text-align: left; border-bottom: 1px solid #ddd; padding: 8px;\">Order Date</th> <td style=\"padding: 8px;\">{{ new Date($json.created_at).toISOString().split('T')[0] }}\n\n </td> </tr> <tr> <th style=\"text-align: left; border-bottom: 1px solid #ddd; padding: 8px;\">Total Amount</th> <td style=\"padding: 8px;\">{{ $json.currency }} {{ $json.current_total_price }}</td> </tr> </table> <h3>Item Ordered</h3> <table style=\"width: 100%; border-collapse: collapse; margin-bottom: 20px;\"> <tr> <th style=\"text-align: left; border-bottom: 1px solid #ddd; padding: 8px;\">Product</th> <td style=\"padding: 8px;\">{{ $('Fetch Product Line Items').item.json['Product Name'] }} </td> </tr> <tr> <th style=\"text-align: left; border-bottom: 1px solid #ddd; padding: 8px;\">Quantity</th> <td style=\"padding: 8px;\">{{ $json.line_items[0].quantity }}</td> </tr> <tr> <th style=\"text-align: left; border-bottom: 1px solid #ddd; padding: 8px;\">Price</th> <td style=\"padding: 8px;\">{{ $json.current_subtotal_price_set.shop_money.amount }}</td> </tr> </table> <p>If you have any questions, feel free to reply to this email or contact our support team.</p> <p style=\"text-align: center;\"> <a href=\"{{$json[\"OrderLink\"]}}\" style=\"display: inline-block; padding: 10px 20px; background-color: #4CAF50; color: #ffffff; text-decoration: none; border-radius: 5px;\">View Your Order</a> </p> <p style=\"font-size: 12px; color: #777777; text-align: center; margin-top: 20px;\"> © 2025 Your Samartian. All rights reserved. </p> </div>",
"options": {},
"subject": "Order Confirmed !"
},
"typeVersion": 2.1
},
{
"id": "b8ce7156-635b-4294-b7dd-429aa4995401",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
608,
-416
],
"parameters": {
"color": 3,
"width": 368,
"height": 576,
"content": "## Close the Loop - Update Airtable Status\n\n### This is the final step. It takes the original recordId from the very beginning of the workflow and uses it to find the order record in your Airtable Orders table.\n\n\n### It then updates the 'Shopify Ordered' status to 'Done'. This is crucial because it prevents the Airtable Automation from triggering this workflow for the same order ever again.\n"
},
"typeVersion": 1
},
{
"id": "38c5e7da-e7ec-4dd5-8d52-4684b600483f",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
256
],
"parameters": {
"color": 3,
"width": 432,
"height": 560,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Confirm Email Sent?\n\n### This is a simple but important checkpoint. It checks the output from the Gmail node to confirm that the confirmation email was successfully sent.\n\n\n### If the email has the SENT label, the workflow proceeds. If not, it stops. This prevents us from marking the order as 'Done' in Airtable if the customer didn't receive their confirmation.\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "0899512f-4f91-4e92-91aa-4df4b3861d3c",
"name": "メール送信を確認?",
"type": "n8n-nodes-base.if",
"position": [
560,
304
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6ebeb00a-1bed-47dc-b84e-a83e4ea43b04",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.labelIds[0] }}",
"rightValue": "SENT"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "18b32ce7-74e4-42a0-ad1a-0e21502f3981",
"name": "ループを閉じる - Airtableステータスを更新",
"type": "n8n-nodes-base.airtable",
"position": [
752,
-32
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appQTd8PXDgHdjOpr",
"cachedResultUrl": "https://airtable.com/appQTd8PXDgHdjOpr",
"cachedResultName": "Dynamic Video Content"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblEXxxmfYYsMDLC9",
"cachedResultUrl": "https://airtable.com/appQTd8PXDgHdjOpr/tblEXxxmfYYsMDLC9",
"cachedResultName": "Orders"
},
"columns": {
"value": {
"id": "={{ $('Fetch Order & Customer Details').item.json.id }}",
"Shopify Ordered": "Done"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Order Number",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Order Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Country",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Address Line 1",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Address Line 1",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Address Line 2",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Address Line 2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "City",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "City",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Province",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Province",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Zip Code",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Zip Code",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email ID",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Email ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Order Line Items",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Order Line Items",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Trigger Shopify",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Trigger Shopify",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Shopify Ordered",
"type": "options",
"display": true,
"options": [
{
"name": "Pending",
"value": "Pending"
},
{
"name": "Done",
"value": "Done"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Shopify Ordered",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update"
},
"typeVersion": 2.1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e292d3d8-118d-45ef-aebc-1ed81c03bbfe",
"connections": {
"0899512f-4f91-4e92-91aa-4df4b3861d3c": {
"main": [
[
{
"node": "18b32ce7-74e4-42a0-ad1a-0e21502f3981",
"type": "main",
"index": 0
}
]
]
},
"aa293e3f-80ae-4d7d-822d-99060117f9d8": {
"main": [
[
{
"node": "2f2c60e4-ffab-475a-9b09-5cd5bfa5e723",
"type": "main",
"index": 0
}
]
]
},
"f95ca4c0-d248-45d7-b6f1-e232b625dc09": {
"main": [
[
{
"node": "5f84993b-5a4b-4afb-b9b5-4afe10c5e86e",
"type": "main",
"index": 0
}
]
]
},
"5f84993b-5a4b-4afb-b9b5-4afe10c5e86e": {
"main": [
[
{
"node": "faaae486-32c7-4cf8-8c1b-15b2bb84ede0",
"type": "main",
"index": 0
}
]
]
},
"faaae486-32c7-4cf8-8c1b-15b2bb84ede0": {
"main": [
[
{
"node": "0899512f-4f91-4e92-91aa-4df4b3861d3c",
"type": "main",
"index": 0
}
]
]
},
"2f2c60e4-ffab-475a-9b09-5cd5bfa5e723": {
"main": [
[
{
"node": "f95ca4c0-d248-45d7-b6f1-e232b625dc09",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Airtable からの販売注文で QuickBooks 請求書発行と顧客作成を自動化
Airtable と QuickBooks 間の自動化ワークフロー
If
Code
Merge
+
If
Code
Merge
35 ノードIntuz
コンテンツ作成
Git コミットコマンドに基づき GitHub PR を自動生成および Jira を更新(複数リポジトリ対応)
Gitのコミットコマンドに基づいてGitHubのPRを自動作成し、Jiraを更新(マルチリポジトリ)
If
Code
Jira
+
If
Code
Jira
39 ノードIntuz
Apify、Google Gemini、Sheetsを使ってUpworkの提案生成をリアルタイムで自動化
Upwork提案生成をAIで自動化するにはApify、Google Gemini、Sheetsを活用しましょう
If
Set
Gmail
+
If
Set
Gmail
25 ノードIntuz
リード獲得
Airtable から QuickBooks へ自動費用レポートの転送
Airtable から QuickBooks へ費用レポートの自動化
If
Merge
Airtable
+
If
Merge
Airtable
20 ノードIntuz
請求書処理
Stripe決済と顧客情報から自動のにQuickBooksの領収書を生成
Stripe決済からQuickBooks売上精算書の生成および顧客作成を自動化
If
Code
Merge
+
If
Code
Merge
17 ノードIntuz
その他
私のワークフロー23
包括のな請求書自動化:Airtable、QuickBooks、Stripe
If
Code
Merge
+
If
Code
Merge
46 ノードIntuz
請求書処理
ワークフロー情報
難易度
中級
ノード数14
カテゴリー-
ノードタイプ6
作成者
Intuz
@intuzWorkflow automation can help automate your routine activities and help saves $$$, as well as hours of time. As a boutique tech consulting company, Intuz help businesses with custom AI/ML, AI Workflow Automations, and software development. Automate your business workflow for: Sales Marketing Accounting Finance Operations E-Commerce Customer Support Admin & Backoffice Logistics & Supply Chain
外部リンク
n8n.ioで表示 →
このワークフローを共有