Menu
Instrumentation and self-hosting

A Product Analytics Instrumentation Plan for B2B SaaS

Build a practical B2B SaaS tracking plan covering accounts, users, product structure, meaningful events, sessions, privacy, validation, and governance.

Instrumentation evidence chain from a product decision through entity, event, context, metric, evidence, and action.
A tracking plan is useful when it preserves the chain from a decision to reviewable evidence and action.

Start with decisions, not events

A long event list can still produce poor product analytics. The problem is usually not a lack of captured clicks. It is that nobody agreed on the decision the data should support, the unit being measured, or the behavior that qualifies.

Begin with questions a product or customer team may act on:

  • Which customer accounts adopt a workflow?
  • Which roles use it, and does use spread beyond one champion?
  • Where do eligible users stop?
  • Which accounts returned after first use?
  • Did a release affect completion for a specific account segment?
  • Which sessions should be inspected before the team changes the workflow?

A vague question such as “Are customers engaged?” hides several different measurements. Which customers: all contracted accounts, active accounts, or workspaces eligible for a feature? What behavior: logging in, opening a page, completing a workflow, or returning to it? At what level: one user, several users inside an account, or the account as a whole? Over which period? Compared with what baseline? What evidence would help explain the result?

Use this planning sequence:

Planning sequence

Business decision → analytical question → entity → qualifying behavior → denominator → period → supporting evidence

A short worked example makes the contract concrete:

Fictional B2B example

Planning contract for Reporting onboarding
Planning stepExample
Business decisionDecide whether to redesign Reporting onboarding.
Analytical questionWhich eligible workspaces create and export a first report within 14 days of completing data-source setup?
EntityOperating workspace, rolled up to its commercial account.
Qualifying behaviorA successfully created non-template report followed by a successfully delivered export.
DenominatorWorkspaces with Reporting enabled and the required data source connected.
PeriodFirst 14 days after eligibility, compared across release cohorts.
Supporting evidenceUser role, Report builder page sequence, visit timing, error context, and selected session evidence.

This example does not require hundreds of events. It requires a clear definition of report_created, report_exported, eligibility, account context, and the visits that can explain failure or delay.

Define the B2B entities before defining metrics

B2B SaaS analytics needs more than a user table and an event stream. The minimum useful model usually contains the following entities:

Entities in a B2B product analytics instrumentation plan
EntityPurpose in the instrumentation plan
Project or productDefines the tracked application, module, or environment scope.
Commercial account or companyRepresents the customer relationship, contract, or reporting unit the business cares about.
Operating workspace, organization, or teamRepresents the in-product context where work actually happens.
UserRepresents a stable person-level product identity.
User-to-account membershipRecords that a user belongs to an account or workspace, with role and effective context.
Product areaGroups related workflows into a stable high-level domain such as Reporting or Administration.
Grouped page or featureRepresents the meaningful page, feature, or workflow used for adoption analysis.
Normalized raw pageRepresents a route pattern with dynamic identifiers and irrelevant variation removed.
Visit or sessionGroups an ordered sequence of behavior into one investigation unit.
Event or actionRepresents a point-in-time occurrence with identity, context, and event-specific properties.

A product may need both a commercial account and an operating workspace. One customer contract may contain several teams or workspaces. Conversely, an implementation partner or consultant may enter workspaces belonging to several customers. Decide which entity is the unit of sale, which is the unit of operation, and which should be the denominator for each metric. Do not collapse them merely because they sometimes share a name.

One user may have several memberships. Store those relationships explicitly, and preserve the account or workspace that was active when the event occurred. Do not reconstruct historical account context from the user’s latest membership or current “default account.” Memberships, roles, names, and account structures can change after the event.

For a deeper discussion of this account-aware model, see how to model companies and users alongside the broader guide to B2B product analytics.

B2B analytics entity model connecting commercial accounts, workspaces, users, memberships, product areas, pages, visits, and events.
B2B instrumentation needs both stable entities and event-time context, especially when users belong to several accounts.

Build identity and account context that survive change

