Is AI Note taker for Google Meet, by Noty.ai safe?
Noty.ai is medium risk. The Meet/Zoom content script bundles Amplitude analytics, sending the page URL, title, and a persistent device ID to api2.amplitude.com on every page load, whether or not you use transcription.
Who publishes itnoty.ai - no other listings under this identity
noty.ai - no other listings under this identity
What this publisher told the store about itself, and the other listings that told it the same thing.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Noty.ai bundles Amplitude analytics that tracks every Meet/Zoom page you load
The Meet/Zoom content script bundles Amplitude analytics, sending the page URL, title, and a persistent device ID to api2.amplitude.com on every page load, whether or not you use transcription.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-200
- Source
- Dynamic sandbox
You open or navigate to a page on meet.google.com or any *.zoom.us subdomain.
gmeet.js runs on every matching page regardless of whether Noty's transcription feature is on.
The extension's bundled Amplitude analytics SDK reports the page's URL, title, and a persistent device ID to Amplitude.
The same script also watches every form on the page and reports its id and name when you interact with it.
- Amplitude device ID2ec2b498-b4d1-4eb4-b68f-c2ca3a835f86
A persistent ID that ties every page view and form interaction on Meet/Zoom back to the same browser across visits.
- Session ID1788890296415
Groups events from one browsing session together, linked to your device ID.
- Page locationhttps://meet.google.com/_meet/whoops?q=buy+usb+cable&sc=232
The full URL of the Meet or Zoom page you're on, including any query text in the address bar.
- Page titleSomething went wrong
The title of the tab you have open, such as an error page or meeting name.
- Form ID and nameid: signin-form, name: identifierForm (illustrative)
The id and name of any form on the page when you start typing into it or submit it, not the values you typed.
HTTP 200: {"code":200,"server_upload_time":1788890298220,"payload_size_bytes":2504,"events_ingested":3}
- Referer
- https://meet.google.com/_meet/whoops?q=buy+usb+cable&sc=232
- Content-Type
- application/json
{ "api_key": "0bd1763bf883c8ab08b08ab726a7adc3", "events": [ { "device_id": "2ec2b498-b4d1-4eb4-b68f-c2ca3a835f86", "session_id": 1788890296415, "time": 1788890296415, "platform": "Web", "language": "en-US", "ip": "$remote", "insert_id": "cd2f2c9b-1997-4a72-a0b9-acb15e76fa4b", "event_type": "session_start", "event_id": 0, "library": "amplitude-ts/2.3.5", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" }, { "device_id": "2ec2b498-b4d1-4eb4-b68f-c2ca3a835f86", "session_id": 1788890296415, "time": 1788890296946, "platform": "Web", "language": "en-US", "ip": "$remote", "insert_id": "c71052f0-3c9b-40f6-a2c8-c78a5bdfdcc1", "event_type": "$identify", "user_properties": { "$setOnce": { "initial_utm_campaign": "EMPTY", "initial_utm_content": "EMPTY", "initial_utm_id": "EMPTY", "initial_utm_medium": "EMPTY", "initial_utm_source": "EMPTY", "initial_utm_term": "EMPTY", "initial_referrer": "EMPTY", "initial_referring_domain": "EMPTY", "initial_dclid": "EMPTY", "initial_gbraid": "EMPTY", "initial_gclid": "EMPTY", "initial_fbclid": "EMPTY", "initial_ko_click_id": "EMPTY", "initial_li_fat_id": "EMPTY", "initial_msclkid": "EMPTY", "initial_rtd_cid": "EMPTY", "initial_ttclid": "EMPTY", "initial_twclid": "EMPTY", "initial_wbraid": "EMPTY" }, "$unset": { "utm_campaign": "-", "utm_content": "-", "utm_id": "-", "utm_medium": "-", "utm_source": "-", "utm_term": "-", "referrer": "-", "referring_domain": "-", "dclid": "-", "gbraid": "-", "gclid": "-", "fbclid": "-", "ko_click_id": "-", "li_fat_id": "-", "msclkid": "-", "rtd_cid": "-", "ttclid": "-", "twclid": "-", "wbraid": "-" } }, "event_id": 1, "library": "amplitude-ts/2.3.5", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" }, { "device_id": "2ec2b498-b4d1-4eb4-b68f-c2ca3a835f86", "session_id": 1788890296415, "time": 1788890296973, "platform": "Web", "language": "en-US", "ip": "$remote", "insert_id": "59b06d67-c44a-4c74-892b-5d407d9fd4ad", "event_type": "[Amplitude] Page Viewed", "event_properties": { "[Amplitude] Page Domain": "meet.google.com", "[Amplitude] Page Location": "https://meet.google.com/_meet/whoops?q=buy+usb+cable&sc=232", "[Amplitude] Page Path": "/_meet/whoops", "[Amplitude] Page Title": "Something went wrong", "[Amplitude] Page URL": "https://meet.google.com/_meet/whoops" }, "event_id": 2, "library": "amplitude-ts/2.3.5", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" } ], "options": {}, "client_upload_time": "2026-09-08T17:58:17.623Z"}The bundled Amplitude form-interaction plugin: shipped minified vs. deobfuscated
Same plugin, readable form: watches every form's change/submit and reports its id/name to Amplitude
f_ = function() { var e, t = [], n = function(u, c, f) { u.addEventListener(c, f), t.push({ element: u, type: c, handler: f }) }, r = function() { t.forEach(function(u) { var c = u.element, f = u.type, h = u.handler; c == null || c.removeEventListener(f, h) }), t = [] }, i = "@amplitude/plugin-form-interaction-tracking-browser", s = "enrichment", o = function(u, c) { return Pe(void 0, void 0, void 0, function() { var f, h; return Re(this, function(p) { return c ? typeof document > "u" ? [2] : (f = function(v) { var g = !1; n(v, "change", function() { var m; g || c.track(Jf, (m = {}, m[Ka] = v.id, m[Xa] = Ja(v.name), m[Ga] = v.action, m)), g = !0 }), n(v, "submit", function() { var m, _; g || c.track(Jf, (m = {}, m[Ka] = v.id, m[Xa] = Ja(v.name), m[Ga] = v.action, m)), c.track(Bb, (_ = {}, _[Ka] = v.id, _[Xa] = Ja(v.name), _[Ga] = v.action, _)), g = !1 }) }, h = Array.from(document.getElementsByTagName("form")), h.forEach(f), typeof MutationObserver < "u" && (e = new MutationObserver(function(v) { v.forEach(function(g) { g.addedNodes.forEach(function(m) { m.nodeName === "FORM" && f(m), "querySelectorAll" in m && typeof m.querySelectorAll == "function" && Array.from(m.querySelectorAll("form")).map(f) }) }) }), e.observe(document.body, { subtree: !0, childList: !0 })), [2]) : (u.loggerProvider.warn("Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked."), [2]) }) }) }, a = function(u) { return Pe(void 0, void 0, void 0, function() { return Re(this, function(c) { return [2, u] }) }) }, l = function() { return Pe(void 0, void 0, void 0, function() { return Re(this, function(u) { return e == null || e.disconnect(), r(), [2] }) }) }; return { name: i, type: s, setup: o, execute: a, teardown: l }- api2.amplitude.com
Third-party analytics platform (Amplitude, Inc.), unrelated to Google or Zoom. Receives page views, form interactions, and a persistent device ID from the Meet/Zoom content script.