The moment it happens
Send new sign-ups a welcome email matched to what they need
Each new customer gets a personal welcome email from your Gmail that points to the product features most relevant to them.
- Runs
- The moment it happens
- Apps
- Gmail, Pinecone
- AI
- Yes, uses the built-in AI allowance
- Access
- Pinecone read; gmail.send
Send this to your assistant
Create a ClickRuntime automation: when a new customer signs up, use what they told us on the sign-up form to pull the most relevant product info from Pinecone, write a short personal welcome and send it from my Gmail.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A standard welcome email lists every feature and helps nobody. New customers sign up for one reason, and the quickest way to keep them is to point them straight at the part of the product that solves it.
SaaS founders, customer success teams and online services use it to send a welcome that feels written for each customer, built from their own product documentation.
What you get out of it
Relevant from the first email
Each welcome points to the features that match what the customer said they need.
Accurate product details
Content comes from your own product docs in Pinecone, not from guesswork.
Personal, from a real inbox
Sent from your Gmail, so replies come straight to you.
Sent in minutes
The email arrives while the customer is still exploring the product.
How it works
What happens, step by step
When a new customer signs up, the details arrive at your automation's link straight away.
Your product information in Pinecone is searched using what they said they need.
AI writes a short welcome that points them to the most relevant features.
The email is sent from your Gmail.
Before it runs live
- Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
- Connect Pinecone
- 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 Gmail and Pinecone steps into one automation
Under the hood
The code that runs this automation
import base64
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials, http, ai
HOST, NS = "https://kb-abc123.svc.aped-1234.pinecone.io", "product" # your index host and namespace
def search(text, k=5):
r = http.post(f"{HOST}/records/namespaces/{NS}/search", json={"query": {"inputs": {"text": text}, "top_k": k}}, headers={
"Api-Key": credentials.secret("PINECONE_API_KEY"), "X-Pinecone-API-Version": "2025-04"}).json()
return [h["fields"] for h in r["result"]["hits"]]
def send(to, subject, body):
raw = f"To: {to}\r\nSubject: {subject}\r\nContent-Type: text/plain; charset=utf-8\r\n\r\n{body}"
build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).users() \
.messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(raw.encode()).decode()}).execute()
@on_event
def handle(event):
s = event.json or {}
if not s.get("email"):
return {"skipped": "no email"}
need = s.get("goal") or s.get("role") or "getting started"
info = "\n\n".join(h["chunk_text"] for h in search(need, 4))
body = ai.generate(f"Write a 100-word welcome email from Sam at Acme Scheduling to {s.get('name', 'there')}, who wants: "
f"{need}. Point to the most relevant feature from this product info, with one next step. Body only."
f"\n{info}", max_output_tokens=250).text
send(s["email"], "Welcome to Acme Scheduling", body)
return {"sent": True}FAQ
Common questions
What does the sign-up need to include?
What if they gave no details?
Can I review emails first?
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
Let visitors ask about your CV, with a daily summary by email
Visitors to your site can ask questions about your experience and get answers from your CV, and you get an email summarising each day's conversations.
See how it worksDraft email replies from your knowledge base
Customer emails get an accurate draft reply in Gmail, written from the docs you keep in Pinecone.
See how it worksScore job alert emails against your CV
Every hour new job alert emails are compared with your CV, and you get a short email listing the roles worth applying for, with a score and reason.
See how it worksKeep exploring
Set up “Send new sign-ups a welcome email matched to what they need” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.