A CRM-agnostic canonical deal-stage schema with real, cited default mappings for Salesforce, HubSpot, and Pipedrive, so tools can work the same way no matter which CRM a deal actually lives in.
The Universal Pipeline Stage Schema is a free, CRM-agnostic canonical deal-stage schema with real default mappings for Salesforce, HubSpot, and Pipedrive, letting dashboards and skills work the same way regardless of which CRM a deal lives in.
Every CRM names its pipeline stages differently, and almost every real account renames the defaults again on top of that. This snippet is the canonical, CRM-agnostic stage bucket that a dashboard, scoring skill, or report can build against once, instead of special-casing Salesforce vs. HubSpot vs. Pipedrive every time.
const { toCanonical } = require('./mapper.js');
// Works out of the box against each platform's real default stage names:
toCanonical({ dealId: 'SF-001', sourceCrm: 'salesforce', nativeStage: 'Negotiation/Review' });
// { canonical_stage: 'negotiation', is_closed: false, is_won: false, mapped_via: 'default' }
// Almost every real account renames its stages, supply your own mapping:
toCanonical({
dealId: 'HS-042', sourceCrm: 'hubspot', nativeStage: 'Verbal Commitment',
customMapping: { 'Verbal Commitment': 'negotiation' },
});
default-mappings.json ships each platform’s real, cited out-of-the-box stage names, not a claim about what your specific account has today. toCanonical() prefers a custom mapping you supply over the shipped defaults, and throws a clear error instead of guessing when a stage name is not found anywhere.
A schema + mapping logic, not a live CRM integration. You supply the native stage name from your own CRM export or API call.
| File | Purpose |
|---|---|
schema.json | JSON Schema (2020-12) for one canonical, mapped deal record |
default-mappings.json | Real, cited default stage names for Salesforce, HubSpot, and Pipedrive |
mapper.js | toCanonical() / fromCanonical(), zero dependencies |
validate.js | ajv-based schema validator |
test.js | 13-test suite |
Verified 2026-08-12: npm audit 0 vulnerabilities (single dependency: ajv), node test.js 13/13 passing, including tests that custom mappings correctly override defaults and unmapped stages fail loudly instead of silently mis-categorizing a deal.
Open an issue on GitHub Issues. Want help mapping your real pipeline? Book a scoping call ($175/hr).
MIT
Yes. Free to download and use. MV3 charges $175/hr only if you want help mapping your real, customized pipeline.
No. This is a schema and mapping function you run locally against stage names you supply. No network calls.
Supply a customMapping object. It always takes priority over the shipped defaults, and the function throws a clear error rather than silently guessing when a stage name is not found.
Real, cited default mappings ship for Salesforce, HubSpot, and Pipedrive. Any other CRM works too by supplying a full customMapping.
Open a GitHub Issue for bugs or questions. For paid help mapping your real pipeline, book a scoping call.
AI Marketing & SEO Automation, All States
AI Content & SEO Infrastructure for B2B companies that want to own their growth channel , not rent it.
(704) 317-2293 Get the Audit →We use cookies to improve your experience on our site. By using our site, you consent to cookies.
Manage your cookie preferences below:
Essential cookies enable basic functions and are necessary for the proper function of the website.
Google Tag Manager simplifies the management of marketing tags on your website without code changes.
Statistics cookies collect information anonymously. This information helps us understand how visitors use our website.
Google Analytics is a powerful tool that tracks and analyzes website traffic for informed marketing decisions.
Service URL: policies.google.com (opens in a new window)
You can find more information in our Cookie Policy and Privacy Policy.