Skip to content

The moment it happens

Create a proposal from your template

Sending client details to a link creates a filled-in proposal or contract Doc.

Runs
The moment it happens
Apps
Google Docs
AI
Not needed
Access
read+write (template and folder shared with the service account)

Send this to your assistant

Create a ClickRuntime automation: give me a link. When it gets a name, company and price, copy my Proposal template, replace {{name}}, {{company}} and {{price}}, and send me the Doc link.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A design studio sends a proposal to every new client, and every proposal starts as a copy of the same Google Doc. Someone duplicates it, finds each placeholder, retypes the client's name, company, scope and fee, and misses one. Last month a proposal went out with the previous client's name in the footer. Each mistake is embarrassing, and each copy takes ten minutes that adds up across every new lead.

When a form or CRM posts the client's details to a ClickRuntime trigger link, it copies your template Doc and replaces each placeholder, such as {{client}} or {{fee}}, using a replace-all text request. It returns the link to the new Doc and posts a note in Slack so the team knows it is ready.

Agencies, law firms and recruiters use it for proposals, contracts, offer letters and onboarding packs.

What you get out of it

  • Wrong-name mistakes stop

    Every placeholder is replaced from the submitted data, so the client's name cannot be left over from an earlier copy. A professional first impression survives, and nobody has to proofread for the old company's name.

  • Proposals go out the same day

    A new lead can have a tailored Doc minutes after submitting a form. Speed matters in competitive bids, where the first credible proposal often shapes what the buyer expects from the rest.

  • The template stays in one place

    Improving the wording once improves every future proposal, because every Doc starts from the same template. Nobody has a stale personal copy with last year's terms in it. Consistency across clients also makes your firm look more organized.

  • Sales time moves to selling

    Ten minutes of find-and-replace per lead disappears. For a studio that sends thirty proposals a month, that is five hours returned to conversations with prospects. A Slack note with the link means the account owner knows the Doc exists and can review it, so nothing waits in a folder unnoticed because its creator forgot to say so, and the proposal never goes unreviewed.

  • The team is told automatically

    A Slack note with the link means the account owner knows the Doc exists and can review it. Nothing waits in a folder unnoticed because the person who made it forgot to say so.

How it works

What happens, step by step

  1. When a deal is won or a form is submitted, ClickRuntime receives the details straight away.

  2. It copies your proposal template in Google Docs and names it after the client.

  3. Every placeholder, such as the company name and price, is replaced with the real details.

  4. You get an email with a link to the finished proposal.

Before it runs live

  • Connect Google Docs
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Create a proposal from your templatejust nowSucceeded
Email · Proposal for Northwindhttps://docs.google.com/document/d/1PrOpOsAl789/edit

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Google Docs steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
fill_a_template_doc_from_a_trigger_link.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials, notify

TEMPLATE_ID = "proposal-template-doc-id"

@on_event
def handle(event):
    data = event.json or {}
    creds = Credentials(credentials.connection("google", "work"))
    drive = build("drive", "v3", credentials=creds, cache_discovery=False)
    docs = build("docs", "v1", credentials=creds, cache_discovery=False)
    copy = drive.files().copy(fileId=TEMPLATE_ID, body={"name": f"Proposal – {data['company']}"}).execute()
    docs.documents().batchUpdate(documentId=copy["id"], body={"requests": [
        {"replaceAllText": {"containsText": {"text": "{{" + k + "}}", "matchCase": True}, "replaceText": str(data[k])}}
        for k in ("name", "company", "price")]}).execute()
    link = f"https://docs.google.com/document/d/{copy['id']}/edit"
    notify.email_me(f"Proposal for {data['company']}", link)
    return {"doc": link}

FAQ

Common questions

How do placeholders work in the template?
You write markers like {{client_name}} in the Doc, and each is replaced with the matching field in the data sent to the link. Text outside the markers is left alone. Use clear names, and keep the markers on one line so no formatting breaks them.
What happens if a field is missing from the form?
A placeholder with no value can be left visible, replaced with a default, or reported in the Slack note so someone fixes it. Making the important fields required in the form is the surest way to avoid leftover markers.
Can the new Doc be saved to a client-specific folder?
Yes. The copy can be placed in a folder you choose, and a subfolder per client is possible when the folder name comes from the data. Naming the file with the client and date keeps the Drive easy to browse.
What permissions does it need?
read+write (template and folder shared with the service account). Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Create a proposal from your template” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.