Tutorial6 min read

How to Auto-Send Meeting Summaries to Slack Using Webhooks

Use Gregnote webhooks and the Slack API to automatically post an AI-generated meeting summary to a Slack channel after every meeting ends.

Gregnote Team

16 August 2026

The idea

Every time a meeting ends, Gregnote fires a meeting.completed webhook with the full transcript. We'll catch that, summarise it with an LLM, and post the summary to a Slack channel automatically. No manual notes. No copy-pasting.

What you need

  • A Gregnote API key
  • A Slack app with a webhook URL (incoming webhook)
  • An LLM API key (OpenAI, Anthropic, or any provider)
  • A Node.js or Python server to receive webhooks

Step 1 — Receive the webhook

app.post("/hooks/gregnote", express.raw({ type: "*/*" }), async (req, res) => {
  // Verify HMAC signature first (always)
  if (!verifySignature(req)) return res.sendStatus(401);

const payload = JSON.parse(req.body.toString()); if (payload.event !== "meeting.completed") return res.sendStatus(200);

const transcript = payload.transcript.segments .map(s => ${s.speaker}: ${s.text}) .join("\n");

const summary = await summarise(transcript); await postToSlack(summary, payload.transcript.speakers); res.sendStatus(200); }); ```

Step 2 — Summarise with an LLM

async function summarise(transcript) {
  const response = await openai.chat.completions.create({
    model: "gpt-4o-mini",
    messages: [
      { role: "system", content: "Summarise this meeting transcript in 3-5 bullet points. Focus on decisions made and action items." },
      { role: "user", content: transcript },
    ],
  });
  return response.choices[0].message.content;
}

Step 3 — Post to Slack

async function postToSlack(summary, speakers) {
  const names = speakers.filter(s => !s.is_bot).map(s => s.display_name).join(", ");
  await fetch(process.env.SLACK_WEBHOOK_URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      text: `*Meeting Summary* — ${names}\n${summary}`,
    }),
  });
}

Result

Every meeting your bot attends now produces a Slack message with a concise summary within a minute of the meeting ending. Your team reads it in the channel they're already watching.

Try it yourself

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