Skip to content
TrackHeros

Guide

Send meeting notes to Zapier, n8n, Make or any app you already use

For freelance developers and consultants who already run one client through Notion and another through a spreadsheet: how TrackHeros posts a finished Google Meet or Microsoft Teams meeting — summary, decisions, action items and attendees — to a web address you choose. One webhook per client, off until you turn it on, signed so the other end can check it came from us, and a log showing what arrived.

Updated 6 September 2026 · 4 min read

Most meeting tools answer "do you integrate with X?" with a list. This is the other answer: one webhook, and X is whatever you already use.

When a meeting finishes processing, TrackHeros can post it as JSON to an address you choose. That address can be a Zapier Catch Hook, an n8n Webhook node, a Make custom webhook, or something you wrote yourself. Between the first three, that reaches most of the tools a freelance developer runs a client on.

It is set up per client. Each one has its own address, its own switch and its own log. Client A's meetings cannot fire client B's webhook, and there is no account-wide setting that would let them.

What arrives

One JSON object per meeting, with a version field so it stays stable:

{
    "version": "1.0",
    "event": "meeting.completed",
    "meeting": {
        "title": "Project sync",
        "started_at": "2026-09-04T16:35:00+03:00",
        "duration_minutes": 35,
        "platform": "google_meet",
        "client_workspace": { "name": "Client A" }
    },
    "attendees": [{ "name": "Maya Robinson", "email": "maya@…" }],
    "summary": "…",
    "decisions": [{ "text": "Ship on Friday" }],
    "action_items": [
        {
            "action": "Fix the join retry",
            "owner": "Maya",
            "owner_email": "maya@…",
            "due": "Monday"
        }
    ],
    "topics": [{ "title": "Access control", "points": ["…"] }],
    "links": { "dashboard": "https://…", "minutes_pdf": "https://…" }
}

Two fields are worth reading carefully before you build on them.

owner_email is filled in only when an action item's owner matches exactly one person on the calendar invitation. If two people in the room could be "Sam", it stays empty. That is deliberate: an empty field is a prompt for a human, and a guessed one is a task somebody else now believes they own.

guest_list_partial is true when the meeting platform hid the guest list, so the attendee list is a subset rather than the whole room.

Set it up with Zapier

  1. In Zapier: Create Zap → Webhooks by Zapier → Catch Hook. Copy the custom webhook URL it gives you.
  2. In TrackHeros: Destinations, choose the client, paste the URL into the Webhook card, save, and turn the switch on.
  3. Press Send a test. This posts your most recent meeting immediately, so Zapier's "Test trigger" has real data to build its field mapping from — rather than you waiting for the next meeting to end.
  4. Add whatever action you want. action_items is a list, so use Zapier's line-item handling or a Looping step if you want one task per item.

Set it up with n8n

  1. Add a Webhook node, method POST, and copy the production URL — the test URL only listens while the editor is open.
  2. Paste it into TrackHeros, save, turn it on, and press Send a test.
  3. To check the signature: a Crypto node (HMAC, SHA256, hex) over the raw body, compared with the x-trackheros-signature header in an IF node. Turn on the Webhook node's Raw Body option — a re-serialised body will not match, because the signature covers the exact bytes we sent.

Set it up with Make

  1. Add a Webhooks → Custom webhook module, press Add, and copy the address.
  2. Paste it into TrackHeros and press Send a test while Make is listening, so it can work out the data structure.
  3. action_items and topics arrive as arrays — use an Iterator to handle each one.

Signing, so the other end can trust it

A public URL will accept JSON from anyone. Create a signing key on the destination and TrackHeros signs every request with it. Your endpoint recomputes the same HMAC-SHA256 over the body it received and compares:

import hashlib, hmac

expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(expected, request.headers["X-TrackHeros-Signature"])

Compute it over the raw bytes, and compare in constant time. The key is shown once when you create it and never again — replace it if you lose it.

When it goes wrong, you can see it

A webhook that quietly stops working is worse than no webhook, because you carry on assuming the notes arrived. Every delivery is in a log on the same page: when it went, where, whether it worked, and on a failure the status code and whatever your endpoint said back. A failed one has a Try again button once you have fixed it.

We try three times with a growing gap. A server error or a timeout is worth retrying; a "this request is wrong" answer is not, because it will be just as wrong in thirty seconds and a retry would only risk sending it twice.

What we will not do

The address has to be https, and it has to be publicly reachable — a URL pointing at a private or internal address is refused when you save it. We do not follow redirects, so give us the final URL.

And a meeting is sent once per destination. Some meetings are summarised twice, once from the live captions and again from the recording; the second pass improves the text but does not fire the webhook again.

links.minutes_pdf and links.transcript are temporary addresses your automation can fetch the documents from. They expire, and while they are valid anyone holding the URL can open that one document — so they are a switch you can turn off if your automation stores its inputs somewhere you would rather they did not sit.

links.dashboard needs a sign-in, so it is safe to paste anywhere.

Already-connected tools

If your client is on Slack, Google Drive or Jira, TrackHeros talks to those directly and a webhook is not the best route: the minutes can be filed as a Google Doc, action items direct-messaged to the people who own them, or filed as issues in a project you pick. Those are on the same Destinations page. The webhook is for everything else.

Not yet available

  • A published Zapier app you install from the Zapier directoryNot yet available
  • Filters and conditions on which meetings are sentNot yet available

Questions

Frequently asked

Do you integrate with Notion, Airtable, HubSpot or Trello?

Through a webhook, yes. TrackHeros sends each finished meeting to a web address you choose, and Zapier, n8n and Make all accept one and can write to those tools. There is no dedicated Notion or Airtable connection in TrackHeros itself, and the webhook is how that gap is covered.

Is the webhook set per client or for my whole account?

Per client. Each client has its own address, its own switch and its own log, and one client cannot fire another one. That is the same rule the rest of the product follows: a client is a wall, not a folder.

What happens if my endpoint is down?

We try three times with a growing gap between attempts. If it still fails, the delivery is marked failed in your log with the status code and whatever your endpoint said back, so you can see why rather than wonder. You can fix the endpoint and press Try again.

How does my endpoint know the meeting really came from TrackHeros?

Create a signing key on the destination and we sign every request with it, in an X-TrackHeros-Signature header. Your endpoint recomputes the same signature over the body it received and compares. Anyone can post JSON at a public URL; the signature is what tells you which posts to trust.

Will the same meeting be sent twice?

No. A meeting is sent once per destination. We summarise some meetings twice — once from the live captions and again from the recording, which is what handles mixed Arabic and English — and the second pass does not fire the webhook again, because a second copy would already be a second task in whatever it feeds.

Related

Early access

Get in early.

We’re onboarding a small group at a time so we can get it right. Join the list and we’ll reach out.

Get early accessPrivate beta · Google Meet and Microsoft Teams