Identity errors quietly corrupt every downstream metric. They split one user into several profiles, merge different people, assign behavior to the wrong account, or leave account-level adoption impossible to calculate.

Use stable internal IDs

Use opaque, stable internal identifiers for users, accounts, and workspaces. Names and email addresses are poor primary keys because they can change, differ in casing, be shared, be recycled, or contain personal data the analytics system does not need. An email address may be an approved descriptive attribute in a narrowly defined workflow, but it should not be the identity foundation.

The same principle applies to accounts. A company rename should change a display attribute, not the account ID. If the business supports account merges or splits, retain the historical mapping and event-time identifier rather than silently rewriting the past.

Treat “anonymous” as an analytics state, not a guarantee

Before signup or login, a product may assign an anonymous browser or device identifier. Those events can support aggregate page and acquisition analysis. They cannot reliably support company-level or known-user metrics until identity and active account context are established.

When the user identifies, document how the anonymous identifier is linked to the stable user ID. Identity-merge behavior differs between analytics systems and can affect historical events, multiple devices, shared browsers, and logout behavior. Test the exact implementation instead of assuming that a call named identify or alias behaves the same everywhere.

Also avoid treating the word “anonymous” as a legal conclusion. A pseudonymous browser identifier may still require privacy review depending on the data, purpose, and jurisdiction.

Preserve account switching and multiple memberships

For every account-scoped action, capture the active account or workspace at event time. This matters for:

  • users who switch between two customer workspaces;
  • employees who administer several internal business units;
  • consultants and agencies working across client accounts;
  • users who belong to both a parent organization and a project team;
  • shared devices and logout/login transitions.

Decide what account switching does to the visit. A product may start a new visit when the authorization context changes, or it may keep one visit and emit an explicit context-change marker. Either choice can work if it is documented and the event stream never leaves the active account ambiguous.

Capture role as event-time context when the analytical question needs it. A user who is an administrator today may have been a viewer when an earlier event occurred.

Keep non-production traffic separate

Internal, staging, demo, automated-test, and customer production traffic should be distinguishable from the first event. Prefer separate projects or environments where practical, backed by an explicit environment value and documented exclusion rules. Filtering later by employee email domains is fragile, unnecessary, and often incomplete.

Organize pages and product areas before URLs become noise

Raw URLs are technical addresses, not stable product concepts. Dynamic identifiers can make the same feature appear as thousands of different pages:

/companies/128/reports/451
/companies/931/reports/883

becoming:

Product area: Reporting
Grouped page or feature: Report details
Normalized raw page: /companies/:company_id/reports/:report_id

The three levels answer different questions:

  • Product area provides a stable high-level map. It helps compare broad domains such as Reporting, Billing, Administration, or Integrations.
  • Grouped page or feature is the main adoption and workflow level. It combines routes that represent the same meaningful product surface, such as Report details or Report builder.
  • Normalized raw page keeps technical route evidence after dynamic IDs, query variation, and other irrelevant differences are removed. It is useful for debugging, exact path analysis, and element-level evidence.

Do not use raw URLs as permanent feature names. Routes change during redesigns, IDs create high cardinality, and query strings may contain values that should never enter analytics. Normalize early, remove sensitive parameters, and keep the mapping rules reviewable.

Treat the hierarchy as maintained product metadata. Give rules owners, descriptions, test examples, effective dates, and change history. When a route or grouped feature changes, document whether historical data is reclassified or whether the new definition applies only from a specific version. A silent regrouping can change an adoption trend without any customer behavior changing.

Define an event taxonomy with precise triggers

A B2B SaaS event taxonomy is useful when it distinguishes the kind of evidence being captured. It should not turn every DOM change into a business outcome.

