The moment it happens
Email the Zoom link to everyone who pays for your event
When someone pays for your event, they're registered on the Zoom meeting and get the join link by email from your Gmail.
- Runs
- The moment it happens
- Apps
- Gmail, Zoom
- AI
- Not needed
- Access
- Zoom meeting:write; gmail.send
Send this to your assistant
Create a ClickRuntime automation: when a payment for my workshop comes in, register the buyer on the workshop's Zoom meeting (create it if it doesn't exist yet) and email them the join link from Gmail.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A yoga teacher sells tickets to online workshops through a payment page. After each sale they open Zoom, copy the link and email it by hand. When sales come in overnight, buyers wake up wondering if their booking worked, and some email asking for the link.
Each payment now registers the buyer on the workshop's Zoom meeting and sends them the join link from the teacher's own Gmail within seconds. The meeting is created on the first sale and reused for everyone after.
What you get out of it
Buyers get their link straight away
No waiting and no 'did my booking work?' emails, even for sales made overnight.
One meeting per event
Everyone who buys the same workshop joins the same meeting, created once and reused.
Sent from your own address
The email comes from your Gmail, so replies reach you and it doesn't look like a system message.
Registrant list in Zoom
Each buyer is added as a registrant, so you can see who is coming before the session starts.
How it works
What happens, step by step
Your payment page tells ClickRuntime that someone has paid for an event.
If this event doesn't have a Zoom meeting yet, one is created at the right date and time; otherwise the existing one is used.
The buyer is added to the meeting as a registrant.
They get an email from your Gmail with their personal join link, and each payment is handled once.
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 Zoom
- 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 Gmail and Zoom steps into one automation
Under the hood
The code that runs this automation
import base64
from email.message import EmailMessage
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials, http, state
@on_event
def handle(event):
sale = event.json or {}
if state.get(event.event_id):
return {"duplicate": True}
zoom = {"Authorization": f"Bearer {credentials.connection('zoom', 'work')}"}
meeting_id = state.get(f"meeting:{sale['event_name']}")
if not meeting_id:
meeting_id = http.post("https://api.zoom.us/v2/users/me/meetings", headers=zoom,
json={"topic": sale["event_name"], "type": 2, "start_time": sale["starts_at"], "duration": 90,
"settings": {"approval_type": 0}}).json()["id"]
state.set(f"meeting:{sale['event_name']}", meeting_id)
reg = http.post(f"https://api.zoom.us/v2/meetings/{meeting_id}/registrants", headers=zoom,
json={"email": sale["email"], "first_name": sale.get("name", "Guest")}).json()
msg = EmailMessage()
msg["To"], msg["Subject"] = sale["email"], f"Your link for {sale['event_name']}"
msg.set_content(f"Thanks for booking! Join here: {reg['join_url']}")
gmail = build("gmail", "v1", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
gmail.users().messages().send(userId="me", body={"raw": base64.urlsafe_b64encode(msg.as_bytes()).decode()}).execute()
state.set(event.event_id, True)
return {"meeting": meeting_id}FAQ
Common questions
Which payment tools does it work with?
What if the same person pays twice?
Can the email include joining instructions?
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
Turn form bookings into Zoom meetings with a Gmail confirmation
Each meeting or interview request from your form gets a Zoom meeting and a confirmation email, and you get a note in Slack.
See how it worksGet a morning email summarising yesterday's Zoom meetings
Every morning you get one email with a short summary and the action items from each of yesterday's recorded Zoom meetings.
See how it worksPost new orders and sign-ups to Slack
When something happens in your shop, app or form, the details land in the right channel straight away.
See how it worksKeep exploring
Set up “Email the Zoom link to everyone who pays for your event” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.