The moment it happens
Set up new clients in Sheets and book their kickoff call
When a new client form comes in, they are added to your clients sheet with an onboarding checklist, and a kickoff call is booked next week.
- Runs
- The moment it happens
- Apps
- Google Calendar, Google Sheets
- AI
- Optional
- Access
- Sheet edit; Calendar read+write
Send this to your assistant
Create a ClickRuntime automation: when a new client form comes in, add them to my clients sheet, create their onboarding task list and schedule a kickoff call next week.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A bookkeeping practice signs a new client most weeks. Each one means adding a row to the client sheet, copying the onboarding checklist, and emailing back and forth to find a time for the first call. Small steps get skipped when it is busy, and new clients notice.
This automation takes the client form as it arrives, adds the client and their onboarding tasks to your sheet, and books a kickoff call in a free slot next week. Every new client starts the same way.
What you get out of it
A consistent first week for every client
The same checklist and the same kickoff call happen for everyone, so nobody's onboarding depends on how busy the week was.
No scheduling back-and-forth
A slot is picked from your free time next week and sent as an invite. The client can still propose another time if it does not suit.
Tasks are ready before you start
The onboarding list is in the sheet the moment the client signs, so the team can begin straight away.
Client details typed once
What the client entered on the form goes straight into the sheet, avoiding retyping and spelling mistakes in names and emails.
How it works
What happens, step by step
ClickRuntime starts when a new client form is sent to your trigger link.
The client is added as a new row in your clients sheet, with the onboarding tasks listed under them.
It looks at your Google Calendar for the first free hour next week.
A kickoff call is booked at that time and the client is invited.
Before it runs live
- Connect Google Calendar
- Connect your Google Sheets account and pick the spreadsheets it may use
- 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
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Google Calendar and Google Sheets steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials
SHEET_ID = "your-spreadsheet-id"
TASKS = ["Send welcome pack", "Collect documents", "Set up accounts access", "Kickoff call"]
@on_event
def handle(event):
c = event.json or {}
creds = Credentials(credentials.connection("google", "work"))
rows = [[c.get("name"), c.get("email"), c.get("company"), datetime.now(timezone.utc).date().isoformat(), ""]]
rows += [["", "", "", "", t] for t in TASKS]
build("sheets", "v4", credentials=creds, cache_discovery=False).spreadsheets().values().append(
spreadsheetId=SHEET_ID, range="Clients!A:E", valueInputOption="USER_ENTERED", body={"values": rows}).execute()
cal = build("calendar", "v3", credentials=creds, cache_discovery=False)
today = datetime.now(timezone.utc).replace(hour=0, minute=0, second=0, microsecond=0)
week = today + timedelta(days=7 - today.weekday())
busy = cal.freebusy().query(body={"timeMin": week.isoformat(), "timeMax": (week + timedelta(days=5)).isoformat(),
"items": [{"id": "primary"}]}).execute()["calendars"]["primary"]["busy"]
slots = [week + timedelta(days=d, hours=h) for d in range(5) for h in range(9, 17)]
start = next(s for s in slots if all(not (b["start"] < (s + timedelta(hours=1)).isoformat() and b["end"] > s.isoformat()) for b in busy))
cal.events().insert(calendarId="primary", sendUpdates="all", body={"summary": f"Kickoff: {c.get('company')}",
"start": {"dateTime": start.isoformat()}, "end": {"dateTime": (start + timedelta(hours=1)).isoformat()},
"attendees": [{"email": c.get("email")}]}).execute()
return {"kickoff": start.isoformat()}FAQ
Common questions
Which form tools work?
How is the kickoff time chosen?
Can the task list differ by service?
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
Book appointment requests into your calendar and a sheet
Booking requests are checked against your calendar, booked when you are free and logged in your appointments sheet.
See how it worksGet warned about likely no-shows for tomorrow
Each morning you get a list of tomorrow's appointments with clients who have missed before, so you can confirm them.
See how it worksTurn your week's calendar into a timesheet by client
Every Friday your calendar events are sorted by client or project and written to your timesheet sheet with the hours for each.
See how it worksKeep exploring
Set up “Set up new clients in Sheets and book their kickoff call” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.