Typeform to PandaDoc, proposals ready to send
You finish a sales call, feel good about it, then lose momentum because you’re stuck rebuilding a proposal from scratch. Copying notes, rewriting sections, hunting for the right template, double-checking pricing. It’s slow, and it’s easy to miss something important.
This Typeform PandaDoc proposals automation hits consultants and agency owners first, honestly. But sales reps who need clean follow-ups also feel the drag. You get a ready-to-review PandaDoc draft, your ClickUp “CRM” updated, and a Gmail follow-up draft waiting to send.
Below is what the workflow does, what it replaces, and how to get it running without turning your week into an automation project.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Typeform to PandaDoc, proposals ready to send
flowchart LR
subgraph sg0["Client Intake Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Draft Proposal Text", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Generate PandaDoc File"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/clickup.svg' width='40' height='40' /></div><br/>Update CRM Task"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/clickup.svg' width='40' height='40' /></div><br/>Set Company Field"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/clickup.svg' width='40' height='40' /></div><br/>Set Quote Field"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/clickup.svg' width='40' height='40' /></div><br/>Store Proposal Link"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/typeform.dark.svg' width='40' height='40' /></div><br/>Client Intake Trigger"]
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail Draft Message", pos: "b", h: 48 }
n2 --> n3
n2 --> n4
n2 --> n5
n5 --> n7
n6 --> n0
n0 --> n1
n1 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n6 trigger
class n0 ai
class n1 api
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n4,n5,n6 customIcon
The Challenge: Proposals Steal Your Follow-Through
Most proposals don’t fail because your offer is bad. They fail because the process is messy. After the call, you’re juggling raw notes, a half-updated CRM record, and the nagging feeling you should send a follow-up “soon” (which becomes tomorrow, then next week). Formatting and rewriting turns into a mini writing project, and every time you do it manually you introduce tiny inconsistencies: pricing phrased differently, scope less clear, the wrong client name in one spot. It’s exhausting, and it quietly costs deals.
It adds up fast. Here’s where it usually breaks down.
- You rewrite the same sections repeatedly because your call notes aren’t structured for proposal copy.
- PandaDoc drafts take longer than they should because you’re manually mapping details into the template.
- ClickUp (or whatever you use as a lightweight CRM) stays outdated, so your pipeline view lies to you.
- Follow-up emails go out late because you still need to “pull the link and write the message.”
The Fix: Turn Call Notes Into a PandaDoc Draft + Follow-Up
This workflow starts right after the call, when the details are fresh. You fill out a short Typeform with the essentials (client name, pain points, what you pitched, the price). n8n takes that structured input and sends it to an AI step that turns messy notes into clean proposal-ready copy. Next, the workflow creates a PandaDoc draft through an HTTP request, using a JSON body where your dynamic fields get mapped into your PandaDoc template. Once PandaDoc returns the proposal link, the workflow updates your ClickUp lead record with the company name, quote, and the proposal URL. Then it creates a Gmail draft that includes a thank-you note and that proposal link, so you can review and send without starting from zero.
The workflow begins with a Typeform submission. AI turns that submission into polished sections you can reuse across proposals. PandaDoc receives the filled template, ClickUp gets updated, and Gmail produces the follow-up draft so you can hit send when you’re ready.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you send 10 proposals a month. Manually, it’s common to spend about 45 minutes writing and assembling each one, plus another 10 minutes updating ClickUp and drafting a follow-up email, so you’re burning roughly 9 hours a month. With this workflow, the “assembly” time becomes a 3-minute Typeform submission, then a few minutes to review the PandaDoc draft and Gmail draft. Even if you still spend 10 minutes polishing, you’re getting most of that time back.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Typeform to capture post-call details.
- PandaDoc to generate proposal drafts from a template.
- ClickUp to store the lead record and custom fields.
- Gmail to create the follow-up email draft.
- OpenAI API key (or LLM key) (get it from your LLM provider dashboard).
Skill level: Intermediate. You’ll connect accounts, paste an API key, and edit a JSON request to match your PandaDoc template fields.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
Typeform submission triggers the run. After the call, you fill out the intake form with the client’s company name, needs, what you proposed, and the quote.
AI turns your notes into proposal copy. n8n sends the form data to the OpenAI step, which returns structured text you can drop into a proposal without heavy rewriting.
PandaDoc gets a draft created via HTTP request. The workflow maps the generated copy and your form fields into a JSON body that matches your PandaDoc template, then creates a new document draft and captures the resulting proposal URL.
ClickUp and Gmail get updated automatically. ClickUp receives the company name, quote, and proposal link in the right custom fields, then Gmail creates a draft follow-up email that includes the link so you can review and send.
You can easily modify the PandaDoc template fields to match your own proposal layout based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Typeform Trigger
Set up the workflow entry point so new client intake submissions kick off proposal generation.
- Add the Client Intake Trigger node and set Form ID to
RADFsrT7. - Keep Only Answers set to
falseand Simplify Answers set tofalse. - Credential Required: Connect your typeformApi credentials.
clickup_id and the answer indexes used in expressions (e.g., answers[0] for first name, answers[2] for email).Step 2: Set Up AI Proposal Drafting
Configure the AI to generate structured proposal content used downstream.
- Add the Draft Proposal Text node and select Model
GPT-4O. - Keep JSON Output enabled (
true) to return a single JSON object. - Verify the prompt includes the expression inputs, such as
{{ $json.form_response.answers[5].text }}and{{ $json.form_response.answers[4].text }}, to bind Typeform content into the prompt. - Credential Required: Connect your openAiApi credentials.
Step 3: Configure PandaDoc Generation
Send the AI-generated fields and client details to PandaDoc to create a proposal document.
- Add the Generate PandaDoc File node and set URL to
https://api.pandadoc.com/public/v1/documentswith MethodPOST. - Set Specify Body to
jsonand JSON Body to the provided object starting with={ "owner": { "email": "[YOUR_EMAIL]" }, "template_uuid": "<template id>", "name": "Proposal for {{ $('Client Intake Trigger').item.json.form_response.answers[3].text }}" }. - In Header Parameters, set Authorization to
API-Key [CONFIGURE_YOUR_API_KEY]and accept toapplication/json. - Confirm token mappings use expressions like
{{ $json.message.content.problemText.replace(/\n/g, '\\n') }}and client details from Client Intake Trigger.
Step 4: Configure CRM Updates and Parallel Fields
Update ClickUp with proposal data and populate custom fields in parallel once the PandaDoc document is created.
- Add Update CRM Task and set ID to
{{ $('Client Intake Trigger').item.json.form_response.hidden.clickup_id }}with Operationupdate. - Set Update Fields → Content to the multiline expression starting with
Company Summary: {{ $('Client Intake Trigger').item.json.form_response.answers[4].text }}. - Credential Required: Connect your clickUpOAuth2Api credentials to Update CRM Task, Set Company Field, Set Quote Field, and Store Proposal Link.
- Configure Set Company Field with Task
{{ $json.id }}, Field{{ $json.custom_fields[0].id }}, and Value{{ $('Client Intake Trigger').item.json.form_response.answers[3].text }}. - Configure Set Quote Field with Task
{{ $('Update CRM Task').item.json.id }}, Field{{ $('Update CRM Task').item.json.custom_fields[9].id }}, and Value{{ $('Client Intake Trigger').item.json.form_response.answers[9].number }}. - Configure Store Proposal Link with Value
=https://app.pandadoc.com/a/#/documents/{{ $('Generate PandaDoc File').item.json.id }}.
Update CRM Task outputs to both Set Company Field and Set Quote Field and Store Proposal Link in parallel.
Step 5: Draft the Client Email
Create an email draft that references the client’s name and is sent after the proposal link is stored.
- Add Gmail Draft Message and set Resource to
draftand Email Type tohtml. - Set Subject to
sent you the Proposal. - Set Message to the HTML content starting with
=Hey {{ $('Client Intake Trigger').item.json.form_response.answers[0].text }}, thanks for the great call.. - Set Options → Send To to
{{ $('Client Intake Trigger').item.json.form_response.answers[2].email }}. - Credential Required: Connect your gmailOAuth2 credentials.
(proposal link) in the message template with the PandaDoc link if you want the draft to include it automatically.Step 6: Test and Activate Your Workflow
Run a full test to ensure the proposal is generated, ClickUp fields update, and the email draft is created.
- Click Execute Workflow and submit a new Typeform entry using real sample data.
- Confirm Draft Proposal Text returns valid JSON and Generate PandaDoc File returns a document ID.
- Verify ClickUp updates: task content, company field, quote field, and proposal link.
- Check Gmail for a new draft created by Gmail Draft Message.
- When everything works, toggle the workflow to Active to enable production runs.
Watch Out For
- PandaDoc API credentials can expire or lack document permissions. If creation fails, check your PandaDoc API app access and the error response from the HTTP Request node first.
- ClickUp custom fields must match your workspace setup. If the Company, Quote, or Proposal URL fields don’t update, confirm the field IDs and that your ClickUp token can edit the specific list/task.
- Gmail drafts can land in the wrong thread or fail silently when scopes are missing. If you don’t see a draft, re-check Gmail OAuth permissions inside n8n and confirm the “From” account is the one you intended.
Common Questions
About an hour if your PandaDoc template and ClickUp fields are already set.
Yes, but someone needs to handle the first-time PandaDoc field mapping. After that, day-to-day use is just filling out the Typeform.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs (often a few cents per proposal, depending on length).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Start with the HTTP Request step that creates the PandaDoc document and adjust the JSON body to match your template fields. Common customizations include swapping Typeform for Tally, changing the AI tone in the proposal-writing prompt, and updating different CRM fields in ClickUp (or replacing ClickUp entirely). If you want faster internal turnaround, add a Telegram alert when the PandaDoc link is created so you know it’s ready to review.
Usually it’s an expired or incorrect API token, or the HTTP request is pointing at the wrong PandaDoc endpoint for your account region. Also check the template/document IDs in your request body and look at the raw error message returned by the HTTP Request node, because PandaDoc is pretty specific about what field failed.
For most small teams, it comfortably handles dozens of proposals a week.
Often, yes. This workflow depends on a custom HTTP request payload to PandaDoc plus multiple field updates in ClickUp, and n8n handles that kind of “do a few precise things in a row” logic without getting awkward. If you later want branching (different proposal templates by service, or different follow-up emails by deal size), it’s much easier to expand here. Zapier or Make can still work for simpler versions, but you may hit limits when you need deeper API control. If you want a second opinion, Talk to an automation expert and we’ll sanity-check the best path.
When the proposal is drafted, the CRM is updated, and the follow-up is sitting in Gmail, you stay in motion. Set it up once, then focus on closing instead of formatting.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.