Skip to content

On a schedule

Welcome every new QuickBooks customer by email

Each customer you add to QuickBooks gets a welcome email from your Gmail, and is logged in a sheet so nobody is welcomed twice.

Runs
On a schedule
Apps
Google Sheets, QuickBooks
AI
Not needed
Access
accounting read; sheet editor

Send this to your assistant

Create a ClickRuntime automation: every hour, check QuickBooks for new customers, send each a welcome email from Gmail and log them in my Customers sheet so nobody gets two.

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 new client relationship starts with their details going into QuickBooks, and then often nothing until the first invoice. A short welcome, with who to contact and how billing works, sets expectations, but it depends on someone remembering to send it.

Sending the welcome whenever a customer appears in QuickBooks makes it consistent, and the sheet gives a running list of every new customer and when they were welcomed.

What you get out of it

  • Every customer is welcomed

    Nobody depends on memory, so the client who signs on a busy Friday gets the same start as everyone else.

  • Fewer billing questions

    Explaining payment terms and contacts up front means fewer confused emails when the first invoice arrives.

  • A list of new customers

    The sheet shows who joined and when, useful for monthly reviews and follow-up calls.

  • Sent from you

    The email comes from your own address, so replies reach you directly.

How it works

What happens, step by step

  1. Every hour, ClickRuntime asks QuickBooks for customers created since its last check.

  2. It skips anyone already listed in your Customers sheet.

  3. It sends each new customer a welcome email from your Gmail address.

  4. It adds them to the sheet with the date they were welcomed.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect QuickBooks

What you get

RunsOn a schedule
Welcome every new QuickBooks customer by emailtoday, 9:00Succeeded
Gmail · SentWelcome to Northwind, Acme Corp – Hi Jordan, welcome aboard. Invoices are due within 30 days…

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 Sheets and QuickBooks 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.
welcome_new_quickbooks_customers.pyexample
import base64
from datetime import date
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, report_fetched

SHEET_ID = "your-spreadsheet-id"
API = "https://quickbooks.api.intuit.com/v3/company/1234567890"  # your QuickBooks company id

def qb(method, path, **kw):
    r = http.request(method, API + path, params={"minorversion": 73, **kw.pop("params", {})}, **kw, headers={"Accept": "application/json", "Authorization": "Bearer " + credentials.connection("quickbooks", "company")})
    return r.raise_for_status() or r.json()

@on_trigger
def run(event):
    since = state.get("since") or str(date.today())
    found = qb("GET", "/query", params={"query": f"select * from Customer where MetaData.CreateTime > '{since}'"})["QueryResponse"].get("Customer", [])
    sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets()
    logged = {r[0] for r in sheets.values().get(spreadsheetId=SHEET_ID, range="Customers!A2:A").execute().get("values", []) if r}
    new = [c for c in found if c["Id"] not in logged]
    report_fetched(len(new))
    if not new:
        return {"summary": "Nothing new"}
    gmail = build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
    for c in new:
        if c.get("PrimaryEmailAddr"):
            msg = EmailMessage()
            msg["To"], msg["Subject"] = c["PrimaryEmailAddr"]["Address"], f"Welcome to Northwind, {c['DisplayName']}"
            msg.set_content(f"Hi {c.get('GivenName') or c['DisplayName']},\n\nWelcome aboard. Invoices are due within 30 days; reply to this email with any questions.")
            gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
    sheets.values().append(spreadsheetId=SHEET_ID, range="Customers!A:C", valueInputOption="RAW", body={"values": [[c["Id"], c["DisplayName"], str(date.today())] for c in new]}).execute()
    state.set("since", max(c["MetaData"]["CreateTime"] for c in new))
    return {"welcomed": len(new)}

FAQ

Common questions

Where does the email address come from?
The customer's primary email in QuickBooks. Customers without one are logged in the sheet but not emailed.
Can I write my own welcome message?
Yes. Give your AI assistant the wording, with the customer's name filled in.
What if I import lots of old customers at once?
Pause the automation during the import, or ask for customers created before a certain date to be skipped.
What permissions does it need?
accounting read; sheet editor. 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 each time it checks. Checks that find nothing new and stop right away aren't counted.
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 “Welcome every new QuickBooks customer by email” from your assistant

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