EU‑Medin
b2b-enterprise

B2B Event Schema: The Complete Reference

Lukas Meier Lukas Meier · · 9 min read
B2B Event Schema: The Complete Reference

B2B products don’t convert in a single session. A buyer researches for weeks, loops in stakeholders, requests a demo, negotiates a contract, and finally signs — often months after the first touch. Standard e-commerce tracking can’t capture this. You need an event schema built for long sales cycles, multi-user accounts, and revenue that compounds through expansion rather than one-off purchases.

This reference covers every B2B and enterprise event you should track in GA4: from first marketing touch through sales pipeline, onboarding, product adoption, and renewal. Each event includes its trigger, key parameters, and a ready-to-use data layer snippet. I’ve used this schema across six enterprise SaaS implementations — it works whether you’re selling $50/month seats or six-figure annual contracts.

Account Lifecycle Events

B2B tracking starts at the account level, not the user level. A single account may have dozens of users, and the buying decision involves multiple stakeholders. These events track the account from creation through its full lifecycle.

Event NameTriggerKey Parameters
account_createdNew company account registeredaccount_id, company_name, company_size, industry, signup_source
account_verifiedEmail or domain verification completedaccount_id, verification_method, time_to_verify
account_activatedAccount reaches activation criteriaaccount_id, activation_criteria, days_to_activate
account_upgradedPlan upgrade completedaccount_id, previous_plan, new_plan, mrr_change
account_downgradedPlan downgrade completedaccount_id, previous_plan, new_plan, mrr_change, downgrade_reason
account_churnedAccount cancellation finalizedaccount_id, plan, mrr_lost, churn_reason, lifetime_days
// Account lifecycle — data layer push
dataLayer.push({
  event: "account_created",
  account_id: "acc_8k2m9x",
  company_name: "Acme Corp",
  company_size: "51-200",
  industry: "financial_services",
  signup_source: "product_led"
});
Why it matters: Account-level events let you calculate metrics that user-level tracking cannot — like account activation rate, net revenue retention, and time-to-value per company size segment. When I implemented this for an enterprise CRM, we discovered that accounts with 51-200 employees activated 3× faster than accounts with 1,000+, which completely changed the onboarding approach.

Sales Pipeline Events

Enterprise deals move through a structured pipeline. Tracking each stage lets you measure conversion rates between stages, identify bottlenecks, and forecast revenue. These events map directly to what your sales team already uses in the CRM — the difference is you’re now capturing them in your analytics stack too.

Event NameTriggerKey Parameters
lead_qualifiedLead meets MQL or SQL criterialead_id, qualification_type, lead_score, source, company_size
demo_requestedProspect submits demo requestlead_id, company_name, use_case, team_size, utm_source
demo_completedLive demo session finishedlead_id, demo_duration, attendee_count, demo_type, sales_rep
proposal_sentSales sends pricing proposaldeal_id, account_id, proposal_value, plan_type, seats
proposal_viewedProspect opens the proposaldeal_id, view_duration, pages_viewed, viewer_role
contract_signedDeal closed — contract executeddeal_id, account_id, contract_value, term_months, seats, sales_cycle_days
// Sales pipeline — data layer push
dataLayer.push({
  event: "contract_signed",
  deal_id: "deal_4x8r2",
  account_id: "acc_8k2m9x",
  contract_value: 48000,
  term_months: 12,
  seats: 25,
  sales_cycle_days: 67
});
Why it matters: Without pipeline events in analytics, marketing can’t attribute revenue to campaigns and sales can’t identify where deals stall. The proposal_viewed event is especially valuable — tracking whether prospects actually read the proposal (and which pages they spend time on) gives sales reps actionable follow-up intelligence.

Multi-User and Team Events

Enterprise products are team tools. Tracking how users are invited, what roles they hold, and how teams adopt the product is critical for understanding seat utilization — which directly impacts expansion revenue and churn risk.

Event NameTriggerKey Parameters
user_invitedExisting user invites a teammateaccount_id, inviter_role, invitee_role, invitation_method
user_joinedInvited user accepts and joinsaccount_id, user_role, days_to_join, invitation_source
role_changedUser’s role or permissions updatedaccount_id, user_id, previous_role, new_role
team_createdNew team or workspace createdaccount_id, team_name, team_size, created_by_role
seat_limit_reachedAccount hits licensed seat capaccount_id, current_seats, seat_limit, plan
user_deactivatedUser removed or deactivatedaccount_id, user_id, deactivation_reason, days_active
// Multi-user — data layer push
dataLayer.push({
  event: "user_invited",
  account_id: "acc_8k2m9x",
  inviter_role: "admin",
  invitee_role: "member",
  invitation_method: "email"
});
Why it matters: Seat utilization is the strongest leading indicator of renewal. In my experience, accounts using less than 40% of their licensed seats have a 3× higher churn rate. The seat_limit_reached event is a direct expansion signal — when an account hits the cap, your sales team should be reaching out within 24 hours.

Feature Adoption Events

Enterprise products are complex. Tracking which features accounts actually use — and which they ignore — tells you whether they’re getting value from the product. This is product-qualified data that your customer success team needs.

