{
  "name": "07 Webhook - Google Sheets Production Template",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "google-sheets-production-demo",
        "responseMode": "responseNode",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        220,
        320
      ],
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0071",
      "name": "Webhook",
      "webhookId": "google-sheets-production-demo"
    },
    {
      "parameters": {
        "keepOnlySet": false,
        "values": {
          "string": [
            {
              "name": "created_at",
              "value": "={{$now}}"
            },
            {
              "name": "source",
              "value": "webhook"
            },
            {
              "name": "order_name",
              "value": "={{$json.body.name || ''}}"
            },
            {
              "name": "order_email",
              "value": "={{$json.body.email || ''}}"
            },
            {
              "name": "course_name",
              "value": "={{$json.body.course || ''}}"
            },
            {
              "name": "payment_status",
              "value": "={{$json.body.paid ? 'paid' : 'unpaid'}}"
            },
            {
              "name": "notes",
              "value": "={{$json.body.notes || ''}}"
            }
          ],
          "number": [
            {
              "name": "order_amount",
              "value": "={{$json.body.amount || 0}}"
            }
          ],
          "boolean": [
            {
              "name": "has_required_fields",
              "value": "={{!!($json.body.name && $json.body.email && $json.body.course)}}"
            }
          ]
        },
        "options": {}
      },
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0072",
      "name": "Normalize Input",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        500,
        320
      ]
    },
    {
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$json.has_required_fields}}",
              "operation": "isTrue"
            }
          ]
        }
      },
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0073",
      "name": "Has Required Fields",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        760,
        320
      ]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID/edit#gid=0",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Orders",
          "mode": "name"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "created_at": "={{$json.created_at}}",
            "source": "={{$json.source}}",
            "order_name": "={{$json.order_name}}",
            "order_email": "={{$json.order_email}}",
            "course_name": "={{$json.course_name}}",
            "order_amount": "={{$json.order_amount}}",
            "payment_status": "={{$json.payment_status}}",
            "notes": "={{$json.notes}}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "created_at",
              "displayName": "created_at",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "source",
              "displayName": "source",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "order_name",
              "displayName": "order_name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "order_email",
              "displayName": "order_email",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "course_name",
              "displayName": "course_name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "order_amount",
              "displayName": "order_amount",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "payment_status",
              "displayName": "payment_status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "notes",
              "displayName": "notes",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1020,
        220
      ],
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0074",
      "name": "Append row in sheet"
    },
    {
      "parameters": {
        "keepOnlySet": false,
        "values": {
          "boolean": [
            {
              "name": "ok",
              "value": true
            }
          ],
          "string": [
            {
              "name": "message",
              "value": "Order saved to Google Sheets"
            },
            {
              "name": "saved_email",
              "value": "={{$node[\"Normalize Input\"].json.order_email}}"
            }
          ]
        },
        "options": {}
      },
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0075",
      "name": "Success Response",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        1260,
        220
      ]
    },
    {
      "parameters": {
        "keepOnlySet": true,
        "values": {
          "boolean": [
            {
              "name": "ok",
              "value": false
            }
          ],
          "string": [
            {
              "name": "message",
              "value": "Missing required fields. Required: name, email, course"
            }
          ]
        },
        "options": {}
      },
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0076",
      "name": "Error Response",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        1020,
        420
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{$json}}",
        "options": {
          "responseCode": 200
        }
      },
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.4,
      "position": [
        1500,
        320
      ],
      "id": "79917335-58f7-4dcb-9bb1-b0ba6bde0077",
      "name": "Respond to Webhook"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Normalize Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Input": {
      "main": [
        [
          {
            "node": "Has Required Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has Required Fields": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Success Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Success Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Error Response": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {},
  "meta": {}
}
