# Himetrica: Full Documentation for LLMs
> Last updated: 2026-08-08
> Source: https://www.himetrica.com/llms-full.txt
Himetrica is a web analytics platform built for SaaS teams. It connects visitor behavior to revenue, tracking the whole journey from the first page view to the subscription payment in a single dashboard.
---
## Product Overview
Himetrica replaces a stack of tools. Instead of Google Analytics for traffic, Mixpanel for events, and the Stripe dashboard for revenue, it combines all three in one place. It is designed for bootstrapped SaaS founders, indie developers, and small product teams.
### Core Ideas
- Revenue-focused: analytics joined to payment data, so every channel has a CAC, an LTV, and an ROI
- Self-serve setup: one line of code to install, no analyst required
- Real time: data lands in seconds, not hours
- Full stack of signals in one product: page views, custom events, errors, Web Vitals, revenue
- Built for AI clients: a Read API and a hosted MCP server, so Claude or Cursor can answer questions about your data
---
## Features
### 1. Real-Time Analytics
Live dashboard showing current visitors, active pages, and a real-time event stream.
- Live visitor count
- Active page monitoring
- Real-time event stream
- Geographic distribution
URL: https://www.himetrica.com/features/analytics
### 2. Custom Event Tracking
Track any user action with custom properties: signups, purchases, button clicks, form submissions.
```javascript
// JavaScript
himetrica.track('purchase_completed', { price: 9.99, plan: 'pro' })
```
```swift
// Swift
Himetrica.shared.track("purchase_completed", properties: ["price": 9.99])
```
```kotlin
// Kotlin (Android)
Himetrica.shared.track("purchase_completed", mapOf("price" to 9.99))
```
URL: https://www.himetrica.com/features/events
### 3. Web Vitals Monitoring
Real user monitoring for Core Web Vitals on every page, with percentile tracking and rating distribution.
| Metric | Good |
|--------|------|
| LCP (Largest Contentful Paint) | < 2.5s |
| INP (Interaction to Next Paint) | < 200ms |
| CLS (Cumulative Layout Shift) | < 0.1 |
| FCP (First Contentful Paint) | < 1.8s |
| TTFB (Time to First Byte) | < 800ms |
Installed with a separate script: `https://cdn.himetrica.com/vitals.js`.
URL: https://www.himetrica.com/features/vitals
Docs: https://www.himetrica.com/docs/vitals
### 4. Error Tracking
Capture JavaScript exceptions with full stack traces and user context. See which errors affect the most users.
- Uncaught exceptions and unhandled promise rejections, captured automatically
- Optional `console.error` and `console.warn` intercept via `data-intercept-console="true"`
- Manual capture: `himetrica.captureError(error, context)` and `himetrica.captureMessage(message, level, context)`
- Grouping, deduplication, and rate limiting
- Installed with a separate script: `https://cdn.himetrica.com/errors.js`
URL: https://www.himetrica.com/features/errors
Docs: https://www.himetrica.com/docs/issues
### 5. Visitor Profiles
Identify returning visitors and merge anonymous sessions with identified users.
- Anonymous to identified merging (by email or custom userId)
- Cross-device identification via a stable userId
- Session timeline view
- UTM attribution per visitor
- Experience score from 0 to 100, built from load times, errors, and session depth
- Custom properties and tags
URL: https://www.himetrica.com/features/visitors
### 6. Behavior Tags
Two dimensions scored automatically from session data, with no configuration.
- Lifecycle stage: New, Exploring, Activated, Retained, and the churn-risk tags At Risk, Dormant, Churned
- Engagement level: Casual, Active, Power User
URL: https://www.himetrica.com/features/behavior-tags
### 7. User Flow Visualization
Sankey diagrams of navigation paths, entry and exit page analysis, path frequency, and drop-off identification.
URL: https://www.himetrica.com/features/user-flow
### 8. Revenue Attribution
Connect a payment provider to see revenue per marketing channel, LTV, CAC, and ROI per channel.
- MRR, ARR, churn rate tracking
- Top customers by revenue
- Revenue joined to the visitor timeline, so you see what a paying customer did before they paid
- Revenue is stored in a canonical currency with display siblings, so multi-currency accounts stay comparable
URL: https://www.himetrica.com/features/revenue
### 9. Channel ROI
Import ad spend from Google Ads, Meta Ads, and other platforms and combine it with revenue to get true CAC, LTV, and ROI per channel.
### 10. Funnel Analysis
Build custom funnels to track conversion paths and see where users drop off between steps.
### 11. Retention Cohort Heatmaps
Weekly and monthly retention cohorts as a heatmap.
### 12. Brand Monitoring
Add your brand name and keywords, and Himetrica scans forums, social media, blogs, and communities. New mentions appear in a live feed, broken down by source and keyword.
URL: https://www.himetrica.com/features/monitoring
### 13. AI Insights, ICP, and MCP
Query your analytics in natural language from Claude, Cursor, or any MCP client. AI Insights summarizes what changed and why, and the ICP profile describes the visitors most likely to convert.
URL: https://www.himetrica.com/features/ai
### 14. Scheduled PDF Reports
Recurring reports delivered by email, so the numbers reach people who never open the dashboard.
### 15. Customizable Dashboard
Drag-and-drop widgets. Custom layouts and views per team member.
---
## Installation
### HTML / Any Website
```html
```
All Himetrica browser scripts must run client side. Never add them to server-side or backend code.
### Next.js
```jsx
import Script from 'next/script'
export default function RootLayout({ children }) {
return (
{children}
)
}
```
### NPM Package (@himetrica/tracker-js)
```bash
npm install @himetrica/tracker-js
```
```javascript
import { HimetricaClient } from '@himetrica/tracker-js'
const himetrica = new HimetricaClient({
apiKey: 'YOUR_API_KEY',
trackVitals: true,
autoTrackErrors: true,
})
// Track events
himetrica.track('purchase_completed', { price: 9.99 })
// Identify users (userId enables cross-device merging)
himetrica.identify({ userId: 'user_123', name: 'John', email: 'john@example.com' })
// Clear the local identity, for example on logout
himetrica.reset()
```
### React Provider
```jsx
import { HimetricaProvider } from '@himetrica/tracker-js/react'
export default function App() {
return (
)
}
```
Hooks: `useTrackEvent()` and `useHimetrica()`.
### Swift SDK (iOS / macOS), Beta
```swift
// Package.swift
dependencies: [
.package(url: "https://github.com/himetrica/himetrica-swift", from: "1.0.0")
]
```
```swift
import Himetrica
@main
struct MyApp: App {
init() {
Himetrica.configure(apiKey: "YOUR_API_KEY")
}
var body: some Scene {
WindowGroup {
ContentView()
.himetricaLifecycle()
.himetricaDeepLink()
}
}
}
struct HomeView: View {
var body: some View {
NavigationStack { /* ... */ }
.trackScreen("Home")
}
}
Himetrica.shared.track("purchase_completed", properties: ["price": 9.99])
Himetrica.shared.identify(userId: "user_123", name: "John", email: "john@example.com")
```
### Android SDK (Kotlin), Beta
```kotlin
// build.gradle.kts, with mavenCentral() in your repositories
implementation("com.himetrica.tracker:himetrica-android:")
```
```kotlin
import com.himetrica.tracker.Himetrica
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
Himetrica.configure(this, "YOUR_API_KEY")
}
}
Himetrica.shared.trackScreen("HomeScreen")
Himetrica.shared.track("purchase_completed", mapOf("price" to 9.99))
Himetrica.shared.identify(userId = "user_123", email = "john@example.com")
Himetrica.shared.captureError(e, mapOf("screen" to "checkout"))
Himetrica.shared.reset()
```
Jetpack Compose:
```kotlin
import com.himetrica.tracker.compose.TrackScreen
@Composable
fun HomeScreen() {
TrackScreen("HomeScreen")
// ...
}
```
Docs: https://www.himetrica.com/docs/android
### React Native SDK, Beta
```bash
npm install @himetrica/tracker-react-native @react-native-async-storage/async-storage
```
```jsx
import { HimetricaProvider } from '@himetrica/tracker-react-native/react'
export default function App() {
return (
)
}
```
```jsx
import { useTrackScreen } from '@himetrica/tracker-react-native/react'
function ProfileScreen() {
useTrackScreen('Profile')
return ...
}
```
---
## Client SDK Reference
### JavaScript / TypeScript
| Method | Description |
|--------|-------------|
| `himetrica.track(event, properties?)` | Track a custom event |
| `himetrica.identify({ userId?, name?, email?, metadata? })` | Identify a user (userId enables cross-device merging) |
| `himetrica.pageview(path?)` | Manually track a page view |
| `himetrica.reset()` | Clear the stored visitor identity, for example on logout |
| `himetrica.captureError(error, context?)` | Manually capture an error |
| `himetrica.captureMessage(message, level, context?)` | Log a message at `info`, `warning`, or `error` |
### Swift
| Method | Description |
|--------|-------------|
| `Himetrica.configure(apiKey:)` | Initialize the SDK |
| `Himetrica.shared.track(event, properties:)` | Track a custom event |
| `Himetrica.shared.identify(userId:name:email:metadata:)` | Identify a user |
| `.trackScreen("Name")` | SwiftUI modifier to track screens |
| `.himetricaLifecycle()` | Handle app foreground and background |
| `.himetricaDeepLink()` | Track deep link opens |
### Android (Kotlin)
| Method | Description |
|--------|-------------|
| `Himetrica.configure(context, apiKey)` | Initialize the SDK |
| `Himetrica.shared.trackScreen(name, properties?)` | Track a screen view |
| `Himetrica.shared.track(event, properties?)` | Track a custom event |
| `Himetrica.shared.identify(userId, name?, email?)` | Identify a user |
| `Himetrica.shared.captureError(throwable, context?)` | Capture an exception |
| `Himetrica.shared.setReferrer(url)` | Attribute an install or deep link |
| `TrackScreen("Name")` | Composable to track screens |
### React Native
| Method | Description |
|--------|-------------|
| `HimetricaProvider` | React context provider |
| `useTrackScreen(name, path?)` | Hook to track screen views |
| `client.track(event, properties?)` | Track a custom event |
| `client.identify({ userId?, name?, email?, metadata? })` | Identify a user |
| `useHimetricaNavigation()` | Auto-track React Navigation |
---
## System Events
Himetrica emits its own events when a visitor's state changes. They are prefixed with `$` and are excluded from aggregate custom-event counts, so they never eat your quota-facing numbers.
| Event | Fires when |
|-------|-----------|
| `$identified` | An anonymous visitor is identified for the first time |
| `$engagement_changed` | Engagement level moves between Casual, Active, and Power User |
| `$lifecycle_changed` | Lifecycle stage moves, for example Exploring to Activated, or anything to churned |
| `$churned` | Convenience event fired alongside `$lifecycle_changed` when a visitor churns |
| `$first_conversion` | A visitor converts for the first time |
| `$returned` | A dormant or churned visitor comes back |
Docs: https://www.himetrica.com/docs/system-events
---
## Pricing
Signup starts a free trial and requires a card. MVP gets 60 days, Starter and Pro get 30 days. Business and Scale subscribe directly, with no trial. Pix subscriptions through Woovi also subscribe directly. Annual billing is 15% off. Prices are charged in USD or BRL.
| Plan | USD/mo | BRL/mo | Page views/mo | Events/mo | Projects | Members | Detailed data |
|------|--------|--------|---------------|-----------|----------|---------|---------------|
| MVP | $5 | R$19 | 10,000 | 50,000 | 1 | 1 | 6 months |
| Starter | $12 | R$49 | 200,000 | 1,000,000 | 5 | 3 | 6 months |
| Pro | $29 | R$119 | 500,000 | 2,500,000 | 10 | 8 | 6 months |
| Business | $79 | R$329 | 2,000,000 | 10,000,000 | 20 | Unlimited | 1 year |
| Scale | $199 | R$799 | 10,000,000 | 50,000,000 | 100 | Unlimited | 1 year |
### HiData engine
Every new project runs on HiData, the current high-performance engine. HiData projects get more included volume at the same price:
| Plan | Volume multiplier | Page views/mo on HiData | Events/mo on HiData |
|------|-------------------|-------------------------|---------------------|
| MVP | 1x | 10,000 | 50,000 |
| Starter | 3x | 600,000 | 3,000,000 |
| Pro | 5x | 2,500,000 | 12,500,000 |
| Business | 5x | 10,000,000 | 50,000,000 |
| Scale | 10x | 100,000,000 | 500,000,000 |
### Features by plan
| Feature | MVP | Starter | Pro | Business | Scale |
|---------|-----|---------|-----|----------|-------|
| Core analytics, MRR and revenue integrations | yes | yes | yes | yes | yes |
| API access and MCP server | yes | yes | yes | yes | yes |
| Error tracking, Web Vitals, Visit Pattern | no | yes | yes | yes | yes |
| PDF Reports, Channel ROI, brand monitoring, ICP | no | yes | yes | yes | yes |
| Premium integrations (Search Console, Sentry, Meta) | no | yes | yes | yes | yes |
| AI Insights | no | no | yes | yes | yes |
### Overage
Starter and above bill for volume past the included quota, per 10,000 units:
| Plan | Page views per 10k | Events per 10k |
|------|--------------------|----------------|
| Starter | $1.00 / R$5.00 | $0.50 / R$2.50 |
| Pro | $0.80 / R$4.00 | $0.40 / R$2.00 |
| Business | $0.50 / R$2.50 | $0.20 / R$1.00 |
| Scale | $0.30 / R$1.50 | $0.10 / R$0.50 |
MVP has no overage on purpose: the limit is a hard wall that surfaces the upgrade instead of an unexpected invoice.
### Free
Free is not a signup option. It is the fallback state for an org whose trial expired without converting, or that canceled. Ingest keeps running inside free quotas (30,000 page views, 150,000 events, 3 projects, 2 months of detailed data), but the dashboard stays locked behind an upgrade prompt until the org subscribes, so nothing is lost while the account is dormant.
### Data retention
Aggregate trends (daily traffic, top pages, sources, countries, event counts) are always available on every plan, so charts and dashboards keep their history. The retention period applies to detailed data: individual sessions, visitor timelines, and event properties.
URL: https://www.himetrica.com/pricing
---
## Integrations
### Revenue sources (available on every plan, including MVP)
| Provider | Type | What it tracks |
|----------|------|---------------|
| Stripe | Recurring SaaS | MRR, ARR, churn, LTV, new customers |
| LemonSqueezy | Recurring SaaS | MRR, subscriptions, one-time purchases |
| AbacatePay | Brazilian payments | Pix payments, subscriptions |
| Woovi | Brazilian payments | Pix and recurring Pix |
| RevenueCat | Mobile subscriptions | In-app subscriptions, revenue |
| Qonversion | Mobile subscriptions | In-app subscriptions, revenue |
| Shopify | Ecommerce | Orders and customers |
| Revenue API | Any provider | Customers, charges, and subscriptions you push yourself |
Stripe connects with a read-only restricted API key pasted into project settings. Himetrica syncs customers, subscriptions, and charges on a schedule and matches them to visitors by email.
### Growth integrations (require a paid plan, Starter and up)
| Provider | What it does |
|----------|--------------|
| Google Search Console | Search queries, impressions, and clicks alongside your traffic |
| Sentry | Mirrors issues into the Himetrica issue feed |
| Meta Conversions API | Forwards conversions to Meta server side |
| Meta Ads | Ad spend into Channel ROI |
---
## Tracking Capabilities
### Automatic (zero config)
- Page views, SPA-aware (Next.js, React Router, Vue Router, and others via the History API)
- Referrer source
- UTM parameters (source, medium, campaign, term, content)
- Device type, browser, OS
- Country and city, resolved from IP
- Session duration and stitching
- Entry and exit pages
### Opt-in
- Web Vitals via `vitals.js` or `trackVitals: true`
- JavaScript errors via `errors.js` or `autoTrackErrors: true`
- `console.error` and `console.warn` intercept via `data-intercept-console="true"`
- Custom events with properties
- User identification (userId, name, email, custom fields)
### Storage and cookies
By default the tracker stores the visitor ID in `localStorage` and session state in `sessionStorage`. When a project sets `cookieDomain`, the tracker switches to first-party `hm_*` cookies (`hm_vid`, `hm_sid`, `hm_sts`, `hm_ref`, `hm_utm`) so identity and UTM attribution survive across subdomains such as `www.example.com` and `app.example.com`. If the Meta Conversions API integration is enabled, Meta's `_fbp` and `_fbc` cookies are used as well, and conversions are forwarded to Meta server side. What is collected and shared is described in the privacy policy: https://www.himetrica.com/privacy
---
## APIs
Every API shares one base URL and one auth scheme.
- Base URL: `https://app.himetrica.com/api/v1`
- Authentication: `X-API-Key: hm_sk_...`
- Secret keys start with `hm_sk_` and are separate from the public API key used in the browser tracker. Find yours in Project Settings under "Secret Key (Server API)". Keys can be regenerated at any time, and the old key stops working immediately. Never expose a secret key in client-side code.
- API and MCP access is included on MVP and every plan above it.
- `GET /me` returns the projects a key can reach.
### Read API (GET only)
| Endpoint | Returns |
|----------|---------|
| `GET /projects/:projectId/analytics` | Overview stats with period comparison |
| `GET /projects/:projectId/analytics/timeseries` | Trends, `granularity=hour\|day\|week\|month` |
| `GET /projects/:projectId/analytics/realtime` | Active visitors right now |
| `GET /projects/:projectId/pages` | Pages ranked by views |
| `GET /projects/:projectId/pages/insights` | Per-page insights |
| `GET /projects/:projectId/sources` | Traffic sources, `groupBy=utmSource\|referrer\|...` |
| `GET /projects/:projectId/locations` | Geography, `groupBy=country\|city` |
| `GET /projects/:projectId/events` | Custom event metrics |
| `GET /projects/:projectId/events/names` | Distinct event names |
| `GET /projects/:projectId/events/timeseries` | One event over time |
| `GET /projects/:projectId/revenue` | MRR, churn, subscriptions |
| `GET /projects/:projectId/revenue/timeseries` | Revenue over time |
| `GET /projects/:projectId/revenue/top-customers` | Top customers by revenue |
| `GET /projects/:projectId/channels` | Channel ROI breakdown |
| `GET /projects/:projectId/channels/summary` | Channel ROI totals |
| `GET /projects/:projectId/visitors` | Search and list visitors, paginated |
| `GET /projects/:projectId/visitors/:visitorId` | One visitor profile |
| `GET /projects/:projectId/visitors/:visitorId/events` | That visitor's event timeline |
| `GET /me` | Key owner and accessible projects |
Most endpoints accept `startDate`, `endDate`, and `limit`. The visitors list also accepts `page`, `limit` (max 100), `search`, `country`, `device`, `source`, `identifiedOnly`, `sortBy` (`firstSeenAt`, `lastSeenAt`, `name`, `totalRevenueUsd`), `sortOrder`, and a JSON `filters` object.
The two per-visitor detail endpoints have their own tight limit of 10 requests per minute, on every plan, because each distinct visitor is a fresh cache key and every call reaches the engine. To pull visitors in bulk, page through the list endpoint instead.
```bash
curl "https://app.himetrica.com/api/v1/projects/{projectId}/analytics?startDate=2026-01-01&endDate=2026-01-31" \
-H "X-API-Key: hm_sk_your_secret_key"
```
Docs: https://www.himetrica.com/docs/read-api
### Server API (server-to-server tracking)
| Method | Path | Description |
|--------|------|-------------|
| GET | `/user-id?visitorId=abc123` | Resolve a browser visitor ID to a server-side user ID |
| POST | `/track` | Track a server-side event |
| POST | `/identify` | Update visitor traits (name, email, custom properties) |
`POST /track` body:
```json
{
"userId": "hm_usr_...",
"eventName": "subscription_renewed",
"properties": { "plan": "pro", "amount": 29.99 },
"timestamp": "2026-01-15T10:30:00Z",
"session": "latest"
}
```
- `userId`, `email`, or `visitorId`, one required, identifies the visitor
- `eventName` required: letters, numbers, underscores, hyphens
- `properties` optional, max 10KB
- `timestamp` optional ISO 8601, for backfilling
- `session` optional: `"latest"` attaches to the most recent session, `"new"` creates one, omit for no session
`POST /identify` body:
```json
{
"userId": "hm_usr_...",
"traits": { "email": "jane@example.com", "name": "Jane Doe", "plan": "enterprise" }
}
```
- `userId` is a stable external user ID used for cross-device merging
- `email` and `name` are stored as first-class visitor fields, everything else goes to visitor metadata
Full reference: https://www.himetrica.com/llms-server-api.txt
Docs: https://www.himetrica.com/docs/server-api
### Revenue API (push revenue from any provider)
| Method | Path | Description |
|--------|------|-------------|
| POST | `/revenue/customers` | Create a customer, or update the existing one. Matches by `externalId` first, then by email, so re-syncs never duplicate. Returns 201 on create, 200 on update |
| GET | `/revenue/customers` | List customers, paginated, `search` or `externalId` |
| GET | `/revenue/customers/:id` | Fetch one customer |
| PUT | `/revenue/customers/:id` | Update a customer |
| DELETE | `/revenue/customers/:id` | Delete a customer |
| POST | `/revenue/customers/:id/charges` | Record a charge |
| DELETE | `/revenue/charges/:chargeId` | Delete a charge |
| POST | `/revenue/customers/:id/subscriptions` | Create a subscription |
| PUT | `/revenue/customers/:id/subscriptions/:subId` | Update a subscription, including `status: "canceled"` |
| DELETE | `/revenue/customers/:id/subscriptions/:subId` | Delete a subscription |
| POST | `/revenue/batch` | Import customers with nested charges and subscriptions in one call |
Charges and subscriptions are idempotent on `externalId`, so retrying a webhook delivery or re-running an import script does not double-count revenue. Re-sending a charge updates amount, status, description, and payment method, but never `chargeDate` or `currency`, which are fixed at creation.
All amounts are stored in their original currency and converted to USD for aggregated metrics. Charges use the ECB reference rate of their `chargeDate`, available from 2023 onward, so a past charge always converts to the same USD value. Subscriptions use the current rate, since MRR is a present-value metric. Projects that bill in a single non-USD currency can set the display currency to "Original" and skip FX entirely.
Docs: https://www.himetrica.com/docs/revenue-api
### MCP Server
A hosted MCP server lets AI clients query your analytics in natural language.
- URL: `https://app.himetrica.com/api/v1/mcp`
- Clients: Claude.ai and ChatGPT connectors, Claude Desktop, Claude Code, Cursor, Codex CLI
- Claude Code: `claude mcp add himetrica https://app.himetrica.com/api/v1/mcp`
Tools exposed: `list_projects`, `get_project_summary`, `get_icp`, `get_analytics`, `get_timeseries`, `get_realtime`, `get_top_pages`, `get_traffic_sources`, `get_top_locations`, `get_events`, `list_events`, `get_event_visitors`, `search_visitors`, `get_visitor`, `get_visitor_events`, `get_revenue`, `get_revenue_timeseries`, `get_top_customers`, `get_channel_roi`, `list_funnels`, `get_funnel`, `create_funnel`, `update_funnel` (the last two save funnels to the dashboard). An OAuth connection can cover several projects (picked on the consent screen); then every tool takes `projectId` (name, domain or id).
All tools accept optional `startDate` and `endDate`.
Docs: https://www.himetrica.com/docs/mcp
---
## Rate Limits
Limits are enforced with a sliding window backed by Redis, and they fail open: if the limiter is unavailable, requests are allowed through. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`. Exceeding a limit returns `429 Too Many Requests`.
### Server API, per secret key
| Endpoint | Starter and above | Free and MVP | Window |
|----------|-------------------|--------------|--------|
| `POST /track` | 1,000 requests | 500 requests | 1 minute |
| `POST /identify` | 500 requests | 250 requests | 1 minute |
| `GET /user-id` | 100 requests | 100 requests | 1 minute |
| `POST /erase` | 60 requests | 60 requests | 1 minute |
| `/revenue/*` | 500 requests | 250 requests | 1 minute |
Write endpoints scale with the plan but never past the Starter ceiling, because they land on shared Postgres on every engine. `GET /user-id` and `POST /erase` are the same on every plan. Read endpoints scale further on HiData projects, up to 2x on Pro, 4x on Business, and 8x on Scale.
A project can also restrict its secret key to an IP allowlist in Project Settings. Requests from any other address get `403`.
### Client-side tracking
| Endpoint | Per API key | Per IP |
|----------|-------------|--------|
| Event tracking (global) | 10,000 / min | n/a |
| Page views | n/a | 10 / min |
| Custom events | n/a | 60 / min per key + IP |
| Web Vitals | 1,000 / min | 20 / min |
| Error tracking | 1,000 / min | 20 / min |
| Beacon (unload) | n/a | 10 / min |
| Heartbeat | n/a | 60 / min per key + IP |
| Identify | 300 / min | 120 / min per key + IP |
Free plans get half the per-key ceilings and a 30 / min custom-event burst. The per-IP limits are the same on every plan.
### Per-visitor
Custom events are additionally capped at 10 events per minute per visitor, so a runaway script or bot cannot drain your quota.
### Project suspension
If a project accumulates more than 50 dropped events in a 5-minute window from per-visitor rate limiting, custom events for that project are suspended temporarily (5 minutes, escalating to 15).
### Plan quotas
Monthly page view and custom event quotas are tracked per plan, with a grace period before anything is blocked. You get an email at 100% of quota, and requests start being rejected at 115% of quota, or at 200% on Business and Scale.
Docs: https://www.himetrica.com/docs/rate-limits
### Error responses
| Status | Meaning |
|--------|---------|
| 400 | Bad request, missing or invalid parameters |
| 401 | Unauthorized, missing or invalid secret key |
| 403 | Plan limit exceeded, or the plan does not include API access |
| 404 | Not found |
| 405 | Method not allowed (the Read API is GET only) |
| 429 | Rate limited |
| 503 | Service temporarily unavailable |
---
## Comparisons
### Himetrica vs Google Analytics
- One line of code versus a long setup
- Revenue attribution built in versus a separate integration
- Real time versus a 24 to 48 hour delay
- A dashboard a founder can read versus a tool that expects an analyst
### Himetrica vs Plausible / Fathom
- Revenue attribution (LTV, CAC, ROI) versus pageview counts only
- Custom events with properties versus limited events
- Visitor profiles and behavior tags versus anonymous-only aggregates
- Error tracking and Web Vitals versus analytics only
- Funnels, retention cohorts, and brand monitoring versus none of them
### Himetrica vs Mixpanel / Amplitude
- Self-serve, no analyst needed, versus enterprise complexity
- One script tag versus a full SDK integration project
- Flat pricing with predictable overage versus per-event pricing that scales unpredictably
- Revenue pulled straight from payment providers versus manual revenue events
URL: https://www.himetrica.com/compare
---
## Frequently Asked Questions
**How long does setup take?**
One script tag. Data appears in the dashboard in seconds, and you can see it flowing before you finish the page you were reading.
**Does Himetrica use cookies?**
By default it stores the visitor ID in `localStorage`. It switches to first-party `hm_*` cookies when you configure `cookieDomain` for cross-subdomain tracking, and the optional Meta Conversions API integration uses Meta's `_fbp` and `_fbc` cookies. The privacy policy lists everything that is stored and shared.
**How does Himetrica track returning visitors?**
It generates a random visitor ID stored in the browser. Calling `identify()` with an email or a stable `userId` merges that anonymous history into a single visitor profile, including across devices.
**What data is collected automatically?**
Page URL, referrer, UTM parameters, device type, browser, OS, country and city resolved from IP, session duration, and any custom events you send. Personal data reaches Himetrica only when you send it, through `identify()` or a revenue integration.
**Can I use Himetrica with a single-page application?**
Yes. The tracker detects History API navigation and tracks page transitions. It works with Next.js, React Router, Vue Router, and others.
**How do I connect Stripe?**
Create a read-only restricted API key in Stripe and paste it into project settings. Himetrica syncs customers, subscriptions, and charges on a schedule, and matches them to visitors by email.
**Can I send revenue from a provider you do not support?**
Yes. Use the Revenue API to push customers, charges, and subscriptions, either one at a time or through the batch endpoint. It is idempotent on `externalId`.
**Do I need a card to start?**
Yes. Signup starts a free trial with a card: 60 days on MVP, 30 days on Starter and Pro. Cancel any time before it ends and you are not charged.
**What happens when the trial ends and I do not subscribe?**
The account falls back to a locked free state. Data collection keeps running inside free quotas, so nothing is lost, but the dashboard stays behind an upgrade prompt until you subscribe.
**What is the data retention period?**
Detailed data (individual sessions, event properties, visitor timelines) lasts 6 months on MVP, Starter, and Pro, and 1 year on Business and Scale. Aggregate trends are always available on every plan, so charts keep their history.
**Is there a self-hosted option?**
Not currently. Himetrica is a cloud-hosted SaaS product.
---
## Links
- Website: https://www.himetrica.com
- Pricing: https://www.himetrica.com/pricing
- Documentation: https://www.himetrica.com/docs
- Web Tracker Docs: https://www.himetrica.com/docs/web
- Android Docs: https://www.himetrica.com/docs/android
- Swift SDK Docs: https://www.himetrica.com/docs/swift
- React Native Docs: https://www.himetrica.com/docs/react-native
- Read API Docs: https://www.himetrica.com/docs/read-api
- Server API Docs: https://www.himetrica.com/docs/server-api
- Revenue API Docs: https://www.himetrica.com/docs/revenue-api
- MCP Server Docs: https://www.himetrica.com/docs/mcp
- Rate Limits Docs: https://www.himetrica.com/docs/rate-limits
- System Events Docs: https://www.himetrica.com/docs/system-events
- Web Vitals Docs: https://www.himetrica.com/docs/vitals
- Error Tracking Docs: https://www.himetrica.com/docs/issues
- Changelog: https://himetrica.shipchanges.com/
- About: https://www.himetrica.com/about
- Blog: https://www.himetrica.com/blog
- Comparisons: https://www.himetrica.com/compare
- Alternatives: https://www.himetrica.com/alternatives
- NPM Package: https://www.npmjs.com/package/@himetrica/tracker-js
- Swift Package: https://github.com/himetrica/himetrica-swift
- Android SDK: https://github.com/himetrica/himetrica-android
- React Native SDK: https://github.com/himetrica/himetrica-react-native
- Web Tracker source: https://github.com/himetrica/himetrica-js
- Privacy Policy: https://www.himetrica.com/privacy
- Terms of Service: https://www.himetrica.com/terms
- Support: https://www.himetrica.com/support
- Server API reference for LLMs: https://www.himetrica.com/llms-server-api.txt