AutomationFlowsGeneral › Automate Quote Approval & Email Notifications

Automate Quote Approval & Email Notifications

Original n8n title: Auto-approve Workflow Copy

Auto-Approve Workflow copy. Uses emailSend, httpRequest, respondToWebhook. Webhook trigger; 9 nodes.

Webhook trigger★★★★☆ complexity9 nodesEmail SendHTTP Request
General Trigger: Webhook Nodes: 9 Complexity: ★★★★☆ Added:

This workflow follows the Emailsend → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Auto-Approve Workflow copy",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "auto-approve",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "7c406ce2-1f98-4130-8032-85fd35155a06",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        -1008,
        112
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "orderId",
              "value": "={{ $json.body.orderId }}"
            },
            {
              "name": "totalPrice",
              "value": "={{ $json.body.orderData.pricing.totalPrice }}"
            },
            {
              "name": "customerEmail",
              "value": "={{ $json.body.orderData.customerEmail }}"
            }
          ]
        },
        "options": {}
      },
      "id": "889898df-3c7f-456e-a581-f9292a56d85d",
      "name": "Set Variables",
      "type": "n8n-nodes-base.set",
      "typeVersion": 1,
      "position": [
        -800,
        112
      ]
    },
    {
      "parameters": {
        "fromEmail": "email.verify.921@gmail.com",
        "toEmail": "={{ $json.body.orderData.customerEmail }}",
        "subject": "=Quote Ready for Approval - Order {{ $json.body.orderId }}",
        "options": {}
      },
      "id": "23913519-f803-47bb-9366-247cdf48f7bc",
      "name": "Send Quote Email",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        -608,
        112
      ],
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "resume": "webhook",
        "httpMethod": "POST",
        "options": {}
      },
      "id": "0d37c00c-3246-4ad5-ac68-6db3786d662c",
      "name": "Wait for Customer Response",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1,
      "position": [
        -400,
        112
      ]
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.body.action }}",
              "operation": "contains",
              "value2": "=approved"
            }
          ]
        }
      },
      "id": "a3a3de97-2ff6-44eb-8bfd-dced7c9691db",
      "name": "Check If Approved",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        -208,
        112
      ]
    },
    {
      "parameters": {
        "url": "=http://backend:3000/api/v1/orders/{{ $json.body.orderId }}/approve",
        "allowUnauthorizedCerts": true,
        "jsonParameters": true,
        "options": {}
      },
      "id": "c69317a1-7458-400d-928f-7726b1ee8a58",
      "name": "MIS Handoff",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "fromEmail": "email.verify.921@gmail.com",
        "toEmail": "={{ $json.body.orderData.customerEmail }}",
        "subject": "=Order Approved - Order {{ $json.body.orderId }}",
        "options": {}
      },
      "id": "afecf362-75a6-4dd6-8ca7-a2345658bf9d",
      "name": "Send Approval Confirmation",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        208,
        0
      ],
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "fromEmail": "email.verify.921@gmail.com",
        "toEmail": "={{ $json.body.orderData.customerEmail }}",
        "subject": "=Order Declined - Order {{ $json.body.orderId }}",
        "options": {}
      },
      "id": "c7cea602-6afd-4f69-9231-7da570aaa08c",
      "name": "Send Rejection Notification",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        0,
        208
      ],
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ success: true, message: 'Workflow started', resumeUrl: $execution.resumeUrl, orderId: $json.body.orderId }) }}",
        "options": {}
      },
      "id": "0566b1ea-b8b3-4daa-9c85-10ccfa53b49e",
      "name": "Webhook Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        -800,
        304
      ]
    }
  ],
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Set Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Variables": {
      "main": [
        [
          {
            "node": "Webhook Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook Response": {
      "main": [
        [
          {
            "node": "Send Quote Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Quote Email": {
      "main": [
        [
          {
            "node": "Wait for Customer Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Customer Response": {
      "main": [
        [
          {
            "node": "Check If Approved",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If Approved": {
      "main": [
        [
          {
            "node": "MIS Handoff",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Rejection Notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MIS Handoff": {
      "main": [
        [
          {
            "node": "Send Approval Confirmation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "availableInMCP": false
  },
  "versionId": "bf36958a-9968-40f0-b37f-4a8bb38265d1",
  "id": "5SBFEpejPLEvWb4Y",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Auto-Approve Workflow copy. Uses emailSend, httpRequest, respondToWebhook. Webhook trigger; 9 nodes.

Source: https://github.com/uditgoyaludit/Print-Estimator-/blob/11ffed1c5f77afeb58c92f9c91b88d0239e9692d/n8n-workflows/auto-approve.json — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Demo Workflow How To Use Workflowstaticdata. Uses noOp, httpRequest, scheduleTrigger, stickyNote. Webhook trigger; 9 nodes.

HTTP Request
General

AI Support Ticket Router & Auto-Reply (Ollama). Uses httpRequest. Webhook trigger; 7 nodes.

HTTP Request
General

BIH — Quote Auto-Reply. Uses emailSend. Webhook trigger; 5 nodes.

Email Send
General

New Workflow Template (Auto-Export). Uses httpRequest, respondToWebhook. Webhook trigger; 4 nodes.

HTTP Request
General

Respond With File Download To Incoming Http Request. Uses httpRequest, respondToWebhook. Webhook trigger; 3 nodes.

HTTP Request