Signal types in a B2B SaaS event taxonomy
Signal typeWhat it representsTypical useMain limitation
Page viewA route or screen became the current product surface.Reach, navigation, discovery, and page sequence.Opening a page does not prove completion or value.
Generic interactionA click, form submit, element change, or similar UI action.Investigation, discovery, and interaction evidence.Front-end structure and labels can change.
Meaningful custom eventA stable semantic action defined by the product team.Adoption, funnels, retention, and workflow completion.Requires an exact trigger and owner.
System-generated eventAn action completed by a background job, automation, webhook, or scheduled process.Asynchronous outcomes and system behavior.Must distinguish system actor from human action.
Business outcomeA durable state change that matters to the customer or business.Activation, completed setup, delivered output, or collaboration.Often needs eligibility and authoritative server-side confirmation.

Name events for internal consistency

A common convention uses a stable object and past-tense action in snake_case, for example:

  • report_created
  • report_exported
  • integration_connected
  • member_invited

This is a practical pattern, not a universal standard. Title Case, spaces, or another convention can work if it is consistently documented and enforced. More important than casing is semantic precision.

If report_exported fires when a user clicks an Export button, the name overstates what happened. Either rename the click event to something such as report_export_requested or fire report_exported only when the system confirms the export was created or delivered. The trigger, event name, and qualifying behavior must describe the same occurrence.

Choose autocapture, client events, and server events deliberately

Autocaptured page views and interactions are useful for discovering paths, investigating UI behavior, and finding candidate workflows. They can also create noisy, mutable, or sensitive data if capture scope is not controlled. Autocapture alone normally cannot tell the team whether a report was successfully generated, an integration became usable, or an invitation created a valid membership.

Use explicitly defined custom events for important semantic behavior. Capture UI-only actions on the client when the browser is the source of truth. Capture durable outcomes on the server when the backend owns the state change, including asynchronous jobs that may finish after the user leaves the page.

Prefer one canonical producer for one logical event. If both client and server emit related signals, give them different meanings or a reconciliation and deduplication strategy. For example, integration_connect_submitted may be a client event, while integration_connected is the authoritative server outcome.

Add event properties without creating payload sprawl

An event name says what happened. Properties say in which analytical context it happened. Important events may need:

  • project ID;
  • account or workspace ID;
  • user ID or system actor;
  • visit or session ID;
  • role at event time;
  • product area;
  • grouped page or feature;
  • normalized URL or route pattern;
  • object type;
  • plan, feature flag, or eligibility context when required;
  • application or release version;
  • environment;
  • occurrence timestamp;
  • a stable event identifier or idempotency key when retries can create duplicates.

Do not attach every known field to every event. Large objects, free-form text, DOM content, report names, customer-entered queries, unbounded arrays, secrets, and mutable account profiles increase cost, cardinality, privacy risk, and ambiguity.

Separate behavioral event properties from mutable user or account attributes. An event property such as export_format: "csv" describes that occurrence. A company attribute such as current_plan: "enterprise" describes a mutable entity. When plan eligibility matters historically, capture an intentional event-time snapshot such as plan_at_event, while continuing to maintain the current plan on the account profile. Document the difference so analysts do not treat a latest-value attribute as historical truth.

Sample event

{
  "event": "report_exported",
  "occurred_at": "2026-07-29T10:14:22Z",
  "project_id": "prj_01",
  "account_id": "acct_0298",
  "user_id": "usr_1842",
  "visit_id": "visit_7711",
  "product_area": "Reporting",
  "grouped_page": "Report builder",
  "export_format": "csv"
}

project_id, account_id, and user_id are stable identity keys. visit_id, product_area, and grouped_page provide analytical context for the occurrence. export_format is specific to this event. occurred_at records when the product says the action happened; ingestion time, if the analytics system keeps it, should remain a separate operational timestamp.

Use a tracking-plan table as an implementation contract

A useful event tracking plan is more than event name plus description. It connects a business question to an exact trigger, qualifying behavior, required context, eligibility, privacy rule, owner, and validation method.

The examples below are fictional and intentionally avoid customer-entered values.

Compact tracking-plan example for an integration-connected event, including trigger, eligibility, properties, privacy, ownership, and validation.
A complete event definition connects the analytical question to the trigger, denominator, privacy rule, owner, and proof.

Fictional implementation examples

