B2B SaaS Events
Full canonical event taxonomy for B2B funnel routing across conversion destinations.
TrackStack uses a canonical event layer so product code stays stable while destination mappings evolve. Send one event name from your app; the edge maps it per platform.
Funnel stages
Events are grouped by funnel stage in the dashboard Configure → Events tab. Each event is individually toggleable per destination.
| Stage | Count | Purpose |
|---|
| Awareness | 6 | Traffic, content, and company identification |
| Interest | 8 | Intent signals before signup |
| Acquisition | 7 | Account and trial creation |
| Activation | 11 | Product usage and sales pipeline |
| Revenue | 12 | Billing, expansion, and churn |
| Product | 22 | Product-specific extensions (API tools, integrations) |
Total: 66 canonical events
Awareness
| Event | Description |
|---|
PageView | Page / SPA navigation |
ContentView | Blog, guide, comparison viewed |
HighIntentPageView | Pricing, demo, or security page |
AdLandingPageView | Paid campaign landing page |
CompanyIdentified | Anonymous visitor matched to company |
ReturningVisitor | Repeat session from known cookie / externalId |
Interest
| Event | Description |
|---|
FeatureUsed | Demo / free tool used |
LeadCaptured | High-intent form fill or content lead |
DemoIntent | User clicked book demo or opened scheduler |
DemoBooked | Demo or sales consultation booked |
ChatStarted | Live chat or support widget opened |
PricingInteraction | Pricing calculator or plan toggle |
DocsInteraction | Developer docs engagement |
IntegrationViewed | Integration marketplace page viewed |
Acquisition
| Event | Description |
|---|
SignUp | Account created |
SSOLogin | First SSO authentication completed |
EmailVerified | Email verification confirmed |
WorkspaceCreated | Team workspace provisioned |
InviteSent | Team invite sent |
StartTrial | Free trial started |
TrialActivated | Trial fully provisioned with product access |
Activation
| Event | Description |
|---|
FirstAction | First meaningful product action |
ApiKeyCreated | Production API key generated |
ApiCallSucceeded | Successful API request |
CsvUploaded | Bulk CSV upload initiated |
EnrichmentStarted | Enrichment job started |
EnrichmentCompleted | Enrichment job finished |
CreditConsumed | Billable credit consumed |
SalesQualifiedLead | Lead qualified by sales |
OpportunityCreated | CRM opportunity created |
PipelineQualified | Deal reached qualified stage |
MeetingHeld | Sales or onboarding meeting completed |
Revenue
| Event | Description |
|---|
AddPaymentInfo | Payment method added |
CheckoutStarted | Checkout flow started |
Purchase | Initial paid conversion |
SubscriptionStarted | Paid subscription activated |
PlanUpgrade | Higher plan selected |
SubscriptionRenew | Renewal processed |
ExpansionRevenue | Expansion MRR from seats or usage |
TopUpPurchased | Credit top-up or one-time purchase |
Refund | Refund issued — warehouse/CRM only by default |
Chargeback | Payment chargeback — warehouse/CRM only by default |
Churned | Subscription cancelled — warehouse/CRM only by default |
Reactivated | Churned customer returned to paid plan |
Product extensions
Product-specific events (LeadMagic-style) route to warehouse/CRM by default. Enable per destination only when you want ad-platform delivery.
| Event | Description |
|---|
ApiDocsViewed | API reference docs viewed |
ApiPlaygroundUsed | Interactive API playground used |
FirstSuccessfulApiCall | Customer first successful API response |
EndpointTested | Specific API endpoint tested |
EmailFinderUsed | Email finder tool used |
EmailValidationUsed | Email validation tool used |
MobileFinderUsed | Mobile finder tool used |
CompanyEnriched | Company enrichment completed |
ProfileEnriched | Person profile enrichment completed |
BulkJobStarted | Bulk enrichment job started |
BulkJobCompleted | Bulk enrichment job completed |
CreditsPurchased | Credit pack purchased |
CreditsLow | Credit balance crossed low threshold |
CreditsExhausted | Credit balance reached zero |
TeamMemberInvited | Team member invited from product |
SalesforceConnected | Salesforce integration connected |
HubSpotConnected | HubSpot integration connected |
SmartleadConnected | Smartlead integration connected |
ClayExportClicked | Export to Clay initiated |
WebhookCreated | Outbound webhook endpoint created |
WebhookDelivered | Webhook delivery succeeded |
WebhookFailed | Webhook delivery failed |
Capture pattern
trackstack.capture("SignUp", {
eventId: "evt_signup_001",
email: "jane@example.com",
pageUrl: "https://app.example.com/sign-up",
});
When each core event should fire
| Event | Trigger moment | Avoid |
|---|
PageView | Route/page becomes visible | Multiple fires for same page load |
LeadCaptured | Form successfully submitted | Firing on field focus |
SignUp | Account creation succeeds | Firing before server confirms |
StartTrial | Trial is provisioned | Sending when user only opens pricing |
FirstAction | First in-product value action | Counting passive navigation |
Purchase | Paid conversion confirmed | Client + server without dedup |
Refund | Refund processed | Sending to ad platforms by default |