Can an AI agent use Umami?
As of 8 Oct 2026, an AI agent gets into Umami on its own, in a browser (the API key is paid), and does 75% of the core work.
- Find: Some docs for agents: llms.txt and an MCP server.
- Access: Signs up in a browser.
- Use: 75% of the work.
- Pay: Payment not tried: robots.txt keeps our agent off the payment page for now.
- Leave: Leaves on its own: Nothing to cancel, deletes its account.
To reach L4 · Runs on its own: do 80% of the core work (now 75%).
What the levels meanDriven 8 Oct 2026New level in the latest driveRules of 15 Oct 2026Claim this page
Written and checked by our agents from this drive's record. How we write.
Who gets in
- Agents on a serverGet in on their own.
- Signed agentsThe sign-up page opens.
- Agents in a person's browserNot measured yet.
Sign-up page checked 15 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from
What an agent can do in Umami.
On its own
- Sign up and use the whole dashboard in a browser with no bot check
- Create and delete websites, goals, funnels, links, pixels, boards and share links
- Export the account's analytics data by email
1 more
- Delete the account completely, including login access
What it can't, and why
- Record its own test visits or eventsthe site quietly drops any traffic that looks automated
- Use the documented API or the AI (MCP) integrationboth need a paid Pro plan
- Start or pay for a paid plan by itselfcheckout happens on a page the agent is not allowed to open
1 more
- See session replays or heatmapsneeds an even higher paid plan
Can an AI agent sign up for Umami on its own?
Yes, in a browser, without a human. web form at cloud.umami.is/signup, no CAPTCHA; no API sign-up
Does Umami have an MCP server, and can an agent connect to it?
Yes. Umami has an official MCP server. The server is hosted.
A new agent can get in on its own, in a browser: in the drive of 8 Oct 2026, our agent signed up, verified and did its work in the web app without a person. API keys need a paid plan, so it got none.
What the drive found
API–OpenAPIMCP · official–CLISDKllms.txtHow does an AI agent get an Umami API key?
In the drive of 8 Oct 2026, our agent was blocked at this step and got no key. plan-gated: Settings > API keys says 'API access requires a Pro plan'; Cloud keys are made in the UI only
Can an AI agent delete its Umami account?
Yes, in a browser, without a human. login afterwards 401 'Invalid email or password'. A short link still redirected 2 min later.
Not reached in this drive: paying. Every checkpoint, in detail
For the team behind Umami.
Where agents stop in Umami today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Offer a read-only API key on Hobby
- Make dropped bot hits visible to the sender
- Publish the OpenAPI fileStep-by-step guide
4 more fixes
- Serve server/discover and PRM on MCP Step-by-step guide
- Add a billing API or agent payment rail Step-by-step guide
- Add an account-delete API route
- Stop serving links after account deletion
- Claim it free and reply next to the result.
- A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
- Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
Details
Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.
Already claimed it? Open it in your dashboard.
Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.
Embed the badge on your site
Behind the level.
The part scores and the measures behind them.
Part scores and the measures · level history · paid plans
Part scores
- Holds up: 64 of 100, fair
Agent-ready setup
- llms.txt: found
- OpenAPI: not found
- MCP server: found
- CLI: not found
Not measured in this drive: Docs match (part of an Audit).
Security: reported privately to the owner
The measures
- Work done75
- Reliability79
- Crash test50
Level history
- 6 Oct 2026L2Gets in
- 8 Oct 2026new driveL3Does the work
Needs a paid plan
Not counted in the level. Our drive used free plan.
| Capability | Plan |
|---|---|
| Session replay | Business |
| Heatmaps | Business |
| Teams | Pro |
| Cloud REST API | Pro |
| Streaming API | Business |
| White-label | Business |
| Import | paid |
| SAML SSO | Enterprise |
| Audit log | Enterprise |
| Email reports | Pro |
| MCP server (channel) | Pro |
How Umami handles an agent's mistakes · 7 probes · core run 3×
Malformed requests, a retry, a wrong key and a short burst of reads on our agent's own account, and how Umami answered.
- Clear errors32
- Recovery67
- Silentvalid event from automated agentTrack custom events on a site200 {"beep":"boop"}; nothing recorded
- Silentpartial input: funnel step typed but not picked from the dropdownBuild a conversion funnel across ordered page/event stepsno request sent, dialog stays open, no error shown; nothing half-written (GET funnels empty)
- Vagueburst 15 sequential GET /v1/websites (bad key, only route reachable without Pro)credentials15x 401, no 429, no RateLimit/Retry-After headers
- Clearsend without website idTrack custom events on a site400 application/json {"error":"Missing website ID"}
- Clearbad enum for typeTrack custom events on a site400 {"error":{"message":"Bad request","code":"bad-request","status":400,"properties":{"type":{"errors":["Invalid option: expected one of \"event\"|\"identify\"|\"performance\""]}}}}
- Clearcreate a second website (repeat create) on HobbyAdd a website to track401 {"error":{"message":"Website limit reached.","code":"unauthorized","status":401}}; dialog shows "Website limit reached."
- Clearwrong API keycredentials401 application/json {"error":{"message":"Invalid API key.","code":"unauthorized","status":401}}
For agents and builders.
The drive as data, every checkpoint and all 78 attempts.
How an agent connects · 4 tips
/api/tools/umami.json/tools/umami.mdMCP get_tool {"slug":"umami"}
- On Hobby, drive the dashboard in a browser; click the suggested option in path/event comboboxes before Save or nothing is sent
- A 200 {"beep":"boop"} from /api/send means the hit was dropped as bot traffic
- With a Pro key use https://api.umami.is/v1 (Bearer, /us or /eu prefix) or MCP at https://cloud.umami.is/mcp
- Hobby allows one website; a second gets 401 'Website limit reached.'
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessdocs.umami.is/llms.txt (~290 pages, per-operation API reference as .md); .md URLs return text/markdown; no OpenAPI file found
- Sign upIn a browserweb form at cloud.umami.is/signup, no CAPTCHA; no API sign-up
- VerifyIn a browser6-digit code by mail in ~30 s, typed on /setup; then region and plan choice
- KeyBlockedplan-gated: Settings > API keys says 'API access requires a Pro plan'; Cloud keys are made in the UI only
- First callBlockeddocumented POST gateway.umami.is/api/send (no key) answered 200 {"beep":"boop"} and recorded nothing: Umami drops hits whose User-Agent looks like a bot; the keyed API needs a Pro key
- First actionIn a browseradded a website in the dashboard
- PayNot triedNo 402 or agent rail. Upgrade redirects to checkout.stripe.com, which robots.txt disallows for our agent, so whether the 14-day trial needs a card is unknown. No billing API.
- CancelNot neededNothing to cancel: our agent used the free plan.
- DeleteIn a browserlogin afterwards 401 'Invalid email or password'. A short link still redirected 2 min later.
The attempt log · 78 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| docs: Find docs and llms.txt | api | done ✓ | https://docs.umami.is/llms.txt 200 text/plain, ~290 links incl. per-operation API reference .md pages; umami.is/llms.txt 404; .md URLs return text/markdown (docs/cloud/api-key.md) |
| markdown negotiation: Accept: text/markdown on docs page | api | done ✓ | GET docs.umami.is/docs/cloud/api-key with Accept: text/markdown -> text/html, vary: accept-encoding only; .md URL -> text/markdown |
| robots/aipref: robots.txt and Content-Usage | api | done ✓ | umami.is/robots.txt: User-Agent: * Allow: / Disallow: /api/ Disallow: /lp/; no Content-Usage or Content-signal lines; docs.umami.is and cloud.umami.is robots.txt 404 (no rules) |
| mcp discover: POST server/discover to https://cloud.umami.is/mcp | api | partial ✓ | 401 application/json {"error":"invalid_token","error_description":"A Cloud API key is required."}; WWW-Authenticate: Bearer realm="Umami Cloud MCP", error="invalid_token" (no resource_metadata); CORS allows MCP-Session-Id header (legacy style) |
| well-known: Cards, PRM, AS metadata, ucp, auth.md, SKILL.md | api | done ✓ | 404 text/html for umami.is/.well-known/{ai-catalog.json,agent-card.json,agent.json,ucp,mcp/server-card.json}, umami.is/auth.md, /SKILL.md, cloud.umami.is/mcp/server-card, cloud.umami.is/.well-known/oauth-protected-resource and oauth-authorization-server; api.umami.is/.well-known/oauth-protected-resource 405 json |
| openapi: Find OpenAPI file | api | failed | 404 for docs.umami.is/openapi.json, umami.is/openapi.json; api.umami.is/v1/openapi.json 400 "No API key specified". npm @umami/api-client 0.81.0 says "generated from the Umami OpenAPI contract" but no public spec URL in llms.txt |
| sdk/mcp packages: npm view official packages | cli | done ✓ | @umami/mcp 0.2.0 (stdio MCP), @umami/api-client 0.81.0, @umami/node 0.4.0 on npm |
| pay public probes: 402 probes, registries, pricing | api | done ✓ | pay_probe.json: no 402 challenges (umami.is, api.umami.is, x402. 404), no MPP/Stripe Projects/Bazaar listings; pay_tx.json: refused, no 402 asking USDC. docs cloud/subscription: "Umami uses Stripe as its payment processor... sent to the Stripe checkout portal. All subscriptions come with a 14-day free trial." Pricing: Hobby $0 (1 website, no API/MCP/teams), Pro $20 (API, MCP), Business $200 (replays, heatmaps, streaming API). agents./mpp. subdomains 404. |
| sign up: Create Umami Cloud account | browser | done ✓ | cloud.umami.is/signup web form (name, email, password; also Google/GitHub). No CAPTCHA signals. Submitted in pw -> /setup. No documented API sign-up (docs/cloud/sign-up: web only). |
| verify email: Enter 6-digit code | browser | done ✓ | Mail "Please verify your email address" from support@umami.is arrived within ~30 s with 6-digit code; read headless via inbox, typed into /setup in browser -> advanced to Select region |
| trial checkout: See whether the Pro 14-day trial needs a card | browser | blocked | Clicking "Upgrade to Pro" (14-day free trial) on /setup redirects to https://checkout.stripe.com/c/pay/cs_live_…; checkout.stripe.com robots.txt disallows it for our agent, page not opened. Whether the trial asks for a card: unknown. |
| session: Get a logged-in session | browser | done ✓ | After choosing EU region and "Continue with Hobby", landed on cloud.umami.is/analytics/eu/websites as the agent's inbox |
| API key: Create a Cloud API key | browser | plan_gated ✓ | cloud.umami.is/settings/api-keys on Hobby: "API access requires a Pro plan ... Upgrade". docs/cloud/api-key: key created in Settings > API keys (UI only on Cloud); API-reference create-my-api-key: "Available on self-hosted installations." docs/cloud/mcp: "Cloud API keys, which are available on the Pro, Business, and Enterprise plans." |
| first API call: POST /api/send (documented, no key) to record a pageview | api | partial | POST https://gateway.umami.is/api/send {"type":"event","payload":{hostname,url:"/",website:c1df…}} -> 200 {"beep":"boop"}. Same from the browser (Chrome UA + AgentDrivesAgent/1.0) -> 200 {"beep":"boop"}. Stats afterwards: pageviews 0. The call is answered but our agent traffic is discarded as a bot. |
| first API call (keyed): GET https://api.umami.is/v1/websites | api | plan_gated ✓ | No key on Hobby. Without key: 400 {"error":{"message":"No API key specified.","code":"bad-request","status":400}}; bad key: 401 {"error":{"message":"Invalid API key.","code":"unauthorized","status":401}} |
| add website: Add a website in the dashboard | browser | done ✓ | Websites > Add website, name "AgentDrives Test", domain agentdrives.com -> listed, id [redacted] (web app GET /api/users/{id}/websites shows it) |
| Track custom events: Send a custom event "signup-click" with event data via documented /api/send, then see it under Events | browser | failed ✓ | Events page afterwards: web app GET /api/websites/{id}/events/stats -> {"events":0,...}; metrics?type=event -> []. Umami discards requests whose User-Agent looks like a bot; our agent labels itself honestly, so its own events are never recorded. No setting on Cloud website settings to allow it. |
| View pageviews, visitors, visits: Open website Overview and read stats for last 24h | browser | done ✓ | cloud.umami.is/analytics/eu/websites/[redacted] Overview rendered; web app GET /api/websites/{id}/stats -> {"pageviews":0,"visitors":0,"visits":0,"bounces":0,"totaltime":0,"comparison":{...}}. Zero because no traffic could be recorded. |
| Top referrers/pages/countries/browsers: Read Overview metric panels | browser | done ✓ | Overview panels load; web app GET /api/websites/{id}/metrics?type=referrer|path|browser|country -> [] each (no recorded traffic) |
| Realtime: Open Realtime screen | browser | done ✓ | Realtime page polls GET /api/realtime/{id} -> {"totals":{"views":0,"visitors":0,"events":0,"countries":0},...}; /active -> {"visitors":0}. Our agent's browser visit is not counted (bot filter). |
| Inspect sessions: Open Sessions list and one session profile | browser | partial ✓ | Sessions page loads; GET /api/websites/{id}/sessions -> {"data":[],"count":0}. No session exists to open: our traffic is not recorded, so a session profile/timeline could not be inspected. |
| Define a goal: Create goal "Pricing viewed" (Viewed page /pricing) | browser | done ✓ | Goals > + Goal; web app POST /api/websites/{id}/goals {"name":"Pricing viewed","parameters":{"type":"path","value":"/pricing"}} -> 200 id 19ed7d34-…; card shows Conversion rate 0/0 0% |
| Define a goal: Read goal back after reload | browser | done ✓ | Reload: GET /api/websites/{id}/goals lists "Pricing viewed"; GET …/goals/19ed7d34…/stats -> {"num":0,"total":0} |
| Define a goal: Rename goal via ellipsis > Edit | browser | done ✓ | POST /api/websites/{id}/goals/19ed7d34… {"name":"Pricing viewed v2",…} -> 200 name "Pricing viewed v2" |
| Define a goal: Use: conversion count after a /pricing view | browser | failed ✓ | Conversion stays 0/0: our /api/send pageview for /pricing is discarded as bot ({"beep":"boop"}), so no conversion could be produced |
| Define a goal: Delete goal via ellipsis > Delete > Confirm, read back | browser | done ✓ | DELETE /api/websites/{id}/goals/19ed7d34… -> {"ok":true}; after reload GET …/goals -> {"data":[],"count":0} |
| Build a funnel: Create funnel "Home to pricing" (/home -> /pricing, window 60) | browser | done ✓ | POST /api/websites/{id}/funnels {"name":"Home to pricing","parameters":{"window":60,"steps":[{path /home},{path /pricing}]}} -> 200 id c32a7667-… |
| Build a funnel: Read funnel back with per-step stats | browser | done ✓ | Reload: GET …/funnels lists it; GET …/funnels/c32a7667…/stats -> [{"value":"/home","visitors":0,"dropped":0,"dropoff":null},{"value":"/pricing","visitors":0,...}] |
| Build a funnel: Rename and change window to 30 | browser | done ✓ | POST …/funnels/c32a7667… {"name":"Home to pricing v2","parameters":{"window":"30",…}} -> 200; list shows "Home to pricing v2" |
| Build a funnel: Use: per-step counts after visiting /home then /pricing | browser | failed ✓ | Step counts stay 0: our pageviews are discarded as bot ({"beep":"boop"} on /api/send) |
| Build a funnel: Delete funnel and read back | browser | done ✓ | DELETE …/funnels/c32a7667… -> {"ok":true}; GET …/funnels -> {"data":[],"count":0} |
| Traffic over time: Overview chart time series | browser | done ✓ | Overview chart loads; GET /api/websites/{id}/pageviews?unit=hour -> {"pageviews":[],"sessions":[]} (empty: no recorded traffic) |
| Short link + click metrics: Create link to https://agentdrives.com/, open it, read clicks | browser | partial ✓ | Add link -> POST /api/links 200 id a111509d…, slug o9r86YJwQ; GET https://cloud.umami.is/q/o9r86YJwQ -> 302 location https://agentdrives.com/; link page stats afterwards {"pageviews":0,"visitors":0}: our click not counted (bot filter) |
| Tracking pixel + views: Create pixel, load it, read views | browser | partial ✓ | Add pixel -> POST /api/pixels 200 id 09d17ef0…, slug 0UJzHAvGY; GET https://cloud.umami.is/p/0UJzHAvGY returned image bytes; pixel stats afterwards pageviews 0 (bot filter) |
| Journeys: Open Journeys insight (3 steps) | browser | done ✓ | GET /api/websites/{id}/journeys?steps=3 -> []; page "No data available." |
| Segments: Save segment "Pricing visitors" (path = /pricing) | browser | partial ✓ | POST /api/websites/{id}/segments -> 200 id 13bff88b…, but saved filter is {"name":"path","operator":"eq","value":""}: the value picker only offers recorded values (none exist), typed /pricing was dropped, and the API accepted an empty value without error |
| Retention: Open Retention insight | browser | done ✓ | GET /api/websites/{id}/retention -> []; "No data available." |
| Attribution: Open Attribution insight (first click, viewed page) | browser | partial | Attribution page renders Model First click / Type Viewed page / Conversion step, "No data available."; no conversion step can be chosen without recorded pages, so no attribution query ran |
| Revenue: Open Revenue insight (USD) | browser | done ✓ | GET …/revenue/stats?currency=USD -> {"sum":0,"count":0,…}; revenue/chart, metrics, sessions all 200 empty |
| Core Web Vitals: Open Performance report | browser | done ✓ | GET …/performance/stats -> {"lcp":{"p50":0,"p75":0,"p95":0},…,"count":0}; chart and metrics by path/device 200 empty |
| Annotations: Add note "AgentDrives test drive started" on today | browser | done ✓ | Overview > Notes > Add note: POST /api/websites/{id}/annotations {"date":"2026-10-08T00:00:00.000Z","allDay":true,"note":"AgentDrives test drive started"} -> 200 id 4f9c854f…; GET …/annotations lists it |
| Boards: Create board "AgentDrives board" (mixed) | browser | partial ✓ | Boards > Add board -> POST /api/boards 200 id 909791a4…, opens /boards/{id}/design; components not placed (no data to show and time) |
| Public share: Create website share "Public stats" and open it | browser | done ✓ | Website settings > Share > Add: POST /api/websites/{id}/shares 200 slug nRoR5YhKUxtrsiWp. in browser the share page renders Overview+Events only (as configured), GET /api/share/{slug} 200 |
| Teams: Open Teams settings | browser | plan_gated ✓ | Pricing: Teams "Hobby -", Pro and up; docs/cloud/teams. Hobby account. |
| Cloud REST API: GET https://api.umami.is/v1/websites | api | plan_gated ✓ | Settings > API keys: "API access requires a Pro plan"; no key -> 400 "No API key specified."; pricing "API access Hobby -" |
| Streaming API: Check plan | none | plan_gated ✓ | Pricing: "Streaming API Hobby - Pro - Business"; no streaming docs page in llms.txt |
| Install tracking script: Load a page with the tracker so a pageview appears | browser | failed ✓ | Tracker sends to /api/send; from our agent's browser (UA Chrome + AgentDrivesAgent/1.0) /api/send -> 200 {"beep":"boop"}, stats stay 0. Our agent cannot produce a visible pageview. |
| Session replay: Open Replays | browser | plan_gated ✓ | Website settings: "Replays & Heatmaps, This feature requires a Business plan subscription." Pricing: Session replays Business+ |
| Heatmaps: Open Heatmaps | browser | plan_gated ✓ | Website settings: "Replays & Heatmaps, This feature requires a Business plan subscription." |
| Self-host: Check docs | none | skipped ✓ | docs/install.md: source, Docker Compose, Docker image, Helm (third-party). Not installed: no Docker in the drive sandbox. |
| White-label: Open Settings > White-label | browser | plan_gated ✓ | "White-label requires a Business plan"; docs/cloud/white-label: Business plan |
| Export data: Settings > Data > Export (website, last 30 days) | browser | done ✓ | available on Hobby (map said paid). Mail with download link: see next line. |
| Import data: Settings > Data > Import | browser | plan_gated ✓ | Settings > Data: "Import data ... Upgrade"; docs/cloud/import-data: import handled by the Umami team |
| SAML SSO: Check pricing | none | plan_gated ✓ | Pricing: "Enterprise ... Single sign on (SAML SSO)" |
| Audit log: Check pricing | none | plan_gated ✓ | Pricing lists audit log under Enterprise only; no Hobby UI |
| Email reports: Open Settings > Email reports | browser | plan_gated ✓ | "Email reports requires a Pro plan"; docs/cloud/email-reports: "starting at the Pro plan" |
| API key revoke: Revoke API key | browser | plan_gated ✓ | No key could be created on Hobby (API access requires a Pro plan) |
| API key use: Use API key | api | plan_gated ✓ | No key on Hobby; api.umami.is/v1 answers 400 "No API key specified." |
| Add a website: Read website back in list after reload | browser | done ✓ | GET /api/users/{id}/websites lists c1df5277… "AgentDrives Test" agentdrives.com |
| Add a website: Rename website in settings | browser | done ✓ | Website settings Save -> POST /api/websites/c1df5277… 200 name "AgentDrives Test 2"; after reload input shows "AgentDrives Test 2" |
| Add a website: Use: get tracking code and record a visit | browser | failed ✓ | Tracking code shown in settings; visits via the tracker endpoint /api/send from our agent return {"beep":"boop"} and are not recorded (see) |
| Add a website: Delete website (type DELETE) and read back | browser | done ✓ | Settings > Delete website > type DELETE > Delete. List right after still showed it; a few seconds later a new website could be created (Hobby limit 1) and GET /api/users/{id}/websites -> {"data":[],"count":0} |
| Add a website: Trial 2: create, list, delete website | browser | done ✓ | POST /api/websites 200 id [id] "AgentDrives Trial 2", listed; deleted via settings; later list empty |
| Add a website: Trial 3: create, list, delete website | browser | done ✓ | POST /api/websites 200 id [id] "AgentDrives Trial 3", listed; deleted via settings; later list empty |
| Export data: Download the export from the mail and open it | browser | done ✓ | Mail "Website export completed" arrived at 21:07:47 (~1 min); presigned S3 link -> 200 application/octet-stream 794; zip contains ['website_event.csv', 'event_data.csv', 'session_data.csv'] |
| View pageviews, visitors, visits: Trial 2: Overview stats on fresh website b56e693c | browser | done ✓ | GET /api/websites/{id}/stats 200 {"pageviews":0,"visitors":0,...} |
| Top referrers/pages/…: Trial 2: Overview metric panels | browser | done ✓ | 5x GET /api/websites/{id}/metrics 200 [] |
| Realtime: Trial 2: Realtime screen | browser | done ✓ | GET /api/realtime/{id} 200 totals 0; /active {"visitors":0} |
| Define a goal: Trial 2: create goal, read back, delete | browser | done ✓ | POST …/goals 200 id 7048199d…; reload GET …/goals lists it; DELETE …/goals/7048199d… {"ok":true}; GET …/goals -> count 0 |
| Build a funnel: Trial 2: create funnel, read back, delete | browser | done ✓ | POST …/funnels 200 id cdb7a773…; reload lists it; DELETE …/funnels/cdb7a773… {"ok":true}; GET …/funnels -> count 0 |
| View pageviews, visitors, visits: Trial 3: Overview stats on fresh website b56e693c | browser | done ✓ | GET /api/websites/{id}/stats 200 {"pageviews":0,"visitors":0,...} |
| Top referrers/pages/…: Trial 3: Overview metric panels | browser | done ✓ | 5x GET /api/websites/{id}/metrics 200 [] |
| Realtime: Trial 3: Realtime screen | browser | done ✓ | GET /api/realtime/{id} 200 totals 0; /active {"visitors":0} (rechecked in its own page load) |
| Define a goal: Trial 3: create goal, read back, delete | browser | done ✓ | POST …/goals 200 id 5432b19e…; reload GET …/goals lists it; DELETE …/goals/5432b19e… {"ok":true}; GET …/goals -> count 0 |
| Build a funnel: Trial 3: create funnel, read back, delete | browser | done ✓ | POST …/funnels 200 id 1abce95d…; reload lists it; DELETE …/funnels/1abce95d… {"ok":true}; GET …/funnels -> count 0 |
| cancel plan: Cancel a started plan | none | skipped | not tested: no plan or trial was started (Hobby free plan; the Pro trial goes through checkout.stripe.com, which robots.txt disallows for our agent). docs/cloud/subscription: "Navigate to Billing and click on the Manage plan button. You will be sent to the Stripe billing portal where you can ... Cancel your plan". docs/cloud/delete-account: "If you have a paid subscription, it will be cancelled." |
| delete account: Settings > Account > Delete account (type DELETE), then try to log in | browser | done ✓ | Login again with same email/password -> 401 {"message":"Invalid email or password","code":"INVALID_EMAIL_OR_PASSWORD"}. Short link /q/o9r86YJwQ afterwards -> HTTP 302. |
| : Open our short link and pixel after the account delete | api | partial ✓ | GET /p/0UJzHAvGY -> 200 image/gif. |
Also in Web analytics.
Plausible AnalyticsL3Gets in on its ownUmami vs Plausible Analytics
Fathom AnalyticsL1Can't sign up on its ownUmami vs Fathom Analytics
PirschL1Can't sign up on its ownUmami vs Pirsch