Event NameTriggerKey Parameters
feature_activatedAccount uses a feature for the first timeaccount_id, feature_name, feature_category, days_since_signup
feature_usedAny feature interaction after first useaccount_id, feature_name, user_role, session_feature_count
integration_connectedThird-party integration enabledaccount_id, integration_name, integration_category, setup_duration
integration_disconnectedIntegration removed or disabledaccount_id, integration_name, disconnect_reason, days_connected
api_key_createdAccount generates an API keyaccount_id, api_scope, created_by_role
export_completedData export or report generatedaccount_id, export_type, record_count, format
// Feature adoption — data layer push
dataLayer.push({
  event: "feature_activated",
  account_id: "acc_8k2m9x",
  feature_name: "custom_reports",
  feature_category: "analytics",
  days_since_signup: 14
});
Why it matters: Feature adoption data powers product-led growth. When you know that accounts using 5+ features in the first 30 days retain at 92% versus 54% for those using fewer than 3, you can build targeted onboarding flows. The integration_connected event is particularly sticky — accounts with active integrations are 4× less likely to churn because switching costs increase.

Renewal and Expansion Events

In B2B, the initial contract is just the beginning. Net revenue retention — driven by renewals, expansions, and upsells — determines whether the business grows. These events track the post-sale revenue lifecycle.

Event NameTriggerKey Parameters
renewal_upcomingAccount enters renewal window (e.g., 90 days out)account_id, renewal_date, current_arr, days_until_renewal
renewal_completedContract renewed successfullyaccount_id, deal_id, new_arr, arr_change, term_months
expansion_opportunityUsage triggers upsell signalaccount_id, trigger_type, current_usage, plan_limit
seats_addedAccount purchases additional seatsaccount_id, seats_added, total_seats, mrr_increase
plan_upgradedMove to a higher-tier planaccount_id, previous_plan, new_plan, arr_increase
cancellation_requestedAccount initiates cancellationaccount_id, cancel_reason, current_arr, feedback, salvage_offer
// Renewal and expansion — data layer push
dataLayer.push({
  event: "seats_added",
  account_id: "acc_8k2m9x",
  seats_added: 10,
  total_seats: 35,
  mrr_increase: 500
});
Why it matters: Expansion revenue is the engine of B2B growth. Companies with 120%+ net revenue retention grow even if they acquire zero new customers. The expansion_opportunity event — triggered when usage approaches plan limits — is the automation hook your revenue team needs. One client automated outreach on this event and increased expansion revenue by 35% in a single quarter.

Support and Health Score Events

Enterprise accounts generate support interactions that are strong indicators of satisfaction — or risk. Tracking these alongside product usage gives you a complete customer health score.

Event NameTriggerKey Parameters
support_ticket_createdNew support ticket submittedaccount_id, ticket_priority, ticket_category, user_role
support_ticket_resolvedTicket marked as resolvedaccount_id, ticket_id, resolution_time_hours, satisfaction_score
nps_submittedUser completes NPS surveyaccount_id, nps_score, user_role, feedback_text_length
health_score_changedAccount health score crosses thresholdaccount_id, previous_score, new_score, change_drivers
csm_meeting_completedCustomer success check-in finishedaccount_id, meeting_type, attendee_count, action_items
escalation_triggeredIssue escalated to senior supportaccount_id, ticket_id, escalation_reason, account_arr
// Support and health — data layer push
dataLayer.push({
  event: "health_score_changed",
  account_id: "acc_8k2m9x",
  previous_score: 82,
  new_score: 61,
  change_drivers: "low_usage,open_tickets"
});
Why it matters: Health scores collapse multiple signals into a single actionable metric. The health_score_changed event fires when the score crosses defined thresholds — say, dropping below 70 — and triggers an automated alert to the CSM. In one implementation, this early warning system reduced unexpected churn by 28% because the team could intervene before customers reached the cancellation page.

B2B-Specific Metrics and KPIs

These events feed the metrics that B2B leaders actually care about. Here’s how they map together.

MetricFormula (from events)Benchmark
Net Revenue Retention (NRR)(Starting ARR + expansion − contraction − churn) / Starting ARR>110% good, >130% excellent
Sales Cycle LengthAvg sales_cycle_days from contract_signed30-90 days (varies by ACV)
Seat UtilizationActive users / licensed seats per account>60% healthy
Feature Adoption RateAccounts using feature / total accountsVaries by feature tier
Time to First ValueDays between account_created and account_activated<14 days ideal
Demo-to-Close Ratecontract_signed / demo_completed15-30% for enterprise
Expansion Revenue %ARR from seats_added + plan_upgraded / total new ARR>30% of new ARR
Customer Health ScoreComposite of usage, support, NPS, engagement>70 healthy, <50 at risk

Implementation Checklist

B2B Event Schema — Quick Start

  • Set up account_id as a user property in GA4 — this is your primary grouping dimension
  • Implement account lifecycle events first — they’re the foundation for everything else
  • Add company_size and industry as user-scoped dimensions for segmentation
  • Connect CRM pipeline events via server-side tracking — don’t rely on client-side for deal data
  • Track user_role on every event — admins, managers, and individual contributors have different adoption patterns
  • Fire feature_activated only on first use per account (not per user) to avoid inflation
  • Set up seat_limit_reached and expansion_opportunity as real-time alerts
  • Build a composite health score from usage frequency, feature breadth, support sentiment, and NPS
  • Use BigQuery export for account-level analysis — GA4 UI is user-centric by design
  • Validate that account_id joins correctly between your analytics and CRM data

Further Reading

Lukas Meier — Product Analytics Specialist based in Munich. Helping European teams build clean, GDPR-aware tracking across B2B and enterprise products. More about the author

Lukas Meier

Lukas Meier

analytics engineer

Product Analytics Specialist with 10 years of experience configuring tracking for e-commerce and SaaS products across Europe. Creator of EU-Medin.

more →