{
  "name": "Generate and email PDF quotes from Airtable via Gmail and Google Drive",
  "nodes": [
    {
      "id": "fb92f0b5-ccbf-4b7c-89ec-313dfa46f64b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -176
      ],
      "parameters": {
        "width": 460,
        "height": 720,
        "content": "### Generate and email PDF quotes from Airtable records\n\nIf you're managing quotes in Airtable and still copying data into a Google Doc or Word template every time, this saves you the hassle. Hit the "
      }
    },
    {
      "id": "109c5ea5-36e0-4873-b097-d552e3c32e27",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        -16
      ],
      "parameters": {
        "width": 260,
        "height": 140,
        "content": "## 1. Trigger\nWebhook receives a POST with the Airtable record ID. You can call this from an Airtable automation or any HTTP client."
      }
    },
    {
      "id": "d00df63f-5a6b-46f2-a35d-89d7ef437000",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1632,
        320
      ],
      "parameters": {
        "width": 280,
        "height": 140,
        "content": "## 2. Your settings\nAll the stuff you need to change is here. Business name, email, brand color, Drive folder, etc."
      }
    },
    {
      "id": "01d21184-8b87-40c2-885a-20a0d870128b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1952,
        -32
      ],
      "parameters": {
        "width": 260,
        "height": 140,
        "content": "## 3. Pull the quote\nGrabs the record from Airtable using the ID from the webhook."
      }
    },
    {
      "id": "4edd844f-4dfa-4ce8-9ea0-4f5b1bab1ded",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2256,
        336
      ],
      "parameters": {
        "width": 280,
        "height": 140,
        "content": "## 4. Build the quote\nThis is where the magic happens. Parses line items, calculates totals, and builds a clean HTML document you can customize."
      }
    },
    {
      "id": "0886b69d-3aca-44f3-827f-16f30160f58f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2576,
        -16
      ],
      "parameters": {
        "width": 964,
        "height": 524,
        "content": "## 5. PDF, save, and send\nConverts the HTML to PDF, uploads it to your Drive folder, and emails it to the client. The Airtable record gets updated with the link so you know it went out."
      }
    },
    {
      "id": "56aceb31-a772-4d06-930e-e9a0ecc0589c",
      "name": "Quote Generation Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        1424,
        144
      ]
    },
    {
      "id": "922a11d6-8e04-46a6-8543-a95503462e3e",
      "name": "Configure Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        1712,
        144
      ]
    },
    {
      "id": "c94a4cbd-8729-455c-902a-12140c5b2a71",
      "name": "Read Quote from Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2032,
        144
      ]
    },
    {
      "id": "c8ddfdd5-3799-431c-a8ad-935956bc6c29",
      "name": "Build HTML Quote",
      "type": "n8n-nodes-base.code",
      "position": [
        2336,
        144
      ]
    },
    {
      "id": "c1c7d91e-fba6-4889-9c59-9f6ebea9fbe2",
      "name": "Convert HTML to PDF",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2656,
        144
      ]
    },
    {
      "id": "595e2868-a63c-4b14-abe1-24f145570ac6",
      "name": "Download PDF File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2880,
        144
      ]
    },
    {
      "id": "6faf7eea-642f-4895-9006-4eae25dd3b86",
      "name": "Save PDF to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3104,
        80
      ]
    },
    {
      "id": "3750061f-b38b-4f3f-894a-ae1ffa1bc385",
      "name": "Email Quote to Client",
      "type": "n8n-nodes-base.gmail",
      "position": [
        3104,
        288
      ]
    },
    {
      "id": "ef828708-bc98-4797-a8a8-5fc14336d654",
      "name": "Update Airtable Status",
      "type": "n8n-nodes-base.airtable",
      "position": [
        3344,
        144
      ]
    }
  ],
  "connections": {
    "Build HTML Quote": {
      "main": [
        [
          {
            "node": "Convert HTML to PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download PDF File": {
      "main": [
        [
          {
            "node": "Save PDF to Google Drive",
            "type": "main",
            "index": 0
          },
          {
            "node": "Email Quote to Client",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configure Settings": {
      "main": [
        [
          {
            "node": "Read Quote from Airtable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert HTML to PDF": {
      "main": [
        [
          {
            "node": "Download PDF File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Quote Generation Webhook": {
      "main": [
        [
          {
            "node": "Configure Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Quote from Airtable": {
      "main": [
        [
          {
            "node": "Build HTML Quote",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save PDF to Google Drive": {
      "main": [
        [
          {
            "node": "Update Airtable Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}