The moment it happens
Turn quote requests into QuickBooks estimates
Every quote request or recorded sale becomes an estimate or sales receipt, and you get its number by email.
- Runs
- The moment it happens
- Apps
- QuickBooks
- AI
- Not needed
- Access
- read+write
Send this to your assistant
Create a ClickRuntime automation: when a quote request is posted to this link, create the customer in QuickBooks if they're new, create an estimate with the requested services, and email me the estimate number.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A quote request form, a sheet where the sales team logs deals, or a point-of-sale export produces rows that finance later has to turn into QuickBooks records. A customer asks for a quote on Monday and gets it Thursday, or a cash sale from the weekend is never entered, leaving gaps between what was sold and what the books show.
Whenever a row is submitted, ClickRuntime finds the customer in QuickBooks or creates a new one, then creates either an estimate for quote requests or a sales receipt for sales that were paid on the spot, depending on the type in the row. It then emails you the result with the document number.
Businesses that mix quoting and over-the-counter sales, like installers, caterers and market sellers, get both flows from one setup.
What you get out of it
Quotes reach customers while they are shopping
A prompt estimate is more likely to win the job than one that arrives after the customer has asked someone else. Speed here translates directly into more accepted quotes. The first quote in often wins the job.
Paid sales are recorded the same day
Sales receipts created straight from the submission mean cash and card sales appear in QuickBooks without a catch-up session. That keeps daily takings and the ledger in agreement. Month-end reconciliation against the till gets shorter.
One intake for two document types
The type in the row decides whether an estimate or a receipt is created. Staff use a single form for everything, and nobody needs to remember which QuickBooks screen applies to which situation.
Estimates convert smoothly to invoices
Because estimates are created in QuickBooks proper, accepting one lets you convert it to an invoice with the same lines. The quote and the eventual bill match, which prevents pricing disputes.
Customer records stay tidy
Existing customers are reused and only new ones are created, so repeat buyers build up a history. Looking back at what a client has bought or been quoted becomes a single lookup.
How it works
What happens, step by step
When a quote request or a sale arrives from your form or spreadsheet, ClickRuntime picks it up.
It finds the customer in QuickBooks, or adds them if they are new.
It creates an estimate, or a sales receipt for a completed sale, with the requested items.
You get an email with the document number, the customer, the total and the items.
Before it runs live
- Connect QuickBooks
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
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 QuickBooks steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify
REALM_ID = "1234567890"
API = f"https://quickbooks.api.intuit.com/v3/company/{REALM_ID}"
def qb(method, path, **kw):
headers = {"Authorization": f"Bearer {credentials.connection('quickbooks', 'company')}", "Accept": "application/json"}
resp = http.request(method, f"{API}{path}", headers=headers, params={"minorversion": 73, **kw.pop("params", {})}, **kw)
resp.raise_for_status()
return resp.json()
def query(sql):
return qb("GET", "/query", params={"query": sql})["QueryResponse"]
@on_event
def handle(event):
data = event.json
email = data["email"].replace("'", "\\'")
found = query(f"select * from Customer where PrimaryEmailAddr = '{email}'").get("Customer")
customer = found[0] if found else qb("POST", "/customer", json={
"DisplayName": data.get("company") or data["name"], "PrimaryEmailAddr": {"Address": data["email"]}})["Customer"]
lines = [{"Amount": float(s["price"]) * s.get("quantity", 1), "DetailType": "SalesItemLineDetail",
"Description": s["name"],
"SalesItemLineDetail": {"ItemRef": {"value": "1"}, "Qty": s.get("quantity", 1), "UnitPrice": float(s["price"])}}
for s in data["services"]]
estimate = qb("POST", "/estimate", json={"CustomerRef": {"value": customer["Id"]}, "Line": lines})["Estimate"]
notify.email_me(f"Estimate {estimate['DocNumber']} for {customer['DisplayName']}",
f"Estimate {estimate['DocNumber']}: ${estimate['TotalAmt']:,.2f}\n"
+ "\n".join(f"- {s['name']}" for s in data["services"]))
return {"estimate": estimate["DocNumber"]}FAQ
Common questions
How does it decide between an estimate and a sales receipt?
Can an estimate expire automatically?
Will the customer receive the estimate by email?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Invoice new customers straight from your order form
Each order or job request becomes a QuickBooks customer and an invoice, sent by QuickBooks, with a confirmation to you.
See how it worksPost to Slack when a customer pays
The moment a payment is recorded, Slack shows who paid and how much.
See how it worksSee every new invoice in Slack
Each invoice created in QuickBooks shows up in Slack with customer, amount and due date.
See how it worksKeep exploring
Set up “Turn quote requests into QuickBooks estimates” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.