Skip to main content

Overview

Mercur collects anonymous usage data from the CLI tools and from running Mercur servers. It tells the maintainers how many installations exist, which versions of Mercur, Medusa and Node they run, which first-party plugins they use, and whether new installations keep running. That is what decides which upgrade paths to keep working and which features to invest in. Collection is on by default and can be turned off in one line. Nothing that identifies a company, a person, a shop or a URL ever leaves your machine.

Principles

  • Random ids only. A running server is identified by a random UUID stored in its own database. A developer machine is identified by a random UUID in the CLI config file. No hardware ids, no hostnames, no IP geolocation ($geoip_disable is set on every event).
  • Counts are ranges. Entity counts are sent as one of 0, 1-10, 11-100, 101-1k, 1k-10k, 10k-100k, 100k+. Exact numbers never leave.
  • Only first-party names. Plugin, module and provider names are reported only when they start with @mercurjs/ or @medusajs/. Anything else is counted (custom_plugin_count), never named. Block names are reported only for the official @mercurjs registry.
  • Never in the way. Every request has a 2 s timeout and every failure is swallowed. Nothing is sent from CI, from test runs, or from Medusa worker processes.
  • Auditable. Set MERCUR_TELEMETRY_DEBUG=true and every payload is printed instead of sent, so you can see exactly what would leave your machine.

How to opt out

Any one of these disables telemetry everywhere (CLI and server):
For the server only, in medusa-config.ts:
For the CLI only:

Where data goes

Events are sent to https://telemetry.mercurjs.com, a service operated by the Mercur team. The data is stored securely, used only in aggregate to guide development, and never shared with third parties or used to identify an installation or a person.

What the server sends

Events

Milestones: first_production_boot, first_seller, first_seller_approved, first_member_invited, first_offer, first_product_published, first_order, first_payout_account, first_payout_paid, first_commission_rule.

Properties

What the CLI sends

Applies to @mercurjs/cli and create-mercur-app. Properties on every CLI event: schema_version, source, cli_version, mercur_version, medusa_version, node_version, runtime, package_manager, os, arch, is_src_dir, is_ci, is_tty, is_agent (whether an AI coding agent is driving the terminal), is_docker, is_wsl, cloud_provider, project_id.

What is never collected

  • Source code, file names, directory structure or configuration files
  • Email addresses or any personal data (the optional email prompt was removed)
  • URLs, hostnames, IP addresses or geolocation
  • Names of custom plugins, modules, providers, routes or blocks from private registries
  • Exact entity counts, order values, or anything tied to a seller, customer or order