Tracking-plan implementation contract
Business questionEntityEvent or pageExact triggerQualifying behaviorRequired propertiesEligibility rulePrivacy noteOwnerValidation method
Which eligible accounts create a real report after entering the builder?Workspace, rolled up to commercial accountreport_created; grouped page Report builderBackend commits a new user-created report and returns success. Autosave-only drafts do not fire it.First successful non-template report creation in the analysis period.project_id, account_id, workspace_id if distinct, user_id, visit_id, role_at_event, report_type, product_area, grouped_page, app_version, environment, occurred_atReporting enabled; required data source connected; user has create permission.Do not send report title, query text, filter values, or rendered content.Reporting product manager and backend ownerContract test against allowed properties; integration test for one fire; production sample reconciled with committed report records.
Does account usage spread beyond the first champion?Account and membershipmember_invitedServer stores a new valid invitation for a person who is not already a member. A resend does not fire a new qualifying event.First valid invitation in the period, segmented by inviter role and intended role.Account, user, visit, inviter role, intended role, invitation source, environment, occurrence timeInviter has permission; account can add members; invitation is not a test fixture.Do not send invitee name, email address, message, or invitation token.Collaboration product manager and identity teamAPI test; compare unique invitation records; verify resends and failed validations do not double count.
Which accounts finish integration setup rather than only opening it?Workspace and accountintegration_connectedServer validates the connection and stores it as active, including an asynchronous success when applicable.First active connection for the integration type, with reconnections classified separately.Account, workspace, actor, visit when available, integration_type, connection_mode, role, app version, environment, occurrence timeIntegration available to the account; prerequisite configuration complete; actor authorized or explicitly marked as system.Never send credentials, API keys, tokens, secret names, raw endpoints, or payload samples.Integrations product manager and platform ownerIntegration test with success and failure paths; reconcile active connection records; inspect delayed job timestamps.
Are dashboards being shared beyond their creator?Account, dashboard, and userdashboard_sharedBackend successfully creates a share permission, group grant, or approved link configuration.First successful share of a saved dashboard; repeated edits are separate only when analytically useful.Account, user, visit, role, share_scope enum, dashboard type, product area, grouped page, environment, occurrence timeDashboard exists and is shareable; actor has permission; share target is valid.Do not send dashboard title, recipient names or emails, comments, or access tokens.Collaboration product manager and dashboard engineering ownerPermission-service test; verify failed attempts do not fire; compare with share records and allowed enum values.
Can authorized administrators complete billing settings changes safely?Commercial account and administratorbilling_settings_updatedBackend commits an approved non-payment billing setting and writes its audit record.Successful save containing at least one allowed change type.Account, user, role, change_type enum, app version, environment, occurrence timeCustomer-managed billing enabled; actor has billing-admin permission.Exclude payment data, addresses, tax identifiers, contact values, invoice content, and replay on protected fields or pages.Billing product manager, billing engineering, and privacy reviewerAudit-log reconciliation; role test; privacy-control test on the protected route; production canary review.

The table should contain only the workflows needed for current decisions. It is not a challenge to enumerate every action in the product.

Add a visit layer for sequence and timing

A raw event stream is a set of points. Product investigation often needs an ordered visit or session that connects page sequence, account context, timing, and evidence.

Define the visit method explicitly:

  • Session boundary: what starts a visit, what ends it, and whether logout, account switching, app restart, or cross-domain navigation creates a new one.
  • Inactivity threshold: how much event inactivity closes the visit. A vendor default is not a product requirement; choose and document a threshold that fits the workflow.
  • Page sequence: how route changes, grouped pages, redirects, and repeated views become an ordered path.
  • Multiple tabs: whether tabs share a visit ID, how concurrent page instances are identified, and whether overlapping active time is deduplicated.
  • Foreground and background state: whether a page is visible, hidden, minimized, or replaced by another tab. Browser visibility is a useful signal, not proof of attention.
  • Last-event problem: after the final captured action, the system does not know how long the user remained active unless it receives another signal.
  • Active-time signals: whether activity, visibility changes, page-leave signals, or periodic heartbeats extend observed engaged time.

