Conditional stage properties on the Closed Won row, ticked Required: outcome, success criteria, promised commitments, go-live target, risk level. A backstop workflow flags any deal that closes through an integration with fields empty.
Without it: the CSM re-runs discovery and the customer repeats themselves on call one.
The handoff stays manual because nothing in the CRM makes it happen.
Reps can close with empty handoff fields. Stage requirements and validation rules exist but usually aren't set for Closed Won, or are set to prompt only.
Goals, promises and stakeholders sit in call notes or a doc. No workflow, report or CS platform can read them.
31% of onboarding teams say onboarding "varies by person." — Thinkific, 2026
Company Owner is still the AE and there's no separate CSM Owner. The CS workspace and Gainsight can't build a book of business.
Without a ticket, project or custom record per customer, there's nothing to hang an SLA on and no "stuck in kickoff" report.
Teams connect Gainsight first, then find duplicate companies, handoff data on objects the connector can't read, and two systems writing one field.
A connector job breaks, subscription data stops arriving, and nobody notices until a CSM asks. In mixed stacks, nobody has decided which CRM fires onboarding.
Measure close-to-kickoff and onboarding time. Where no public benchmark exists, we label JayOh's estimate as one.
| Metric | Weak | Acceptable | Strong | Source |
|---|---|---|---|---|
| Closed Won → kickoff scheduled | Over 5 business days | 3–5 business days | 2 business days or less | JayOh practitioner estimateEstimate |
| Closed Won → kickoff held | Over 21 days | 10–21 days | 10 days or less | JayOh practitioner estimateEstimate |
| Onboarding completion (B2B) | Over 60 days | 30–60 days | 30 days or less | Thinkific, 2026 (70% finish within a month) |
| Kickoff → first customer login | Over 7 days | 1–3 days | Under 24 hours | Rework, undated practitioner bandsEstimate |
| Time to value, mid-market | 75+ days | 45–75 days | 20–45 days | Rework, undated practitioner bandsEstimate |
| Accounts per CSM (median) | Well above median | Near median | SMB 110 · MM 35 · Ent 10.5 | Success Coaching, 2025 survey |
| SaaS churn rate | Above 3.22% | About 3.22% (median) | 1.78% or less (top quartile) | Recurly, July 2026 data |
Sources: JayOh practitioner estimates for kickoff timing (no reliable public benchmark found, 2026). Thinkific State of Customer Onboarding 2026 (n=699): 70% of teams finish onboarding within a month, and 48% name higher early churn in the first 90 days as the main consequence of inconsistent onboarding. Rework post-sale metrics library (undated): practitioner bands with no primary source. Success Coaching 2025 CS Survey (2024 actuals): median accounts per CSM. Recurly churn benchmarks (July 2026): SaaS median 3.22%, of which 2.16% voluntary and 1.06% involuntary.
Design the data model, gate the stage, route, record, alert, then sync and monitor. In that order.
One system fires the handoff. Each field has exactly one writer.
Dual triggers and dual writers are the most common cause of CRM–CS platform drift.
A one-page matrix: field, object, written by, read by, sync direction.
Required context lives in fields, not a Google Doc.
Workflows, Gainsight and reports can't read prose.
Dropdowns and checkboxes wherever possible. Free text can't route.
handoff_primary_outcome (dropdown), handoff_success_criteria, handoff_promised_commitments, handoff_go_live_target, handoff_risk_level. On Company: csm_owner (HubSpot user), onboarding_status, customer_segment.Primary_Outcome__c, Handoff_Success_Criteria__c, Promised_Commitments__c, Go_Live_Target__c, Handoff_Risk_Level__c. Account CSM__c (Lookup User), Onboarding_Status__c, Customer_Since__c.Block the stage move until the handoff fields are filled.
The highest-leverage control. Everything downstream inherits its quality.
Required stage properties in HubSpot, a validation rule in Salesforce.
Handoff Status = Incomplete.Bypass_Handoff_Validation to the integration user and admins only. Contact roles can't be checked in a formula, so require one Champion and one Implementation Lead with a before-save flow or a roll-up count.AND(
ISCHANGED(StageName),
ISPICKVAL(StageName, "Closed Won"),
NOT($Permission.Bypass_Handoff_Validation),
OR(
ISBLANK(Handoff_Success_Criteria__c),
ISBLANK(Implementation_Contact__c),
ISBLANK(Go_Live_Target__c),
ISBLANK(TEXT(Handoff_Risk_Level__c))
)
)The CSM is set on the company or account at Closed Won.
An unowned customer is the first failure. Both the CS workspace and Gainsight build books from ownership.
Route by segment first, then rotate within the pod.
CSM Owner. Select that property when you set up the CS workspace.CSM Owner is unknown, so expansion deals don't reassign customers.Account.CSM__c is blank, look up CSM_Assignment_Rule__mdt by segment and region, or round robin through CSM_Queue_Member__c sorted by Last_Assigned__c and stamp it with NOW(). Insert an AccountTeamMember with role Customer Success Manager.One onboarding record per new customer.
Stages, SLA reporting and kickoff tasks need an object to live on.
Created by the same workflow or flow that assigns the CSM.
Onboarding pipeline: Handoff Received, Kickoff Scheduled, Kickoff Held, Configuration, Training, Go-Live, First Value Confirmed, Graduated to BAU. Owner is the CSM. Associate the deal, company and contacts, copy the handoff properties, and name it "[Company] – Onboarding – [Close Date]".Onboarding__c (master-detail to Account, lookup to Opportunity) with Stage__c, Kickoff_Scheduled_Date__c, Kickoff_Held_Date__c, Go_Live_Date__c, First_Value_Date__c. Build in Flow; Process Builder is retired.A structured alert to the CSM, CS manager and AE.
The CSM should start kickoff prep with the brief in hand.
CRM notifications plus Slack, with tokens for every handoff field.
Time-box each onboarding milestone.
Kickoff drift is where early churn starts, and it's invisible without a clock.
Delays and branches in HubSpot, scheduled paths in Salesforce.
SLA Breach = Kickoff not scheduled and post to Slack. Repeat for Kickoff Held (10 days from close) and Go-Live against the target date.Onboarding__c flow. Two days after CreatedDate with no kickoff scheduled: notify the manager. Ten days after close with no kickoff held: escalate. Add Days_To_Kickoff__c and SLA_Status__c formula fields.A standard agenda driven by the handoff fields.
The customer should never repeat discovery.
A 15-minute AE–CSM pre-brief, then the AE restates promises live.
Kickoff Held Date, Success Plan Confirmed, Exec Sponsor Attended. Setting Kickoff Held Date moves the onboarding stage by workflow.Handoff Accepted checkbox and a 1–5 Handoff Quality score. Rejections route to the AE manager and become a coaching metric.A minimal, clean field set into Gainsight and a few CS fields back.
The bad reviews are about this layer, but most of the pain starts upstream in data quality and dual writing.
Gainsight NXT: Administration > Connectors 2.0 > Connections.
Out-of-box jobs: Company, Company Person, User, engagements.
Custom job needed: Deal, Ticket.
Not native: custom objects.
Minimum schedule. Inside a Job Chain, the chain's schedule wins. Alert in the CRM; analyze in Gainsight.
Back to HubSpot: five read-only GS_ fields via the "Load to HubSpot" rule action.
Company upserts on HubSpot companyId.
Person resolves on email.
Onboarding CTA created by a Rules Engine rule.
companyId → HubSpot Account ID, so duplicates become duplicate Gainsight Companies.ownerId → HubSpot User Id) is how csm_owner resolves to a Gainsight user.handoff_* fields into a custom object such as Onboarding Handoff, using derived mapping to the Company GSID.dealstage = closedwon, recent close date): create an Onboarding CTA owned by the Company CSM, and Load to Company for Stage, CSM and ARR.Alerts on integration failure, plus a handoff dashboard.
Silent job failures are the norm. CSMs stop trusting data that goes stale.
Failure notifications in Gainsight, daily exception reports in the CRM.
CSM Owner unknown; GS Health Score not updated in 48 hours, a stale-sync proxy.The fields matter less than who writes them, when they're enforced and who gets alerted.
Each looks like a small config choice. Each shows up later as a CSM re-running discovery.
HubSpot conditional stage properties default to optional.
Cost: reps skip them; the customer repeats themselves on call one.Deals closed by CPQ, e-sign, import or sync go around it.
Cost: empty handoffs creep back with no visible cause.The HubSpot connector hasn't exposed custom objects natively.
Cost: an S3 or iPaaS workaround and a re-architecture.Both systems overwrite each other.
Cost: wrong owners and alerts sent to the wrong CSM.Nothing to put stages or an SLA on.
Cost: no cohort time to value, so you can't prove improvement.An enterprise logo lands on an SMB CSM.
Cost: a book that's already at the 110-account SMB median.Duplicates become duplicate Gainsight Companies.
Cost: split timelines, wrong health scores, cleanup in two systems.A job stops and nobody notices.
Cost: weeks of missing data and a "Gainsight doesn't work" story.Bad handoffs cost CSM time now and put ARR in the riskiest 90 days without context.
18 of the first 90 days pass before kickoff. Expected early-churn exposure on this cohort: about $66K of ARR.
Exposure = first-90-day ARR × your churn assumption × 44%, the share of cancellations reported in the first 90 days (Focus Digital, Dec 2025, as reported by shno.co). Illustrative, not a forecast.
Context: in Thinkific's State of Customer Onboarding 2026 (n=699), 48% of teams name higher early churn or disengagement in the first 90 days as the main consequence of inconsistent onboarding. Kickoff bands are JayOh practitioner estimates.
Paste it into your build doc or ticket. Swap the dropdown values for yours before you create properties.
=== 1. FIELD OWNERSHIP MATRIX (one writer per field) ===
field | object | written by | read by | direction
handoff_* fields | Deal / Opp | AE in CRM | CSM, Gainsight | CRM -> CS platform
csm_owner / CSM__c | Company / Acct | CRM assignment flow | Gainsight, CSM | CRM -> CS platform
GS_health_score etc. | Company | Gainsight rules | AE, leadership | CS platform -> CRM (read-only)
Trigger system: [HubSpot | Salesforce] (never both)
=== 2. REQUIRED AT CLOSED WON (HubSpot name | Salesforce API name) ===
[ ] Primary Business Outcome handoff_primary_outcome (dropdown) | Primary_Outcome__c (Picklist)
[ ] Success Criteria handoff_success_criteria (multi-line) | Handoff_Success_Criteria__c
[ ] Promised Commitments handoff_promised_commitments ("None" allowed) | Promised_Commitments__c
[ ] Go-Live Target Date handoff_go_live_target (date) | Go_Live_Target__c
[ ] Handoff Risk Level handoff_risk_level (Low/Med/High) | Handoff_Risk_Level__c
[ ] Implementation Lead deal-contact label | OpportunityContactRole (flow-enforced)
[ ] Champion deal-contact label | OpportunityContactRole (flow-enforced)
[ ] Products + contract start/term line items | OpportunityLineItem, Contract_Start__c, Term_Months__c
Recommended: Economic Buyer. If Risk = Med/High: Risk Notes. Optional: Competitor Replaced.
Set by automation: customer_segment, csm_owner, onboarding_status.
Set by CSM: handoff_accepted, handoff_quality (1-5), kickoff_held_date, first_value_date.
=== 3. SLA TABLE (JayOh practitioner defaults; tune per segment) ===
Milestone SMB MM Ent Breach action
CSM assigned 1 bus. hour 1 bus. hour 1 bus. day Slack to CS manager
Handoff accepted 1 bus. day 1 bus. day 2 bus. days Task to CS manager; rejection -> AE manager
Kickoff scheduled 2 bus. days 2 bus. days 3 bus. days Notify CS manager and AE
Kickoff held 7 days 10 days 14 days Escalate to CS director; Onboarding Status = At Risk
Go-live per target per target per target Target + 7 days: health flag + exec sponsor task
First value 30 days 45 days 60-90 days At-risk review; save play
=== 4. ALERT ROUTING ===
Closed Won, complete handoff -> CSM, CS manager, AE | Slack #cs-new-customers + in-app | full brief
Closed Won, incomplete -> AE, AE manager, RevOps | in-app + email | missing fields, deal link
Risk Level = High -> CS director, CSM | Slack DM | risk notes, competitor replaced
Kickoff-scheduled breach -> CS manager | Slack | days since close, CSM
Kickoff-held breach -> CS director, AE manager | Slack + email | days since close, last activity
Handoff rejected -> AE manager | email + task | rejection reason
Sync job failure / GS_ fields stale > 48h -> RevOps admin | email + Slack #revops-alerts | job, last success
=== 5. KICKOFF CHECKLIST ===
[ ] CSM reviewed handoff fields and promised commitments 24h before
[ ] Internal pre-brief, AE -> CSM, 15 min; any rejection logged
[ ] AE attends and restates outcome, success criteria and commitments
[ ] Customer confirms success criteria; written into the mutual success plan
[ ] Stakeholder map confirmed: champion, economic buyer, implementation lead, admins
[ ] Go-live target and milestones agreed; dates entered in CRM
[ ] Definition of "first value" agreed and set as a milestone
[ ] Communication cadence and escalation path agreed
[ ] Technical prerequisites (SSO, integrations, data) assigned with owners
[ ] Kickoff Held Date set + Success Plan Confirmed checked (moves onboarding stage)
Straight answers, including the "it depends" on Gainsight with HubSpot.
Start with the gate, not the alert. Required fields at Closed Won give every later step something to work with: routing, the onboarding record, the Slack message and the Gainsight sync. Then add CSM assignment and an onboarding record with a kickoff SLA.
Five to seven: primary outcome, success criteria, promised commitments, go-live target, risk level, implementation lead and champion. Everything else is an optional prompt. More than that and reps start typing "TBD."
Don't assume so. HubSpot documents enforcement for users who manually create or move records. Test your CPQ, e-sign and sync paths, and keep a backstop workflow that flags any Closed Won deal with handoff fields empty.
It depends on your data. It works when handoff data sits on standard objects, companies are deduped, hourly sync is acceptable and someone owns the admin role. It struggles with custom objects, dual writers and no admin. Practitioners on r/CustomerSuccess describe implementations of "almost a year" and hiring "a full time Gainsight administrator" (via a roundup by Gainsight competitor GainTrace, Aug 2026). Budget for both.
Hourly at most. Deal and Ticket need custom jobs, and there's no Merge or Transform in the connector. Fire real-time handoff alerts from HubSpot workflows and use Gainsight for CTAs, playbooks and health.
If you're HubSpot-only, under about 15 CSMs and track renewals as deals, it's often enough: no sync to maintain. Know its limits: fewer health-score options, health alerts that expire after 14 days, and no renewal-deal creation.
The one that owns contracts and line items. If Salesforce owns CPQ and renewals, fire from Salesforce and let HubSpot read status. Pick one; teams that leave it open end up pausing the automation.
Most "the Gainsight sync is broken" stories start upstream: duplicates, custom objects and two writers. We ship the handoff as one system (gate, route, record, alert, monitor) in HubSpot, Salesforce or both.
A consultant writes the field ownership matrix with CS and sales, picks the trigger system, and our developers build the properties and the Closed Won gate.
CSM routing, the onboarding pipeline with SLAs, and structured Slack alerts. AI drafts the brief; required fields stay the contract.
We map the short Gainsight field list, add failure alerts, and report time to first value by cohort. The consultant owns the outcome. More in RevOps for CS leaders.
We engineer growth systems. JayOh builds the RevOps architecture, GTM execution and data infrastructure that turn messy revenue operations into predictable pipeline for B2B SaaS and PE-backed teams.