SaaS / B2B Software Events
This page defines domain-specific events for SaaS and B2B software products. Events are organized by growth loop stage to help you instrument the complete customer journey.
SaaS Customer Journey
Section titled “SaaS Customer Journey”The following diagram shows how events map to each stage of the SaaS growth loop.
Acquire
Section titled “Acquire”4 events covering lead capture and demo-driven acquisition.
| Event | Key Properties | Volume | Description |
|---|---|---|---|
demo.requested | source, company_size, use_case, utm_source, utm_medium | Low | Prospect requests a product demo |
demo.completed | demo_id, duration_minutes, attendees_count, outcome (qualified / not_qualified / no_show) | Low | Demo session finishes |
lead.captured | source (form / chat / webinar / content), lead_score, company_name, role | Low | New lead enters the pipeline |
user.signed_up | method, source, referral_code, plan | Low | New user account created |
Activate
Section titled “Activate”11 events covering onboarding, trial management, integrations, and workspace setup.
| Event | Key Properties | Volume | Description |
|---|---|---|---|
account.created | account_name, plan, team_size, industry | Low | New organization/account created |
onboarding.started | onboarding_version, steps_total | Low | User begins the onboarding flow |
onboarding.step_completed | step_name, step_index, steps_total, time_spent_seconds | Medium | Individual onboarding step finished |
onboarding.completed | onboarding_version, steps_completed, total_time_seconds, skipped_steps (array) | Low | Full onboarding flow completed |
trial.started | plan_name, trial_days, source | Low | Free trial begins |
trial.extended | plan_name, original_days, extended_days, reason | Low | Trial period extended |
trial.ended | plan_name, converted (bool), days_active, features_used_count | Low | Trial expires or converts to paid |
integration.connected | integration_name, provider, scopes (array), auth_method | Low | Third-party integration activated |
integration.disconnected | integration_name, reason | Low | Third-party integration removed |
workspace.created | workspace_name, type (personal / team / enterprise) | Low | New workspace or project space created |
workspace.settings_updated | workspace_id, fields_changed (array) | Low | Workspace configuration modified |
Engage
Section titled “Engage”13 events covering feature usage, search, reporting, dashboards, API activity, and data import/export.
| Event | Key Properties | Volume | Description |
|---|---|---|---|
feature.activated | feature_name, feature_tier, activation_method | Low | User activates a feature for the first time |
feature.used | feature_name, action, duration_seconds | High | User performs an action within a feature |
search.performed | query, results_count, filters_applied (array), search_context | High | User runs a search |
report.generated | report_type, date_range, filters (array), rows_count | Medium | User generates a report |
report.exported | report_type, export_format (csv / pdf / xlsx), rows_count | Low | User exports a report |
dashboard.viewed | dashboard_id, dashboard_name, widgets_count | High | User opens a dashboard |
dashboard.customized | dashboard_id, action (widget_added / widget_removed / layout_changed) | Low | User modifies a dashboard layout |
api.key_created | key_name, permissions (array), expiry_days | Low | New API key generated |
api.request_made | endpoint, method, status_code, response_time_ms | High | API call made by the customer’s integration |
api.rate_limit_hit | endpoint, limit, window_seconds | Medium | Customer hits an API rate limit |
import.started | source (csv / api / integration), record_type, rows_total | Low | Bulk data import initiated |
import.completed | source, record_type, rows_imported, rows_failed, duration_seconds | Low | Bulk data import finishes |
export.completed | export_type, format, rows_count, file_size_bytes | Low | Data export completed |
Monetise
Section titled “Monetise”8 events covering subscription changes, seat management, add-ons, and usage limits.
| Event | Key Properties | Volume | Description |
|---|---|---|---|
subscription.created | plan_name, billing_interval, mrr_cents, seats, trial (bool) | Low | New paid subscription activated |
subscription.upgraded | from_plan, to_plan, mrr_delta_cents, trigger | Low | Plan upgraded to a higher tier |
subscription.downgraded | from_plan, to_plan, mrr_delta_cents, reason | Low | Plan downgraded to a lower tier |
seat.added | plan_name, new_seat_count, total_seats, mrr_delta_cents | Low | Additional seat purchased |
seat.removed | plan_name, new_seat_count, total_seats, mrr_delta_cents | Low | Seat removed from subscription |
addon.purchased | addon_name, amount_cents, billing_interval | Low | Add-on module or feature purchased |
usage_limit.approaching | resource (api_calls / storage / seats / contacts), current_usage, limit, percentage_used | Medium | Usage nears the plan limit |
usage_limit.exceeded | resource, current_usage, limit, overage_action (blocked / throttled / billed) | Low | Usage exceeds the plan limit |
Advocate
Section titled “Advocate”6 events covering invitations, team growth, referrals, and reviews.
| Event | Key Properties | Volume | Description |
|---|---|---|---|
invite.sent | invite_method (email / link / slack), role, workspace_id | Medium | User invites someone to their workspace |
invite.accepted | invite_id, role, time_to_accept_hours | Low | Invited user joins the workspace |
team.member_added | role, department, team_size_after | Low | New member added to the team |
team.member_removed | role, reason, team_size_after | Low | Member removed from the team |
referral.link_shared | channel (email / social / direct), program_id | Low | User shares their referral link |
review.posted | platform (g2 / capterra / trustpilot / app_store), rating, prompted (bool) | Low | User posts a public review |
Operational
Section titled “Operational”5 events covering webhooks, SSO, audit logging, and permissions.
| Event | Key Properties | Volume | Description |
|---|---|---|---|
webhook.delivered | webhook_id, endpoint_url, event_type, status_code, response_time_ms | High | Outbound webhook delivered successfully |
webhook.failed | webhook_id, endpoint_url, event_type, status_code, retry_count, error_message | Low | Outbound webhook delivery failed |
sso.configured | provider (okta / azure_ad / google), protocol (saml / oidc), domain | Low (admin) | SSO connection configured |
audit_log.entry_created | actor_id, action, resource_type, resource_id, ip_address | High | Action logged to the audit trail |
permission.changed | actor_id, target_user_id, resource, old_role, new_role | Low (admin) | User role or permission modified |
Quick Start: Top 10 SaaS Events
Section titled “Quick Start: Top 10 SaaS Events”If you are just getting started, instrument these 10 events first. They cover the critical path from signup through monetisation.
import GrowthOS from '@growthos/js';
const gos = GrowthOS.init('YOUR_WRITE_KEY');
// 1. Signupgos.track('user.signed_up', { method: 'google_oauth', source: 'pricing_page', plan: 'free'});
// 2. Identifygos.identify('usr_42', { email: 'alex@acme.com', name: 'Alex Rivera', company: 'Acme Inc', plan: 'free'});
// 3. Onboarding startedgos.track('onboarding.started', { onboarding_version: 'v3', steps_total: 5});
// 4. Onboarding completedgos.track('onboarding.completed', { onboarding_version: 'v3', steps_completed: 5, total_time_seconds: 180, skipped_steps: []});
// 5. Integration connectedgos.track('integration.connected', { integration_name: 'slack', provider: 'slack', scopes: ['chat:write', 'channels:read'], auth_method: 'oauth'});
// 6. Feature activated (first use)gos.track('feature.activated', { feature_name: 'automated_reports', feature_tier: 'pro', activation_method: 'onboarding_prompt'});
// 7. Invite sent (viral loop)gos.track('invite.sent', { invite_method: 'email', role: 'member', workspace_id: 'ws_abc'});
// 8. Subscription createdgos.track('subscription.created', { plan_name: 'pro', billing_interval: 'annual', mrr_cents: 4900, seats: 5, trial: false});
// 9. Seat added (expansion revenue)gos.track('seat.added', { plan_name: 'pro', new_seat_count: 6, total_seats: 6, mrr_delta_cents: 980});
// 10. Feature used (engagement)gos.track('feature.used', { feature_name: 'automated_reports', action: 'scheduled_weekly_report', duration_seconds: 45});Event Count by Stage
Section titled “Event Count by Stage”| Stage | Count | Key Metric |
|---|---|---|
| Acquire | 4 | Demo conversion rate |
| Activate | 11 | Time to first value |
| Engage | 13 | Feature adoption breadth |
| Monetise | 8 | MRR growth and expansion |
| Advocate | 6 | Viral coefficient |
| Operational | 5 | System health |
| Total | 47 |