Total elapsed duration and observed engaged time answer different questions. A 40-minute visit can contain five minutes of visible interaction and a long background period. Conversely, sparse events can understate reading, reviewing, or waiting that was genuinely part of the workflow. Heartbeats reduce uncertainty but introduce thresholds, delivery gaps, browser throttling, and multi-tab decisions.

Document the chosen method and its limitations. Do not describe engaged time as perfectly observed attention or as proof of product value. The distinctions in page views, visits, sessions, and engaged time should remain explicit in the implementation and the analysis.

Instrument eligibility and denominators, not only outcomes

An event can be perfectly implemented and still produce a misleading metric if the team does not know who could have performed it.

Eligibility matters when a feature is:

  • available only on an enterprise plan;
  • restricted to administrators;
  • dependent on a prerequisite integration or configuration;
  • optional rather than expected for every account;
  • unavailable while an account is still onboarding;
  • enabled gradually by release, workspace, region, or feature flag.

For each metric, define the eligible population and the point in time at which eligibility is evaluated. A plan can change during the period. A user can gain administrator permission. A prerequisite can be completed halfway through a visit. Decide whether the denominator uses eligibility at period start, eligibility at event time, or any eligibility during the period.

A B2B adoption metric may be written as:

Reporting workflow adoption

eligible active accounts with at least one qualifying report_exported event ÷ eligible active accounts in the selected period

The numerator and denominator must use the same account definition, project scope, environment, and period. Count each account once across the complete period; do not add daily unique-account counts to create a monthly unique count.

Eligibility also separates availability, discovery, and completion. An account cannot discover a feature it cannot access, and opening a page is not the same as completing the workflow. This distinction is also central to measuring product usage by company rather than treating every visit as account adoption.

Put privacy and security into the tracking plan

Privacy review is not a final checkbox after instrumentation ships. Capture scope, masking, access, retention, and deletion should be part of the event or page definition before implementation.

Apply these practical requirements:

  1. Collect only what the analytical purpose needs. Begin with the question and remove properties that do not change the decision.
  2. Keep sensitive values out of event names, page names, and URLs. Names propagate into dashboards, logs, alerts, exports, and downstream tools. Normalize routes and remove or block sensitive parameters.
  3. Mask sensitive screen content. Treat free-text fields, credentials, payment fields, private notes, and dynamically rendered customer data as protected unless a documented purpose and control set justify capture.
  4. Exclude protected elements and pages. Some billing, identity, administration, support, or secrets-management surfaces should have limited analytics or no replay rather than relying only on masking.
  5. Separate production and non-production environments. This improves both privacy review and analytical quality.
  6. Establish access control. Limit who can view raw events, user-level data, session evidence, exports, and unmasked content. Review access periodically.
  7. Define retention and deletion. State how long event and replay data are retained, how deletion requests propagate, and what happens to derived data and exports.
  8. Document processors and data flow where relevant. Know which SDKs, collectors, queues, vendors, warehouses, and replay systems receive the data.
  9. Test privacy controls before rollout. Use representative sensitive fields and routes in a safe environment, then verify production behavior with a controlled canary.
  10. Maintain governance records. Keep purpose, owner, lawful-basis or consent analysis where applicable, risk review, change history, and incident procedures appropriate to the system.

Validate instrumentation before and after release

A tracking plan is not complete when code is deployed. It is complete only when the team has verified the event contract in production and established ongoing data-quality monitoring.

Use a staged QA process:

1. Review the definition before coding

Confirm the business question, exact trigger, canonical producer, entity, required IDs, allowed values, eligibility, privacy rule, owner, and validation source. Reject vague definitions such as “when the user uses Reporting.”

2. Test the schema in a non-production environment

Use typed wrappers, schema validation, unit tests, or contract tests where the stack supports them. Test success, failure, retry, permission, account-switching, and duplicate-delivery paths.

3. Run a black-box journey

Perform the workflow as a real user would, then inspect the resulting page sequence, event, properties, account context, and visit. Build at least one temporary query using the event to prove that the intended question can be answered.

