Stock-Based Compensation (Tables)
|
6 Months Ended |
Jun. 30, 2026 |
| Share-Based Payment Arrangement [Abstract] |
|
| Summary of Stock-Based Compensation Expense |
Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows: | | | | | | | | | | | | | | | | | | | | | | | | | Three Months Ended June 30, | | Six Months Ended June 30, | | (in thousands) | 2026 | | 2025 | | 2026 | | 2025 | | Cost of revenues | $ | 3,248 | | | $ | 3,328 | | | $ | 6,404 | | | $ | 6,439 | | | Operating expenses | | | | | | | | | Sales and marketing | 3,999 | | | 3,357 | | | 8,259 | | | 5,784 | | | Research and development | 2,406 | | | 2,135 | | | 4,671 | | | 4,152 | | | General and administrative | 9,043 | | | 6,178 | | | 17,435 | | | 12,490 | | | $ | 18,696 | | | $ | 14,998 | | | $ | 36,769 | | | $ | 28,865 | |
Stock-based compensation expense by grant type or plan was as follows: | | | | | | | | | | | | | | | | | | | | | | | | | Three Months Ended June 30, | | Six Months Ended June 30, | | (in thousands) | 2026 | | 2025 | | 2026 | | 2025 | | Stock options | $ | 535 | | | $ | 472 | | | $ | 1,026 | | | $ | 1,021 | | | PSUs | 4,128 | | | 3,127 | | | 8,662 | | | 6,134 | | | RSUs & DSUs | 12,500 | | | 9,837 | | | 23,926 | | | 18,470 | | | RSAs | — | | | — | | | — | | | 113 | | | ESPP | 716 | | | 783 | | | 1,541 | | | 1,619 | | | 401(k) stock match | 817 | | | 779 | | | 1,614 | | | 1,508 | | | $ | 18,696 | | | $ | 14,998 | | | $ | 36,769 | | | $ | 28,865 | |
|
| Summary of Stock Option Activity |
Our stock option activity was as follows: | | | | | | | | | | | | | Six Months Ended June 30, 2026 | | Options (#) | | Weighted Average Exercise Price ($/share) | | Outstanding, beginning of period | 261,403 | | | $ | 121.47 | | | Granted | 132,688 | | | 57.93 | | | Exercised | (20,656) | | | 53.40 | | | Forfeited | (8,340) | | | 118.31 | | | Outstanding, end of period | 365,095 | | | $ | 102.30 | |
|
| Summary of Weighted Average Assumptions Used in Black-Scholes Option Pricing Model |
This was estimated on the date of grant using the Black-Scholes option pricing model with the following weighted average assumptions: | | | | | | | Life (in years) | 4.0 | | Volatility | 39.9 | % | | Dividend yield | — | | | Risk-free interest rate | 3.6 | % |
|
| Summary of Activity for PSUs, RSUs, RSAs, and DSUs |
Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows: | | | | | | | | | | | | | Six Months Ended June 30, 2026 | | # | | Weighted Average Grant Date Fair Value ($/share) | | Outstanding, beginning of period | 1,006,417 | | | $ | 150.69 | | | Granted | 1,038,439 | | | 63.18 | | | Vested and common stock issued | (238,465) | | | 136.77 | | | Forfeited | (121,171) | | | 215.77 | | | Outstanding, end of period | 1,685,220 | | | $ | 94.05 | |
|
| Summary of ESPP Activity |
Our ESPP activity was as follows: | | | | | | | | | | | | | | | | | | | | | | | | | Three Months Ended June 30, | | Six Months Ended June 30, | | (in thousands, except shares) | 2026 | | 2025 | | 2026 | | 2025 | | Amounts for shares purchased | $ | 3,801 | | | $ | 5,015 | | | $ | 4,321 | | | $ | 5,426 | | | Shares purchased | 78,293 | | | 43,349 | | | 85,088 | | | 45,979 | |
|
| Summary of Fair Value Assumptions for ESPP |
The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions: | | | | | | | Life (in years) | 0.5 | | Volatility | 55.7 | % | | Dividend yield | — | | | Risk-free interest rate | 3.7 | % |
|