Trust
Our salary data methodology
Compensation data is only useful if you know exactly what it counts. Here is what ours counts, where it comes from, and what it deliberately excludes.
Updated August 2026
Current dataset: 1,749 verified US pre-sales data points collected between January 1, 2026 and August 8, 2026. Where a cut has fewer than 30 data points we publish nothing for it rather than an estimate — those cells read “not yet published”.
Sources
Three inputs, weighted in this order: (1) signed offer letters and placement records from our own pre-sales searches; (2) employer briefs and approved bands supplied during live searches; (3) candidate-reported current compensation, verified against offer documentation where available. Self-reported figures with no corroboration are excluded.
Sample and window
1,749 verified US data points, collected between January 1, 2026 and August 8, 2026. Roles are US-based only; equity, sign-on bonuses and benefits are excluded from both base and OTE.
Publication rules
Every figure on this site is one record in a single compensation dataset, and each record carries its own sample size, collection window and source class. Templates read those records directly, so a page cannot type a number that contradicts them. Three rules decide whether a record is allowed to appear:
- Published. Our own median, from a cut with at least 30 verified data points. The cut’s own n is shown next to it, alongside the dataset it was drawn from.
- Small sample. A cut below 30 is withheld and reads “not yet published”. One exception is shown with an explicit small-sample label rather than hidden, marked with a dagger wherever it appears.
- Modelled. Where we hold no separate sample for a cut, we may scale the national figure by that cut’s own base index. Modelled figures are labelled as modelled in the copy and in the structured data, carry no sample size, and are never presented as sourced medians.
Coverage: the sample behind each cut
A national n tells you little about a metro or a sector page, so each cut publishes its own. These are the cuts where we currently hold a sample of our own.
| Cut | Sample size | Status |
|---|---|---|
| role.salesEngineer.base | 1,749 | Published |
| role.salesEngineer.ote | 1,749 | Published |
| seniority.salesEngineer.base | 1,749 | Published |
| seniority.salesEngineer.ote | 1,749 | Published |
| ote.medianOte | 1,749 | Published |
| ote.medianBase | 1,749 | Published |
| ote.plan.actualAttainment | 1,749 | Published |
| ote.plan.senior.actualAttainment | 1,749 | Published |
| ote.plan.manager.actualAttainment | 1,749 | Published |
| calc.role.salesEngineer.premiumVsBls | 1,749 | Published |
| calc.role.salesEngineer.deltaVsBls | 1,749 | Published |
| calc.role.salesEngineer.impliedSplit | 1,749 | Published |
| calc.ote.plan.variableAtTarget | 1,749 | Published |
| calc.ote.plan.earningsAtMedianAttainment | 1,749 | Published |
| calc.ote.plan.shortfallVsOte | 1,749 | Published |
| role.solutionsConsultant.base | 327 | Published |
| role.solutionsConsultant.baseRange | 327 | Published |
| role.solutionsEngineer.base | 327 | Published |
| role.solutionsArchitect.base | 327 | Published |
| role.solutionsArchitect.ote | 327 | Published |
| role.technicalAccountManager.base | 327 | Published |
| role.technicalAccountManager.ote | 327 | Published |
| se.solutionsEngineer.base | 327 | Published |
| tam.associate.base | 327 | Published |
| tam.associate.ote | 327 | Published |
| tam.mid.base | 327 | Published |
| tam.mid.ote | 327 | Published |
| tam.senior.base | 327 | Published |
| tam.senior.ote | 327 | Published |
| tam.strategic.base | 327 | Published |
| tam.strategic.ote | 327 | Published |
| saas.base | 327 | Published |
| saas.ote | 327 | Published |
| saas.stage.seedSeriesA.ote | 327 | Published |
| saas.stage.seriesBC.base | 327 | Published |
| saas.stage.seriesBC.ote | 327 | Published |
| saas.stage.seriesDPreIpo.ote | 327 | Published |
| saas.stage.public.ote | 327 | Published |
| saas.seniority.salesEngineer.base | 327 | Published |
| saas.seniority.salesEngineer.ote | 327 | Published |
| industry.saas.base | 327 | Published |
| industry.saas.ote | 327 | Published |
| industry.cybersecurity.base | 327 | Published |
| industry.cybersecurity.ote | 327 | Published |
| industry.cloud.base | 327 | Published |
| industry.cloud.ote | 327 | Published |
| industry.ai.base | 327 | Published |
| industry.ai.ote | 327 | Published |
| industry.hardware.base | 327 | Published |
| industry.hardware.ote | 327 | Published |
| ote.split.seniorPrincipal | 327 | Published |
| ote.split.manager | 327 | Published |
| ote.plan.split | 327 | Published |
| ote.plan.acceleratorThreshold | 327 | Published |
| ote.plan.senior.split | 327 | Published |
| ote.plan.senior.acceleratorThreshold | 327 | Published |
| ote.plan.manager.split | 327 | Published |
| ote.plan.manager.acceleratorThreshold | 327 | Published |
| calc.role.solutionsEngineer.premiumVsBls | 327 | Published |
| calc.role.solutionsEngineer.deltaVsBls | 327 | Published |
| calc.role.solutionsConsultant.premiumVsBls | 327 | Published |
| calc.role.solutionsConsultant.deltaVsBls | 327 | Published |
| calc.role.solutionsArchitect.premiumVsBls | 327 | Published |
| calc.role.solutionsArchitect.deltaVsBls | 327 | Published |
| calc.role.technicalAccountManager.premiumVsBls | 327 | Published |
| calc.role.technicalAccountManager.deltaVsBls | 327 | Published |
| calc.role.solutionsConsultant.impliedSplit | 327 | Published |
| calc.role.technicalAccountManager.impliedSplit | 327 | Published |
| calc.role.solutionsArchitect.impliedSplit | 327 | Published |
| seniority.seniorSalesEngineer.quota | 158 | Published |
| seniority.principalSalesEngineer.quota | 158 | Published |
| seniority.salesEngineeringManager.quota | 158 | Published |
| seniority.midSalesEngineer.quota | 158 | Published |
| saas.stage.seedSeriesA.quota | 158 | Published |
| saas.stage.seriesBC.quota | 158 | Published |
| saas.stage.seriesDPreIpo.quota | 158 | Published |
| saas.stage.public.quota | 158 | Published |
| ote.plan.quotaSupported | 158 | Published |
| ote.plan.senior.quotaSupported | 158 | Published |
| ote.plan.manager.quotaSupported | 158 | Published |
| seniority.seniorSalesEngineer.base | 94 | Published |
| seniority.seniorSalesEngineer.ote | 94 | Published |
| se.srSolutionsEngineer.base | 94 | Published |
| se.srSolutionsEngineer.ote | 94 | Published |
| sc.senior.base | 94 | Published |
| sc.senior.ote | 94 | Published |
| saas.seniority.seniorSalesEngineer.base | 94 | Published |
| saas.seniority.seniorSalesEngineer.ote | 94 | Published |
| calc.seniority.midToSenior.baseUplift | 94 | Published |
| calc.seniority.seniorSalesEngineer.premiumVsBls | 94 | Published |
| calc.seniority.seniorSalesEngineer.deltaVsBls | 94 | Published |
| calc.seniority.seniorSalesEngineer.impliedSplit | 94 | Published |
| seniority.midSalesEngineer.base | 86 | Published |
| seniority.midSalesEngineer.ote | 86 | Published |
| sc.mid.base | 86 | Published |
| sc.mid.ote | 86 | Published |
| calc.seniority.midSalesEngineer.premiumVsBls | 86 | Published |
| calc.seniority.midSalesEngineer.deltaVsBls | 86 | Published |
| calc.seniority.midSalesEngineer.impliedSplit | 86 | Published |
| metro.remoteUs.base | 72 | Published |
| calc.metro.remoteUs.premiumVsBls | 72 | Published |
| calc.metro.remoteUs.deltaVsBls | 72 | Published |
| metro.sfBay.base | 58 | Published |
| calc.metro.sfBay.premiumVsBls | 58 | Published |
| calc.metro.sfBay.deltaVsBls | 58 | Published |
| calc.metro.sfBay.premiumVsRemoteUs | 58 | Published |
| calc.metro.sfBay.premiumVsNational | 58 | Published |
| calc.metro.sfBay.deltaVsRemoteUs | 58 | Published |
| metro.newYork.base | 52 | Published |
| metro.newYork.ote | 52 | Published |
| nyc.salesEngineer.base | 52 | Published |
| nyc.salesEngineer.ote | 52 | Published |
| nyc.seniorSalesEngineer.base | 52 | Published |
| nyc.seniorSalesEngineer.ote | 52 | Published |
| nyc.principalSalesEngineer.base | 52 | Published |
| nyc.principalSalesEngineer.ote | 52 | Published |
| nyc.salesEngineeringManager.base | 52 | Published |
| nyc.salesEngineeringManager.ote | 52 | Published |
| calc.metro.newYork.premiumVsBls | 52 | Published |
| calc.metro.newYork.deltaVsBls | 52 | Published |
| calc.nyc.localTaxRate | 52 | Published |
| calc.nyc.cityOnlyTaxRate | 52 | Published |
| calc.nyc.taxGapVsNoIncomeTaxState | 52 | Published |
| calc.nyc.premiumVsRemoteUs | 52 | Published |
| calc.nyc.impliedSplit | 52 | Published |
| calc.nyc.seniorSalesEngineer.impliedSplit | 52 | Published |
| calc.nyc.seniorSalesEngineer.premiumVsNational | 52 | Published |
| calc.nyc.seniorSalesEngineer.deltaVsNational | 52 | Published |
| calc.nyc.seniorSalesEngineer.oteDeltaVsNational | 52 | Published |
| calc.nyc.midToSenior.baseUplift | 52 | Published |
| seniority.salesEngineeringManager.base | 45 | Published |
| seniority.salesEngineeringManager.ote | 45 | Published |
| saas.seniority.salesEngineeringManager.base | 45 | Published |
| saas.seniority.salesEngineeringManager.ote | 45 | Published |
| calc.seniority.salesEngineeringManager.premiumVsBls | 45 | Published |
| calc.seniority.salesEngineeringManager.deltaVsBls | 45 | Published |
| calc.seniority.salesEngineeringManager.impliedSplit | 45 | Published |
| sc.associate.base | 42 | Published |
| sc.associate.ote | 42 | Published |
| seniority.principalSalesEngineer.base | 38 | Published |
| seniority.principalSalesEngineer.ote | 38 | Published |
| se.principalSolutionsEngineer.base | 38 | Published |
| se.principalSolutionsEngineer.ote | 38 | Published |
| sc.principal.base | 38 | Published |
| sc.principal.ote | 38 | Published |
| saas.seniority.principalSalesEngineer.base | 38 | Published |
| saas.seniority.principalSalesEngineer.ote | 38 | Published |
| calc.seniority.principalSalesEngineer.premiumVsBls | 38 | Published |
| calc.seniority.principalSalesEngineer.deltaVsBls | 38 | Published |
| calc.seniority.principalSalesEngineer.impliedSplit | 38 | Published |
| metro.austin.base | 34 | Published |
| calc.metro.austin.premiumVsBls | 34 | Published |
| calc.metro.austin.deltaVsBls | 34 | Published |
| calc.metro.austin.premiumVsRemoteUs | 34 | Published |
| calc.metro.austin.premiumVsNational | 34 | Published |
| calc.metro.austin.deltaVsRemoteUs | 34 | Published |
| metro.boston.base | 29 | Published, small sample |
What this data does not cover
Non-US roles, contract and day-rate engagements, equity value, sign-on and retention bonuses, benefits, and any cut with fewer than 30 data points. Individual metro and sector cuts are drawn from the same sample, so a narrow cut carries a smaller n than the headline figure. Third-party figures shown alongside ours on each page are attributed and linked; we neither clean nor restate them.
Definitions
| Term | How we define it |
|---|---|
| Base | Fixed annual cash salary, before any variable, bonus or equity. |
| OTE | Base plus variable at exactly 100% quota attainment. Not a cap and not an average payout. |
| Split | The base-to-variable ratio of OTE, e.g. 70/30. |
| Range | For a single cut, the 25th to 75th percentile of the underlying sample. Where a range spans levels (for example our national base range), it runs from our published mid-level median to our published principal median — the header says which. |
| Median | The 50th percentile. We never publish means — outliers distort pre-sales data badly. |
| Top decile | The 90th percentile of OTE for the segment. |
Cleaning
Duplicate offers to the same candidate are collapsed. Roles mis-titled against their actual scope (a delivery consultant advertised as a pre-sales consultant, for example) are re-mapped to the function performed, not the title advertised. Segments with fewer than 30 data points are not published.
Update cadence
Quarterly. Each refresh restates the full rolling 12-month window rather than appending, so figures can move down as well as up. The last update date appears at the top of every page.
Corrections
If a published figure doesn't match what you're seeing in your own hiring, tell us — we review challenges against the underlying sample and publish corrections on this page.
Read this alongside the national sales engineer salary data, which is the benchmark every cut on this page is measured against.
If the title on your job ad is "solutions engineer" rather than "sales engineer", the solutions engineer salary page is the closer comparison.
For employers
Hiring for this role?
Get a benchmark tuned to your exact role, level, location and stack — then start a search with a pre-sales specialist.
For candidates
Negotiating your own offer?
Check what you should be earning against our dataset, then join the network so the right roles come to you.
Methodology
Figures are medians drawn from placement records, offer letters and employer briefs across the last 12 months, expressed as 25th–75th percentile ranges. Base is fixed cash; OTE is base plus variable at 100% attainment, excluding equity. Read the full methodology.