4. Validate a production canary

Release to a controlled account or cohort. Compare analytics with the authoritative application record, audit log, or database count where appropriate. Check delayed and asynchronous outcomes before declaring success.

5. Monitor continuously

Track missing required properties, unexpected values, event-volume shifts, duplicate rates, stale app versions, schema violations, and sudden changes in identity or environment mix. Assign alerts to an owner who can investigate them.

QA checklist

The QA checklist should verify that:

  • the event fires exactly once for one qualifying occurrence;
  • the exact trigger matches the tracking-plan definition;
  • user, account, workspace, project, and visit IDs are present and correct;
  • active account context is correct for multi-account users;
  • properties use expected types, formats, and allowed values;
  • the environment is correct;
  • occurrence and ingestion timestamps are plausible;
  • dynamic URLs are normalized as expected;
  • sensitive values are absent from names, URLs, properties, and replay;
  • duplicate and missing events are investigated rather than silently accepted;
  • client and server counts are reconciled where they describe related stages;
  • late, retried, offline, and asynchronous events behave as documented.

Version definitions and assign governance

Instrumentation is a product interface. Changing it without a migration plan breaks reports just as changing an API contract breaks clients.

Every important event, entity, and page rule should have:

  • a responsible product owner and engineering owner;
  • a plain-language description;
  • an exact trigger and canonical producer;
  • required and optional properties with types and allowed values;
  • eligibility and privacy notes;
  • implementation locations;
  • validation method;
  • effective date and change history;
  • deprecation state and replacement, when applicable.

Use a naming review before new events enter production. Prefer backward-compatible additive changes when they preserve meaning. A new optional property may not require a new event, but a changed trigger, changed unit of analysis, or redefined qualifying behavior usually needs a new event or explicit schema version. Keep the old definition available long enough to explain historical reports.

Do not silently change report_exported from “export request accepted” to “file successfully delivered.” The chart may improve or decline solely because the event changed. Historical comparability depends on knowing which definition applied when.

Deprecate deliberately: document the replacement, update queries, stop the old producer, monitor residual traffic, and retain the definition in the catalog. Audit the tracking plan periodically and after major releases, identity changes, pricing or permission changes, route redesigns, and analytics migrations.

Implement the plan in phases

The exact order should match the product’s decisions, risks, architecture, and privacy obligations. A practical sequence is:

Phased product analytics implementation plan
PhaseFocusMinimum outputsExit criteria
Phase 1: FoundationStable account and user identity; project and environment context; page views; normalized product hierarchy; visit IDs; privacy controls.Identity contract, account/workspace model, environment separation, normalized route tests, session method, capture exclusions.The team can attribute valid production page activity to the right project, account, user, and visit without sensitive test leakage.
Phase 2: Meaningful behaviorCore workflow events; eligibility; important outcomes; key account and user attributes.Small semantic event set, tracking-plan rows, denominator definitions, server/client ownership, validation queries.The team can answer its highest-priority adoption and completion questions with reconciled production data.
Phase 3: Investigation and qualityReplay or session evidence; broader interaction tracking; QA automation; anomaly monitoring.Prioritized session evidence, schema checks, duplicate monitoring, missing-property alerts, production canaries.A metric can lead to inspectable evidence, and data-quality regressions have owners and alerts.
Phase 4: GovernanceOwnership; versioning; audits; documentation; retirement of unused events.Catalog ownership, change review, deprecation process, history, periodic audit schedule.Definitions can evolve without silently breaking historical comparability or privacy controls.

A team with a high-risk billing flow may implement privacy exclusions and authoritative server events before broad page analytics. A young product still discovering its structure may begin with normalized pages and visits, then add semantic events only for the first critical workflows. The sequence is a decision framework, not a maturity score.

