Activation funnel across all tenant companies
+| Company | +Wizard | +Path | +Milestones | +First Job / Quote | +First Invoice | +Workflow Done | +Widget Dismissed | +Status | +
|---|---|---|---|---|---|---|---|---|
| + @row.CompanyName + | ++ @if (row.WizardCompleted) + { + + } + else + { + + } + | ++ @if (!string.IsNullOrEmpty(row.OnboardingPath)) + { + @row.OnboardingPath + } + else + { + — + } + | +
+ @{
+ var pct = row.TotalSteps == 0 ? 0 : row.StepsCompleted * 100 / row.TotalSteps;
+ var barColor = pct == 100 ? "bg-success" : "bg-primary";
+ }
+
+
+
+
+
+ @row.StepsCompleted/@row.TotalSteps
+ |
+ + @{ + var firstActivity = row.FirstJobCreatedAt ?? row.FirstQuoteCreatedAt; + } + @(firstActivity.HasValue ? firstActivity.Value.ToString("MMM d, yyyy") : "—") + | ++ @(row.FirstInvoiceCreatedAt.HasValue ? row.FirstInvoiceCreatedAt.Value.ToString("MMM d, yyyy") : "—") + | ++ @(row.FirstWorkflowCompletedAt.HasValue ? row.FirstWorkflowCompletedAt.Value.ToString("MMM d, yyyy") : "—") + | ++ @(row.GuidedActivationDismissedAt.HasValue ? row.GuidedActivationDismissedAt.Value.ToString("MMM d, yyyy") : "—") + | ++ @switch (row.Status) + { + case OnboardingStatus.Complete: + Complete + break; + case OnboardingStatus.InProgress: + In Progress + break; + case OnboardingStatus.Dismissed: + Dismissed + break; + default: + Not Started + break; + } + | +
| No companies found. | +||||||||