tode compared with other tools
Plausible in a Figma plugin, compared with tode
Plausible can count plugin events through its Events API. It has no user id by design, so it cannot show returning users or retention. When that is fine and when it is not.
, by Ilia
Plausible is a good tool for a website. It is small, it sets no cookies and it shows one clear page of numbers. If you already use it for your site, the obvious question is whether it can count plugin usage too. It can count events. It cannot count returning users, and for a plugin that is the number that matters most.
Running Plausible in a plugin
Skip the script. It is written to count pageviews by URL, and a plugin UI has a data: URL and no pages. Plausible also has an Events API for places where the script does not fit, and you can call it with fetch from the UI or from code.ts. The API wants a domain, an event name and a URL. Their docs suggest making up a URL that looks like a page for apps without one.
// code.ts
function track(name: string, props: Record<string, string | number> = {}) {
return fetch('https://plausible.io/api/event', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
domain: 'my-plugin.example', // the site you created in Plausible
name,
url: 'app://my-plugin/' + name,
props,
}),
});
}
track('fonts_replaced', { count: 12 });"networkAccess": { "allowedDomains": ["https://plausible.io"] }Events show up as goals once you add each name in the site settings. Reading the props you send is a Business plan feature.
The part that does not carry over
Plausible has no user id, on purpose. It recognises a visitor by hashing the IP address and the browser's user agent with a salt that changes every day. Tomorrow the same person is a new visitor. That is the privacy design, and for a website it costs little.
For a plugin it removes the questions you came with. A person who opens your plugin on five days this month counts as five visitors. There is no monthly active users number you can trust, no new against returning, no week-one retention. The API has no field for the Figma user id, and putting it in props gives you a column to filter by, not an identity the reports understand.
Side by side
| Plausible | tode | |
|---|---|---|
| Runs in a plugin | Through the Events API, not the script | Yes |
| User identity | None, a daily hash of IP and user agent | The Figma user id, stable across devices |
| Daily users | Yes, unique within the day | Yes |
| Monthly users, returning, retention | No | Yes |
| Feature usage | Custom events as goals | Actions by name, with distinct users per action |
| Numbers attached to an event | Custom properties, Business plan | One numeric metric per event, with median and percentiles |
| Country | From the request IP | From the request IP, IP not stored |
| Figma editor and mode | Send them as properties | Attached to every event |
| Self-hosting | Yes, the Community Edition | No |
| Price model | No free plan, 30-day trial, then by monthly pageviews and events | Free for 1 plugin, then $12 to $99 a month for all your plugins |
Pick Plausible if
You already pay for it for your site, your plugin is free, and all you want is a rough count of how often each feature runs. Twenty lines of code and you have that. It is also the right call if you have promised your users that nothing about them is stored, user id included, and you mean it literally.
Pick tode if
You want to know whether people come back. That needs a stable id, and the Figma user id is the only one a plugin has. tode uses it for counting and stores nothing else about the person: no name and no file contents. The list of what is and is not collected is in what a plugin knows about its users.
Keep Plausible on the website either way. The page that sells your plugin and the plugin itself are two different things to measure, and one tool does not have to do both.