Common instrumentation mistakes

  1. Tracking every click before defining questions. Volume grows faster than understanding.
  2. Using names or email addresses as primary identifiers. Mutable and sensitive attributes become an unreliable identity layer.
  3. Losing account context for multi-account users. Events are later assigned to a default or current account that was not active at the time.
  4. Treating URLs as stable feature names. Dynamic paths fragment analysis and redesigns rewrite the apparent product map.
  5. Mixing production and test traffic. Internal use, demos, staging, and automated tests distort account and user metrics.
  6. Using page views as proof of meaningful adoption. A page can be opened without a workflow being completed.
  7. Creating events with vague triggers. Different clients or engineers fire the same name at different stages.
  8. Changing event semantics without versioning. Historical trends stop being comparable.
  9. Collecting sensitive information unnecessarily. Free text, credentials, content, and identifiers create risk without improving the decision.
  10. Failing to define the denominator. Feature usage is interpreted without knowing which accounts or roles were eligible.
  11. Assuming engaged time equals value. Observed active time is method-dependent and does not reveal intent by itself.
  12. Skipping production validation. A clean development event can be missing, duplicated, blocked, delayed, or misattributed in real traffic.
  13. Building dashboards before checking event quality. Polished charts can make a broken implementation look authoritative.

How Hymetry structures B2B product data

Hymetry is account-centric product intelligence for B2B SaaS. Its product model connects identified behavior across Pages, Companies, Users, and Visits so teams can move from an aggregate signal to the accounts, people, product surfaces, and sessions behind it.

  • Identity and account context: Captured behavior can be connected to a project, user, company or account, page, visit, timestamp, and interaction context. Reliable company- and user-level analysis still depends on the integration providing valid identity.
  • Pages: Hymetry organizes raw or normalized URLs into grouped pages or features and product areas. This gives teams a maintainable level for adoption and engagement while preserving raw-page evidence for closer inspection.
  • Companies: Account-level views connect adoption breadth, active users, page usage, engagement, trends, and supporting evidence.
  • Users: User-level views show the individuals behind an account pattern, including their page use, activity, company context, and related visits.
  • Visits: A Visit is the session-level evidence layer. It connects ordered pages, timing, interaction context, and replay evidence back to the account, user, page, or signal that prompted investigation.

This structure can provide a useful instrumentation baseline: account and user identity, normalized product structure, page activity, visits, and inspectable session evidence. It does not eliminate meaningful-event planning. A page view cannot by itself prove that an integration became usable, a report was delivered, or an invitation created collaboration. Those outcomes still need explicit product definitions, eligibility, authoritative triggers, and validation.

Hymetry’s privacy controls are intended to keep capture deliberate by supporting configured filtering, masking, ignored fields and routes, and deployment choice. Teams remain responsible for defining capture scope and reviewing their own legal, security, retention, and governance requirements.

Frequently asked questions

What is a product analytics instrumentation plan?

It is a maintained contract that connects product decisions to entities, identities, page structure, event definitions, properties, sessions, eligibility, privacy rules, owners, and validation. A spreadsheet of event names alone is not a complete plan.

How many events should a B2B SaaS product track?

There is no useful universal number. Start with the smallest set that answers the current product and account-level decisions. Add events when a stable semantic outcome cannot be measured from existing pages, visits, or events. Remove or deprecate events that have no owner or decision use.

Is autocapture enough for product analytics?

Autocapture is useful for discovery, navigation, and investigation. It is usually not enough for important outcomes whose meaning depends on backend success, eligibility, or business state. Use explicit custom events or carefully maintained page groupings for those questions.

How should a product track one user in several accounts?

Use one stable user ID plus explicit user-to-account memberships. Every account-scoped event should preserve the active account or workspace at event time. Do not assign all historical behavior to the user’s current or default account.

What is the difference between an event property and an account attribute?

An event property describes one occurrence, such as export_format or role_at_event. An account attribute describes a mutable entity, such as current plan or lifecycle stage. Capture an event-time snapshot only when historical context is needed, and label it clearly.

When is instrumentation finished?

Not at deployment. The event must pass schema and journey tests, appear correctly in production, reconcile with an authoritative source where appropriate, avoid sensitive data, and remain under monitoring and ownership. Instrumentation then becomes an ongoing governed system rather than a one-time project.

