Tutorial5 min read

How to Add a Meeting Bot to Google Meet in 5 Minutes

A step-by-step guide to sending a bot to any Google Meet using the Gregnote API. Get a transcript webhook in under 10 lines of code.

Gregnote Team

20 August 2026

What you'll build

By the end of this guide, a bot will join a Google Meet, record the audio, and fire a webhook to your server with the full diarised transcript — automatically, every time.

You'll need a Gregnote API key (free, no card required) and a publicly reachable URL for your webhook. Use ngrok or Cloudflare Tunnel during development.

Step 1 — Get your API key

Sign up at app.gregnote.com. Your API key is on the dashboard home page. It starts with gk_live_.

Step 2 — Send the bot to a meeting

curl -X POST https://api.gregnote.com/v1/bots \
  -H "Authorization: Bearer gk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "meeting_url": "https://meet.google.com/abc-def-ghi",
    "bot_name": "Notetaker",
    "webhook_url": "https://yourdomain.com/hooks/gregnote"
  }'

You get back a bot ID and status joining immediately. The bot appears in the meeting participant list within seconds.

Step 3 — Handle the webhook

When the meeting ends, Gregnote fires a meeting.completed event to your webhook URL. The payload includes the full transcript:

{
  "event": "meeting.completed",
  "transcript": {
    "segments": [
      { "speaker": "Alice", "text": "Let's kick off the Q3 review.", "start": 0.0 },
      { "speaker": "Bob",   "text": "Sounds good. First item — pipeline.", "start": 4.2 }
    ]
  },
  "billable_seconds": 1800
}

Parse it however you like — push to Notion, summarise with an LLM, log to your CRM.

Step 4 — Verify the signature

Every webhook is signed with HMAC-SHA256. Always verify before processing:

const sig = request.headers["x-gregnote-signature"];
const [tPart, vPart] = sig.split(",");
const timestamp = tPart.split("=")[1];
const received  = vPart.split("=")[1];
const expected  = crypto
  .createHmac("sha256", process.env.GREGNOTE_WEBHOOK_SECRET)
  .update(timestamp + "." + rawBody)
  .digest("hex");
if (received !== expected) return res.sendStatus(401);

You're done

Four steps, one API call, one webhook handler. The bot joins, records, transcribes, and delivers — you just react to the event.

Try it yourself

API key in 30 seconds. Free credit on sign-up. No card required.