Suivi de la création de propositions commerciales axées sur l'IA avec PandaDoc, ClickUp CRM et Gmail
Ceci est unCRM, Multimodal AIworkflow d'automatisation du domainecontenant 13 nœuds.Utilise principalement des nœuds comme Gmail, ClickUp, HttpRequest, TypeformTrigger, OpenAi. Créer des propositions de vente pilotées par l'IA avec PandaDoc, ClickUp CRM et Gmail pour le suivi
- •Compte Google et informations d'identification Gmail API
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API OpenAI
Nœuds utilisés (13)
Catégorie
{
"meta": {
"instanceId": "a88d54d0dc140647df8f628579b3d5aae0dedb13c983a1f5c11ee14f54f18774",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "7d32401a-90d3-462d-ab44-435e92371afb",
"name": "Générer le texte de la proposition",
"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—assume 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—stick 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—it'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—leading 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—your 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—turning 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—a CRM board and a Project Management board—which 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": {
"id": "E9waf1c33TsN4RCh",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "2526fb73-6b90-4434-93d6-d605fdd702b8",
"name": "Créer une proposition PandaDoc",
"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": "Note adhésive1",
"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": {
"id": "R6our9TKRLgAtfPg",
"name": "ClickUp account"
}
},
"typeVersion": 1
},
{
"id": "96826976-e7c8-4eee-8245-47433633a4e7",
"name": "Ajouter le nom de l'entreprise",
"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": {
"id": "R6our9TKRLgAtfPg",
"name": "ClickUp account"
}
},
"typeVersion": 1
},
{
"id": "b8a6c4e1-08bb-4106-ad54-71b443b25638",
"name": "Devis",
"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": {
"id": "R6our9TKRLgAtfPg",
"name": "ClickUp account"
}
},
"typeVersion": 1
},
{
"id": "67bc4dd5-1a1c-4943-bd53-2961da61106f",
"name": "URL de la proposition",
"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": {
"id": "R6our9TKRLgAtfPg",
"name": "ClickUp account"
}
},
"typeVersion": 1
},
{
"id": "3cf561e4-17ee-41ab-b282-b670a381e7b6",
"name": "Formulaire d'appel commercial",
"type": "n8n-nodes-base.typeformTrigger",
"position": [
0,
0
],
"webhookId": "28fd78a2-c166-436b-8888-9f6b305ff2ad",
"parameters": {
"formId": "RADFsrT7",
"onlyAnswers": false,
"simplifyAnswers": false
},
"credentials": {
"typeformApi": {
"id": "tT8tz4T2LA6ZGIaL",
"name": "Typeform account"
}
},
"typeVersion": 1.1
},
{
"id": "368525d7-31ad-4564-ae21-85f997f8b03f",
"name": "Note adhésive",
"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": "Note adhésive2",
"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": "Créer un brouillon",
"type": "n8n-nodes-base.gmail",
"position": [
1560,
-20
],
"webhookId": "44ef2e2b-9d2b-4974-94f7-d418f1bb09e4",
"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": {
"id": "C3I7lGaMkl8s8Uu6",
"name": "builtbyabdul"
}
},
"typeVersion": 2.1
},
{
"id": "91d87b73-5f30-404b-a497-615453441f84",
"name": "Note adhésive3",
"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—plus 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—then creates an email draft in Gmail, ready to send.\n\n### Who’s 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": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
240
],
"parameters": {
"color": 5,
"width": 440,
"height": 240,
"content": "## Hey, I'm Abdul 👋\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 **builtbyabdul@gmail.com**\n### Have a lovely day ;)`"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"5fa8478e-1e09-4510-86ab-54bc46f7def5": {
"main": [
[
{
"node": "96826976-e7c8-4eee-8245-47433633a4e7",
"type": "main",
"index": 0
},
{
"node": "b8a6c4e1-08bb-4106-ad54-71b443b25638",
"type": "main",
"index": 0
},
{
"node": "67bc4dd5-1a1c-4943-bd53-2961da61106f",
"type": "main",
"index": 0
}
]
]
},
"67bc4dd5-1a1c-4943-bd53-2961da61106f": {
"main": [
[
{
"node": "847ab08d-ec61-4f24-b4b3-59427080e72a",
"type": "main",
"index": 0
}
]
]
},
"3cf561e4-17ee-41ab-b282-b670a381e7b6": {
"main": [
[
{
"node": "7d32401a-90d3-462d-ab44-435e92371afb",
"type": "main",
"index": 0
}
]
]
},
"96826976-e7c8-4eee-8245-47433633a4e7": {
"main": [
[]
]
},
"7d32401a-90d3-462d-ab44-435e92371afb": {
"main": [
[
{
"node": "2526fb73-6b90-4434-93d6-d605fdd702b8",
"type": "main",
"index": 0
}
]
]
},
"2526fb73-6b90-4434-93d6-d605fdd702b8": {
"main": [
[
{
"node": "5fa8478e-1e09-4510-86ab-54bc46f7def5",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - CRM, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Abdul Mir
@abdulmirHey 👋 I'm Abdul. I build AI-powered systems for marketing agencies and consultants who want to move fast and automate the boring stuff. Think lead gen agents, proposal generators, and content creation systems. I specialize in growth-focused automations and share workflows that save time and land clients.
Partager ce workflow