Sources

Accessed 3 August 2026. Vendor documentation is used to illustrate implementation patterns, not as a universal standard.

  1. Amplitude — Plan your taxonomyhttps://amplitude.com/docs/data/data-planning-playbook
  2. Amplitude — Track unique usershttps://amplitude.com/docs/data/sources/instrument-track-unique-users
  3. Amplitude — Monitor your data with Observehttps://amplitude.com/docs/data/validate-events
  4. Twilio Segment — Analytics.js implementation guidehttps://segment.com/docs/getting-started/implementation-guide/
  5. Twilio Segment Spec — Common fieldshttps://segment.com/docs/connections/spec/common/
  6. Twilio Segment Spec — Identifyhttps://segment.com/docs/connections/spec/identify/
  7. Twilio Segment Spec — Grouphttps://segment.com/docs/connections/spec/group/
  8. Twilio Segment Spec — Trackhttps://segment.com/docs/connections/spec/track/
  9. Twilio Segment Spec — Pagehttps://segment.com/docs/connections/spec/page/
  10. Twilio Segment Spec — Aliashttps://segment.com/docs/connections/spec/alias/
  11. Twilio Segment — Protocols Tracking Planhttps://segment.com/docs/protocols/tracking-plan/create/
  12. Mixpanel — Identity Management Overviewhttps://docs.mixpanel.com/docs/tracking-methods/id-management
  13. Mixpanel — Identifying Users with Simplified ID Mergehttps://docs.mixpanel.com/docs/tracking-methods/id-management/identifying-users-simplified
  14. Mixpanel — Group Analyticshttps://docs.mixpanel.com/docs/data-structure/group-analytics
  15. Mixpanel — Event Deduplicationhttps://docs.mixpanel.com/reference/event-deduplication
  16. PostHog — Sending eventshttps://posthog.com/docs/getting-started/send-events
  17. PostHog — Autocapturehttps://posthog.com/docs/product-analytics/autocapture
  18. PostHog — Product analytics best practiceshttps://posthog.com/docs/product-analytics/best-practices
  19. PostHog — Path cleaninghttps://posthog.com/docs/product-analytics/path-cleaning
  20. Snowplow — Structuring data with schemashttps://docs.snowplow.io/docs/fundamentals/schemas/
  21. Snowplow — Schema versioninghttps://docs.snowplow.io/docs/fundamentals/schemas/versioning/
  22. Snowplow — Failed events and validation failureshttps://docs.snowplow.io/docs/fundamentals/failed-events/
  23. W3C — Page Visibility Level 2https://www.w3.org/TR/page-visibility-2/
  24. OWASP — Logging Cheat Sheethttps://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
  25. NIST — Privacy Frameworkhttps://www.nist.gov/privacy-framework
  26. European Union — General Data Protection Regulation, Article 5 principleshttps://eur-lex.europa.eu/legal-content/EN/TXT/?uri=celex%3A32016R0679
  27. UK Information Commissioner’s Office — Data minimisationhttps://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/data-protection-principles/a-guide-to-the-data-protection-principles/data-minimisation/
  28. CNIL — Draft recommendation concerning session replay tools, submitted for public consultation in 2026 and non-bindinghttps://www.cnil.fr/sites/default/files/2026-02/recommendation_draft_session_replay.pdf
  29. Hymetry — Pageshttps://hymetry.com/product/pages/
  30. Hymetry — Companieshttps://hymetry.com/product/companies/
  31. Hymetry — Usershttps://hymetry.com/product/users/
  32. Hymetry — Visitshttps://hymetry.com/product/visits/
  33. Hymetry — Privacy Controlshttps://hymetry.com/product/privacy-controls/
  34. Hymetry — Open-source repositoryhttps://github.com/Hymetry/Hymetry
  35. Hymetry — Demo projecthttps://app.hymetry.com/projects/demo/

About Hymetry

Hymetry is account-centric product intelligence for B2B SaaS. It helps teams understand how customer companies and the users inside them adopt and use their product.