XML 56 R39.htm IDEA: XBRL DOCUMENT
v3.24.0.1

Stock-Based Compensation (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2023
Share-Based Payment Arrangement [Abstract] |
Stock-Based Compensation Expense | Stock-based compensation expense was allocated in the consolidated statements of comprehensive income as follows:
| Year Ended December 31,
(in thousands) | 2023 |  | 2022 |  | 2021
Cost of revenues | $ | 10,169 |  |  | $ | 8,684 |  |  | $ | 6,760 |
Operating expenses |  |  |  |  |
Sales and marketing | 9,774 |  |  | 7,590 |  |  | 6,248 |
Research and development | 7,200 |  |  | 5,634 |  |  | 4,384 |
General and administrative | 18,365 |  |  | 11,491 |  |  | 10,182 |
| $ | 45,508 |  |  | $ | 33,399 |  |  | $ | 27,574 |
Stock-based compensation expense by grant type or plan was as follows:
| Year Ended December 31,
(in thousands) | 2023 |  | 2022 |  | 2021
Stock options | $ | 1,947 |  |  | $ | 1,903 |  |  | $ | 2,057 |
PSUs | 11,886 |  |  | 7,509 |  |  | 6,417 |
RSUs & DSUs | 26,185 |  |  | 19,282 |  |  | 15,388 |
RSAs | 472 |  |  | 437 |  |  | 434 |
ESPP | 2,488 |  |  | 2,144 |  |  | 1,391 |
401(k) stock match | 2,530 |  |  | 2,124 |  |  | 1,887 |
| $ | 45,508 |  |  | $ | 33,399 |  |  | $ | 27,574 |
Stock Option Activity | Our stock option activity was as follows:
| Options (#) |  | Weighted Average Exercise Price ($/share)
Outstanding at December 31, 2020 | 944,886 |  | 36.71 |
Granted | 53,223 |  | 105.53 |
Exercised | (311,378) |  | 30.10 |
Forfeited | (8,081) |  | 68.62 |
Outstanding at December 31, 2021 | 678,650 |  | 44.76 |
Granted | 56,430 |  | 122.59 |
Exercised | (164,393) |  | 29.86 |
Forfeited | (7,990) |  | 92.48 |
Outstanding at December 31, 2022 | 562,697 |  | 56.24 |
Granted | 42,215 |  | 152.68 |
Exercised | (254,353) |  | 38.75 |
Forfeited | (3,737) |  | 129.43 |
Outstanding at December 31, 2023 | 346,822 |  | 80.02 |
Summary of Additional Information Related to Stock Options | The table below presents additional information related to our stock options:
| Year Ended December 31,
(in thousands, except per share data) | 2023 |  | 2022 |  | 2021
Fair value of options vested | $ | 1,966 |  |  | $ | 1,996 |  |  | $ | 2,509 |
Intrinsic value of options exercised | 31,227 |  |  | 16,705 |  |  | 27,713 |
Intrinsic value of options outstanding | 39,474 |  |  | 40,692 |  |  | 66,235 |
Weighted-average fair value per share of options granted | 56.47 |  |  | 41.34 |  |  | 31.31 |
Weighted Average Fair Value Per Share of Options Granted, Assumptions | The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:
| Year Ended December 31,
| 2023 |  | 2022 |  | 2021
Life (in years) | 4.2 |  | 4.3 |  | 4.4
Volatility | 39 | % |  | 38 | % |  | 35 | %
Dividend yield | — |  |  | — |  |  | — |
Risk-free interest rate | 4.00 | % |  | 2.50 | % |  | 0.59 | %
PSU, RSU, RSA, and DSU | Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:
| # |  | Weighted Average Grant Date Fair Value ($/share)
Outstanding at December 31, 2020 | 738,422 |  | 52.37 |
Granted | 314,290 |  | 101.85 |
Vested and common stock issued | (331,669) |  | 44.14 |
Forfeited | (18,883) |  | 66.35 |
Outstanding at December 31, 2021 | 702,160 |  | 78.03 |
Granted | 312,880 |  | 126.44 |
Vested and common stock issued | (276,872) |  | 64.12 |
Forfeited | (26,010) |  | 99.37 |
Outstanding at December 31, 2022 | 712,158 |  | 103.93 |
Granted | 416,377 |  | 163.55 |
Vested and common stock issued | (344,087) |  | 77.52 |
Forfeited | (11,034) |  | 122.97 |
Outstanding at December 31, 2023 | 773,414 |  | 147.50 |
Summary of ESPP Activity | Our ESPP activity was as follows:
| Year Ended December 31,
(in thousands, except share data) | 2023 |  | 2022 |  | 2021
Amounts for shares purchased | $ | 8,114 |  |  | $ | 6,676 |  |  | $ | 4,737 |
Shares purchased | 63,641 |  |  | 70,107 |  |  | 55,726 |
Fair Value Estimation of Common Stock, Assumptions | 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:
| Year Ended December 31,
| 2023 |  | 2022 |  | 2021
Life (in years) | 0.5 |  | 0.5 |  | 0.5
Volatility | 36 | % |  | 42 | % |  | 32 | %
Dividend yield | — |  | — |  | —
Risk-free interest rate | 4.92 | % |  | 1.27 | % |  | 0.07 | %

X
- References No definition available. + Details
Name: | us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (h)(1) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the total intrinsic value of options exercised (or share units converted), share-based liabilities paid, and the total fair value of shares vested during the year. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 718 -SubTopic 10 -Subparagraph (d)(2) -Name Accounting Standards Codification -Paragraph 2 -Section 50 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGrantDateIntrinsicValueTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of employee stock purchase plan activity. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (g) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 718 -SubTopic 10 -Section 50 -Paragraph 2 -Subparagraph (c)(1) -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (d) -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (e) -SubTopic 10 -Topic 718 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 718 -SubTopic 10 -Subparagraph (f)(2) -Name Accounting Standards Codification -Paragraph 2 -Section 50 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 718 -SubTopic 10 -Subparagraph (f)(2) -Name Accounting Standards Codification -Paragraph 2 -Section 50 -Publisher FASB -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2 + Details
Name: | us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year. + References No definition available. + Details
Name: | us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration