PDF Contract Generator with Automated Approval: Complete Form-to-Decision Workflow

Aug 20, 2025·5 Minutes Read

What You'll Have When Done

A fully automated system that monitors your Google Sheets for new contract requests, auto-fills professional PDF contract forms, sends them to clients for review, captures their approval decisions through interactive email forms, and notifies you of the final outcome all within 24 hours.

Prerequisites

Before you begin, make sure you have:

  • A PDF.co API Key (Get yours here)
  • SMTP credentials configured in N8N
  • Google Sheets OAuth2 credentials configured in N8N
  • An N8N instance (cloud or self-hosted)
  • A Google Sheet with columns for contract information
  • A PDF contract template uploaded to PDF.co with fillable form fields

Quick Start Options

Option A: I Want It Working Now

  1. Import this workflow template Download JSON File
  2. Connect your Google Sheets account in N8N
  3. Add your PDF.co API key and upload your PDF contract template
  4. Configure your SMTP email credentials
  5. Set up your Google Sheet with the required columns
  6. Test with a sample contract request
  7. Activate and let it run

Option B: I Want to Build It Step-by-Step

Follow the 4-step guide below to create the automation from scratch.

What This Automation Does (Overview)

  1. Monitors your Google Sheet for new contract requests
  2. Auto-fills PDF contract forms with client data using PDF.co
  3. Sends professional emails with contract links and approval forms
  4. Captures client decisions through interactive email responses
  5. Notifies you immediately when contracts are approved, rejected, or need changes

Real Example: Client data entered in Google Sheets → PDF contract auto-generated → Email sent to client → Client clicks "Approve" → You receive instant notification with decision and signature. View Samples Here.

Step-by-Step Build Guide

Step 1: Monitor for New Contract Requests

Node: Google Sheets Trigger

Settings:

  • Document From List: Select your contract information spreadsheet
  • Sheet: Choose the sheet containing contract requests (usually Sheet1)
  • Trigger On: Row Added

What This Does: Automatically detects when a new contract request is added to your spreadsheet and starts the PDF generation and approval process.

Success Looks Like: The trigger activates immediately when a new row is added, capturing all contract information for processing.

Step 2: Generate PDF Contract Form

Node: PDF.co API → Fill a PDF Form

Settings:

  • URL: Upload your PDF contract template to PDF.co Files, then copy the `filetoken://` link
  • Form Fields Mapping (Use the PDF Inspector tool to easily identify the field names, pages and more in your PDF):
    • Proposal Date: {{ $json.Date }}
    • Client Name: {{ $json['Client Name'] }}
    • Description: {{ $json['Service Description'] }}
    • Timeline: {{ $json.Timeline }}
    • Amount: {{ $json.Amount }}
  • Advanced Options → Expiration: 1440 minutes (24-hour expiration requires a Business 2 or higher subscription level)

What This Does: Takes your PDF contract template and automatically fills in all the form fields with data from your Google Sheet, creating a personalized contract for each client.

Success Looks Like: PDF.co returns a secure URL to the completed contract form that's ready for client review.

Step 3: Send Contract for Approval

Node: Send and Wait for Response

Settings:

  • From Email: your-business@email.com
  • To Email: Use client email from your sheet
  • Subject: Contract Approval Required - {{ $('Google Sheets Trigger').item.json['Client Name'] }}
  • Message: Professional HTML email template with:
    1. Personal greeting with client name
    2. Download link to the PDF contract
    3. Clear instructions for approval
    4. 24-hour expiration notice
  • Response Type: Custom Form
  • Form Fields:
    1. Approval Decision (Dropdown)
      • Approved Contract
      • Rejected Contract
      • Requested Change
    2. Comment (if any) (Text Area)
    3. Electronic Signature (Text Input - Required)
  • Wait Time Limit: 24 hours

What This Does: Sends a beautifully formatted email to the client with their personalized contract and an embedded approval form. The workflow pauses until the client responds.

Success Looks Like: Client receives a professional email with their contract and can view it, then submit their approval decision through the embedded form.

Step 4: Send Decision Notification

Node: HTTP Request → PDF.co Send Email

Settings:

  • Method: POST
  • URL: https://api.pdf.co/v1/email/send
  • Headers:
    • Content-Type: application/json
    • x-api-key: [Your PDF.co API Key]
  • JSON Body:
{
  "url": "{{ $('PDFco Api').item.json.url }}",
  "from": "Your Business <your@email.com>",
  "to": "You <your-notifications@email.com>",
  "subject": "{{ $json.data['Approval Decision'] }} - {{ $('Google Sheets Trigger').item.json['Client Name'] }}",
  "bodyHtml": "
    <h3>Contract Decision Received</h3>
    <p><strong>Client:</strong> {{ $('Google Sheets Trigger').item.json['Client Name'] }}</p>
    <p><strong>Decision:</strong> {{ $json.data['Approval Decision'] }}</p>
    <p><strong>Comment:</strong> {{ $json.data['Comment (if any)'] }}</p>
    <p><strong>Electronic Signature:</strong> {{ $json.data['Electronic Signature'] }}</p>
    <p><strong>Contract:</strong> <a href='{{ $('PDFco Api').item.json.url }}'>View Original Contract</a></p>
  ",
  "smtpserver": "smtp.gmail.com",
  "smtpport": "587",
  "smtpusername": "your@gmail.com",
  "smtppassword": "[Your Gmail App Password]"
}

What This Does: Immediately sends you a detailed notification email when the client makes their decision, including their choice, comments, electronic signature, and the contract attached.

Success Looks Like: You receive an instant email notification with the client's decision, allowing you to take immediate next steps based on their response.

Congrats! You've created a sophisticated contract approval system that automates the entire process from request to decision.

Built something cool with this workflow? Share it with us @pdfdotco

Related Tutorials

See Related Tutorials