This workflow corresponds to n8n.io template #6534 — we link there as the canonical source.
This workflow follows the Gmail → 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "7d32401a-90d3-462d-ab44-435e92371afb",
"name": "Generate Proposal Copy",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
220,
0
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You are a helpful, intelligent writing assistant."
},
{
"content": "=Your task is to generate a proposal using input data from a form. This proposal should be highly customized, specific, and high-quality, considering we're going to be sending it immediately after you're done.\n\nContext: we are an automation/no-code agency that develops systems revolving around growth, revenue ops, etc.\n\nThe proposal template we're using has many fields. You must return these fields in one JSON object.\n\nUse this format:\n\n{\n \"proposalTitle\": \"\",\n \"problemTitle\": \"\",\n \"problemText\": \"\",\n \"solutionTitle\": \"\",\n \"solutionText\": \"\",\n \"scope1\": \"\",\n \"scope2\": \"\",\n \"scope3\": \"\",\n \"scope4\": \"\",\n\"deliverable1\":\"\",\n\"deliverable2\":\"\",\n\"deliverable3\":\"\",\n \"timeline1\": \"\",\n \"timeline2\": \"\",\n \"timeline3\": \"\"\n}\n\nRules:\n1. Use a spartan, casual tone of voice.\n2. Be to-the-point but professional\u2014assume you're writing to a sophisticated audience.\n3. Ensure that all fields are filled out. Do not miss a field or leave any variables empty.\n4. For problemText and solutionText, make sure to number the responses (usually 3, make sure they're inside of the string).\n5. There will only ever be 4 scoping bullet points, 3 timeline and 3 deliverable bullet points\u2014stick to this precisely. For the timelines, only say the amount of days (\"x days\")"
},
{
"content": "={\"problem\":\"Right now they're managing all of their leads & projects in a massive Google Sheet. The key issues: their system is disorganized, incapable of scaling, and provides little in the way of accountability. Team members are manually updating fields, copying and pasting data, and there is no single source of truth.\",\n\"solution\":\"Migration to a dedicated CRM & project management solution like Monday.com, and a bespoke setup that includes a CRM board to handle new leads, alongside a PM board to handle new and ongoing projects. The creation of new records, and various administrative tasks alongside them, will be handled using both built in Monday automations and third party tools. I'll also create a process library of SOPs to improve operations more generally.\",\n\"deliverables\":\"completed Monday CRM, PM boards, process library of SOPs, training materials, video\",\n\"timeline\":\"two weeks\",\n\"companyDescription\":\"Robert Half is an executive recruiting firm that works primarily out of NYC.\"}"
},
{
"role": "assistant",
"content": "={\n \"proposalTitle\": \"Scalable Project Management system for Robert Half\",\n \"problem\": {\n \"title\": \"Your systems don't scale & you're paying too much\",\n \"text\": \"1. You're using systems that don't scale\\n\\nCurrently, your team spends a ridiculous amount of time manually updating fields in a Google Sheet. This is resource-intensive, inefficient, and tedious\u2014it's easy for a small mistake to cascade into a large one, and this has happened multiple times. Perhaps more importantly, there's no accountability, so when said problems inevitably arise, it's impossible to trace it back to its root and solve it.\\n\\n2. You're doing (and paying) too much\\n\\nGoogle Sheets is free. But the impact on your business has been costly. Given the archaic nature of your current setup, specific daily tasks are difficult to operationalize\u2014leading to a large chunk of your employee/contractor costs going to admin tasks that are easily automatable.\\n\\n3. You're missing a ton of functionality\\n\\nGoogle Sheets is primarily textual, and misses the rich functionality afforded by more intentional CRMs. For instance, you can't assign owners to records, or automatically notify team members when something needs to happen (instead, everyone has to be online all the time \"just in case\"), or take advantage of more effective views to represent data flow.\"\n },\n \"solution\": {\n \"title\": \"Scalable systems & built-in project management\",\n \"text\": \"1. First, I'll migrate & build you a scalable system:\\n\\nI'll help you migrate to Monday.com, a dedicated CRM and project management platform. This will address many of the scalability issues inherent to Google Sheets\u2014your team will be able to assign owners to records, receive notifications on important tasks, and communicate with eachother in a public, accountable way. \\n\\nIn addition, I'll build bespoke automations (both in Monday and using a third party tool, Make.com) to eliminate the need for manual record creation and related administrative functions. This will improve cycle time, better the quality of life of your staff, and decrease the likelihood of a costly error.\\n\\n2. Then, I'll help you improve cost efficiency:\\n\\nNext, we'll operationalize your procedures, add them to a library of SOPs, and begin scoping automated solutions to improve the effectiveness of each task. Much of the knowledge in your company currently exists in conversation or hidden direct messages and threads\u2014turning this into a central, accessible knowledge base will streamline new hire onboarding, significantly improve margins on tasks, and make your team much more flexible.\"\n },\n \"scope\": {\n \"1\": \"We'll migrate your current Google Sheets set-up to Monday.com, a scalable CRM & project management system\",\n \"2\": \"We'll create two boards\u2014a CRM board and a Project Management board\u2014which will be your single source of truth for business operations moving forward.\",\n \"3\": \"We'll build you a process library that exhaustively covers your business SOPs, which will let your team train faster and delegate work more effectively.\",\n \"4\": \"We'll produce an end-to-end piece of video documentation of the system upon delivery.\"},\n\"deliverable\": {\n \"1\": \"Sheets -> Monday Migration\",\n \"2\": \"SOPs & Process Library\",\n \"3\": \"Video Documentation\"\n }\n \"timeline\": {\n \"1\": \"5 business days\",\n \"2\": \"3 business days\",\n \"3\": \"1 business day\"\n }\n}"
},
{
"content": "={\"problem\":\"{{ $json.form_response.answers[5].text }}\",\n\"solutionIPitched\":\"{{ $json.form_response.answers[6].text }}\"\"\n\"deliverables\":\"{{ $json.form_response.answers[7].text }}\",\n\"timeline\":\"{{ $json.form_response.answers[8].text }}\",\n\"companyDescription\":\"{{ $json.form_response.answers[4].text }}\"}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "2526fb73-6b90-4434-93d6-d605fdd702b8",
"name": "Create PandaDoc Proposal",
"type": "n8n-nodes-base.httpRequest",
"position": [
620,
0
],
"parameters": {
"url": "https://api.pandadoc.com/public/v1/documents",
"method": "POST",
"options": {},
"jsonBody": "={\n \"owner\": {\n \"email\": \"abdul@builtbyabdul.com\"\n },\n \"template_uuid\": \"<template id>\",\n \"name\": \"Proposal for {{ $('Sales Call Form').item.json.form_response.answers[3].text }}\",\n \"metadata\": {\n \"clickup_id\": \"{{ $('Sales Call Form').item.json.form_response.hidden.clickup_id }}\",\n \"project_type\": \"proposal\",\n \"source\": \"typeform_automation\"\n },\n \"fields\": {\n \"Initials\": {\n \"value\": \"AM\"\n }\n },\n \"tokens\": [\n {\n \"name\": \"Client.ProposalTitle\",\n \"value\": \"{{ $json.message.content.proposalTitle }}\"\n },\n {\n \"name\": \"Client.ProblemTitle\",\n \"value\": \"{{ $json.message.content.problemTitle }}\"\n },\n {\n \"name\": \"Client.ProblemText\",\n \"value\": \"{{ $json.message.content.problemText.replace(/\\n/g, '\\\\n') }}\"\n },\n {\n \"name\": \"Client.SolutionTitle\",\n \"value\": \"{{ $json.message.content.solutionTitle }}\"\n },\n {\n \"name\": \"Client.SolutionText\",\n \"value\": \"{{ $json.message.content.solutionText.replace(/\\n/g, '\\\\n') }}\"\n },\n {\n \"name\": \"Client.Scope1\",\n \"value\": \"{{ $json.message.content.scope1 }}\"\n },\n {\n \"name\": \"Client.Scope2\",\n \"value\": \"{{ $json.message.content.scope2 }}\"\n },\n {\n \"name\": \"Client.Scope3\",\n \"value\": \"{{ $json.message.content.scope3 }}\"\n },\n {\n \"name\": \"Client.Scope4\",\n \"value\": \"{{ $json.message.content.scope4 }}\"\n },\n {\n \"name\": \"Client.Company\",\n \"value\": \"{{ $('Sales Call Form').item.json.form_response.answers[3].text }}\"\n },\n {\n \"name\": \"Client.LastName\",\n \"value\": \"{{ $('Sales Call Form').item.json.form_response.answers[1].text }}\"\n },\n {\n \"name\": \"Client.FirstName\",\n \"value\": \"{{ $('Sales Call Form').item.json.form_response.answers[0].text }}\"\n },\n {\n \"name\": \"Client.Timeline1\",\n \"value\": \"{{ $json.message.content.timeline1 }}\"\n },\n {\n \"name\": \"Client.Timeline2\",\n \"value\": \"{{ $json.message.content.timeline2 }}\"\n },\n {\n \"name\": \"Client.Timeline3\",\n \"value\": \"{{ $json.message.content.timeline3 }}\"\n },\n {\n \"name\": \"Client.Deliverable1\",\n \"value\": \"{{ $json.message.content.deliverable1 }}\"\n },\n {\n \"name\": \"Client.Deliverable2\",\n \"value\": \"{{ $json.message.content.deliverable2 }}\"\n },\n {\n \"name\": \"Client.Deliverable3\",\n \"value\": \"{{ $json.message.content.deliverable3 }}\"\n }\n ],\n \"recipients\": [\n {\n \"delivery_methods\": {\n \"email\": true\n },\n \"redirect\": {\n \"is_enabled\": false,\n \"url\": \"https://example.com\"\n },\n \"type\": \"recipient\",\n \"role\": \"Client\",\n \"email\": \"{{ $('Sales Call Form').item.json.form_response.answers[2].email }}\",\n \"first_name\": \"{{ $('Sales Call Form').item.json.form_response.answers[0].text }}\",\n \"last_name\": \"{{ $('Sales Call Form').item.json.form_response.answers[1].text }}\"\n }\n ],\n \"pricing_tables\": [\n {\n \"name\": \"Pricing Table 1\",\n \"options\": {\n \"currency\": \"USD\"\n },\n \"sections\": [\n {\n \"rows\": [\n {\n \"data\": {\n \"qty\": 1,\n \"name\": \"{{ $json.message.content.proposalTitle }}\",\n \"price\": \"{{ $('Sales Call Form').item.json.form_response.answers[9].number }}\"\n },\n \"options\": {\n \"optional\": false,\n \"qty_editable\": false,\n \"optional_selected\": false\n }\n }\n ],\n \"title\": \"Pricing Section\",\n \"default\": true\n }\n ]\n }\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "API-Key <your_api_key>"
},
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "91d05623-2d1c-4a38-95aa-d7f7385de79d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
-100
],
"parameters": {
"color": 6,
"width": 880,
"height": 300,
"content": "## Fill out quick form after call -> Generate Personalized PandaDoc Proposal"
},
"typeVersion": 1
},
{
"id": "5fa8478e-1e09-4510-86ab-54bc46f7def5",
"name": "ClickUp",
"type": "n8n-nodes-base.clickUp",
"position": [
960,
0
],
"parameters": {
"id": "={{ $('Sales Call Form').item.json.form_response.hidden.clickup_id }}",
"operation": "update",
"updateFields": {
"content": "=Company Summary: {{ $('Sales Call Form').item.json.form_response.answers[4].text }} \n\nProblem: {{ $('Sales Call Form').item.json.form_response.answers[5].text }}\n\nSolution I pitched: {{ $('Sales Call Form').item.json.form_response.answers[6].text }}\n\nDeliverables: {{ $('Sales Call Form').item.json.form_response.answers[7].text }}\n\nHow long: {{ $('Sales Call Form').item.json.form_response.answers[8].text }}"
},
"authentication": "oAuth2"
},
"credentials": {
"clickUpOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "96826976-e7c8-4eee-8245-47433633a4e7",
"name": "Add Company Name",
"type": "n8n-nodes-base.clickUp",
"position": [
1260,
-260
],
"parameters": {
"task": "={{ $json.id }}",
"field": "={{ $json.custom_fields[0].id }}",
"value": "={{ $('Sales Call Form').item.json.form_response.answers[3].text }}",
"operation": "setCustomField",
"authentication": "oAuth2"
},
"credentials": {
"clickUpOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b8a6c4e1-08bb-4106-ad54-71b443b25638",
"name": "Quote",
"type": "n8n-nodes-base.clickUp",
"position": [
1260,
200
],
"parameters": {
"task": "={{ $('ClickUp').item.json.id }}",
"field": "={{ $('ClickUp').item.json.custom_fields[9].id }}",
"value": "={{ $('Sales Call Form').item.json.form_response.answers[9].number }}",
"operation": "setCustomField",
"authentication": "oAuth2"
},
"credentials": {
"clickUpOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "67bc4dd5-1a1c-4943-bd53-2961da61106f",
"name": "Proposal URL",
"type": "n8n-nodes-base.clickUp",
"position": [
1260,
-20
],
"parameters": {
"task": "={{ $('ClickUp').item.json.id }}",
"field": "={{ $json.custom_fields[8].id }}",
"value": "=https://app.pandadoc.com/a/#/documents/{{ $('Create PandaDoc Proposal').item.json.id }}",
"operation": "setCustomField",
"authentication": "oAuth2"
},
"credentials": {
"clickUpOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "3cf561e4-17ee-41ab-b282-b670a381e7b6",
"name": "Sales Call Form",
"type": "n8n-nodes-base.typeformTrigger",
"position": [
0,
0
],
"parameters": {
"formId": "RADFsrT7",
"onlyAnswers": false,
"simplifyAnswers": false
},
"credentials": {
"typeformApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "368525d7-31ad-4564-ae21-85f997f8b03f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-320
],
"parameters": {
"color": 6,
"width": 580,
"height": 720,
"content": "## Update Lead in CRM -> Add company name, proposal URL & quote fields"
},
"typeVersion": 1
},
{
"id": "4b02be17-6aaa-4fda-a07c-602ff68e96e0",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1500,
-100
],
"parameters": {
"color": 3,
"width": 260,
"height": 260,
"content": "## Create Email Draft"
},
"typeVersion": 1
},
{
"id": "847ab08d-ec61-4f24-b4b3-59427080e72a",
"name": "Create a Draft",
"type": "n8n-nodes-base.gmail",
"position": [
1560,
-20
],
"parameters": {
"message": "=Hey {{ $('Sales Call Form').item.json.form_response.answers[0].text }}, thanks for the great call.\n<br><br>\nI put together a detailed proposal for you below. Please take a look at your earliest convenience and let me know your thoughts.\n<br><br>\n(proposal link)\n<br><br>\nHit me if you have any q's. You should be redirected pay after you sign, so I can get started soon as that's sorted.\n<br><br>\nCheers,<br>\nAbdul",
"options": {
"sendTo": "={{ $('Sales Call Form').item.json.form_response.answers[2].email }}"
},
"subject": "sent you the Proposal",
"resource": "draft",
"emailType": "html"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "91d87b73-5f30-404b-a497-615453441f84",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
-560
],
"parameters": {
"width": 680,
"height": 1460,
"content": "# Generate a personalized PandaDoc proposal after sales call\n## Overview\nStop spending hours formatting proposals. This workflow turns a short post-call form into a high-converting, fully-personalized PandaDoc proposal\u2014plus updates your CRM and drafts the follow-up email for you.\n\nAfter a sales call, just fill out a 3-minute form summarizing key pain points, solutions pitched, and the price. The workflow uses AI to generate polished proposal copy, then builds a PandaDoc draft using dynamic data mapped into the JSON body (which you can fully customize per business). It also updates the lead record in ClickUp with the proposal link, company name, and quote\u2014then creates an email draft in Gmail, ready to send.\n\n### Who\u2019s it for\n- Freelancers and consultants sending service proposals \n- Agencies closing deals over sales calls \n- Sales reps who want to automate proposal follow-up \n- Teams using ClickUp as their lightweight CRM \n\n### How it works\n- After a call, fill out a short form with client details, pitch notes, and price \n- AI generates professional proposal copy based on form input \n- Proposal is formatted and sent to PandaDoc via HTTP request \n- ClickUp lead is updated with:\n - Company Name \n - Proposal URL \n - Quote/price \n- A Gmail draft is created using the proposal link and a thank-you message \n\n### Example use case\n> You hop off a call, fill out: \n> - Prospect: Shopify agency \n> - Pain: No lead gen system \n> - Solution: Automated cold outreach \n> - Price: $2,500/month \n> \n> 3 minutes later: PandaDoc proposal is ready, CRM is updated, and your email draft is waiting to be sent.\n\n### How to set up\n1. Replace the form with your preferred tool (e.g. Tally, Typeform) \n2. Connect PandaDoc API and structure your proposal template \n3. Customize the JSON body inside the HTTP request to match your business \n4. Link your ClickUp space and custom fields \n5. Connect Gmail (or other email tool) for final follow-up draft \n\n### Requirements\n- Form tool for capturing sales call notes \n- OpenAI or LLM key for generating proposal copy \n- PandaDoc API access \n- ClickUp custom fields set up for lead tracking \n- Gmail integration\n\n### How to customize\n- Customize your PandaDoc proposal fields in the JSON body of the HTTP node \n- Replace ClickUp with another CRM like HubSpot or Notion \n- Adjust AI tone (casual, premium, corporate) for proposal writing \n- Add Slack or Telegram alerts when the draft is ready \n- Add PDF generation or auto-send email step\n"
},
"typeVersion": 1
},
{
"id": "93e9fd9e-7ebb-4d26-b9d0-7c71d54108e4",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
240
],
"parameters": {
"color": 5,
"width": 440,
"height": 240,
"content": "## Hey, I'm Abdul \ud83d\udc4b\n### I build growth systems for consultants & agencies. If you want to work together or need help automating your business, check out my website: \n### **https://www.builtbyabdul.com/**\n### Or email me at **abdul@buildabdul.com**\n### Have a lovely day ;)`"
},
"typeVersion": 1
}
],
"connections": {
"ClickUp": {
"main": [
[
{
"node": "Add Company Name",
"type": "main",
"index": 0
},
{
"node": "Quote",
"type": "main",
"index": 0
},
{
"node": "Proposal URL",
"type": "main",
"index": 0
}
]
]
},
"Proposal URL": {
"main": [
[
{
"node": "Create a Draft",
"type": "main",
"index": 0
}
]
]
},
"Sales Call Form": {
"main": [
[
{
"node": "Generate Proposal Copy",
"type": "main",
"index": 0
}
]
]
},
"Add Company Name": {
"main": [
[]
]
},
"Generate Proposal Copy": {
"main": [
[
{
"node": "Create PandaDoc Proposal",
"type": "main",
"index": 0
}
]
]
},
"Create PandaDoc Proposal": {
"main": [
[
{
"node": "ClickUp",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
clickUpOAuth2ApigmailOAuth2openAiApitypeformApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Stop spending hours formatting proposals. This workflow turns a short post-call form into a high-converting, fully-personalized PandaDoc proposal—plus updates your CRM and drafts the follow-up email for you.
Source: https://n8n.io/workflows/6534/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow automatically handles new GitHub issues by reading and understanding them using AI, then taking multiple actions simultaneously — creating tasks, sending notifications, and keeping every
Impress your leads with ultra-personalized “thank you” emails that look hand-written — sent automatically seconds after they submit your intake form.
This intelligent email automation workflow helps you maximize engagement through domain-based outreach. It utilizes AI-powered personalization and strategic follow-ups to increase response rates. The
Send a target niche and location via Telegram message Workflow discovers businesses via Google Maps API AI enriches contacts with email and LinkedIn data via Serper GPT-4o scores and qualifies each le
What it is An automated LinkedIn content system that takes a simple form (idea + optional file), generates LinkedIn posts with OpenAI, stores them in Notion, builds Google Slides carousels, and auto-p