XML 30 R16.htm IDEA: XBRL DOCUMENT
v3.25.2

Stock-Based Compensation and Stockholders' Equity | 6 Months Ended
--- | ---
Jun. 30, 2025
Equity [Abstract] |
Stock-Based Compensation and Stockholders' Equity | Stock-Based Compensation and Stockholders' Equity Stock-Based Compensation Expense The following table sets forth the amounts recognized in the Company's consolidated statements of operations and comprehensive income during the periods presented related to stock-based compensation expense:
| Three Months Ended June 30, |  | Six Months Ended June 30,
(in thousands) | 2025 |  | 2024 |  | 2025 |  | 2024
Cost of services | $ | 166 |  |  | $ | 174 |  |  | $ | 319 |  |  | $ | 347 |
Sales and marketing | 1,704 |  |  | 2,313 |  |  | 3,980 |  |  | 3,340 |
General and administrative | 4,138 |  |  | 3,866 |  |  | 9,446 |  |  | 7,955 |
Stock-based compensation expense | $ | 6,008 |  |  | $ | 6,353 |  |  | $ | 13,745 |  |  | $ | 11,642 |
The following table sets forth stock-based compensation expense by award type during the periods presented:
| Three Months Ended June 30, |  | Six Months Ended June 30,
(in thousands) | 2025 |  | 2024 |  | 2025 |  | 2024
RSUs | $ | 2,921 |  |  | $ | 3,187 |  |  | $ | 5,904 |  |  | $ | 6,584 |
PSUs | 2,527 |  |  | 2,609 |  |  | 7,043 |  |  | 4,105 |
Stock options | 150 |  |  | 143 |  |  | 150 |  |  | 290 |
ESPP | 410 |  |  | 414 |  |  | 648 |  |  | 663 |
Stock-based compensation expense | $ | 6,008 |  |  | $ | 6,353 |  |  | $ | 13,745 |  |  | $ | 11,642 |
Restricted Stock Units The following table sets forth the Company's restricted stock unit (“RSU”) activity during the six months ended June 30, 2025:
| Number of Restricted Stock Units |  | Weighted-Average Grant-Date Fair Value |  |
Nonvested balance as of December 31, 2024 | 1,187,426 |  | $ | 19.42 |  |  |  |  |
Granted | 1,000,627 |  | 14.79 |  |  |  |  |
Vested | (566,700) |  | 20.23 |  |  |  |  |
Forfeited | (139,688) |  | 16.99 |  |  |  |  |
Nonvested balance as of June 30, 2025 | 1,481,665 |  | $ | 15.97 |  |  |  |  |
The Company grants RSUs to employees and non-employee directors under the Company’s 2020 Incentive Award Plan (the “2020 Plan”). Pursuant to the RSU award agreements, each RSU entitles the recipient to one share of the Company’s common stock, subject to time-based vesting conditions set forth in individual agreements. The fair value of each RSU grant is determined based upon the market closing price of the Company’s common stock on the date of grant. The RSUs vest and are expensed on a straight-line basis over the requisite service period, which ranges between one year and three years from the date of grant, subject to the continued employment of the employees and services of the non-employee board members. As of June 30, 2025, the unrecognized stock-based compensation expense related to the unvested portion of the Company's RSU awards was approximately $19.0 million and is expected to be recognized over a weighted-average period of 1.99 years. During the six months ended June 30, 2025, the Company issued an aggregate of 522,724 shares of common stock to employees and non-employee directors upon the vesting of RSUs previously granted under the 2020 Plan. Performance-Based Restricted Stock Units The following table sets forth the Company's performance-based restricted stock unit (“PSU”) activity during the six months ended June 30, 2025:
| Number of Performance-Based Restricted Stock Units |  | Weighted-Average Grant-Date Fair Value |  |
Nonvested balance as of December 31, 2024 | 1,350,358 |  | $ | 22.01 |  |  |  |  |
Granted | 601,602 |  | 15.22 |  |  |  |  |
Vested | (407,117) |  | 25.88 |  |  |  |  |
Forfeited | (58,277) |  | 14.41 |  |  |  |  |
Nonvested balance as of June 30, 2025 | 1,486,566 |  | $ | 18.15 |  |  |  |  |
The Company also grants PSUs to employees under the Company’s 2020 Plan. Pursuant to the PSU Award Agreement, each PSU entitles the recipient to up to 1.5 shares of the Company’s common stock, subject to certain performance measures set forth in individual agreements. The PSUs will vest, if at all, following the achievement of certain performance measures or market conditions over a three-year performance period relative to certain performance and market conditions. The grant date fair value of PSUs that vest relative to a performance condition is measured based upon the market closing price of the Company’s common stock on the date of grant and expensed on a straight-line basis when it becomes probable that the performance conditions will be satisfied, net of forfeitures, over the service period of the awards, which is generally the vesting term of three years. Grant date fair value of PSUs that vest relative to a market condition is measured using a Monte Carlo simulation model and expensed on a straight-line basis, net of forfeitures, over the service period of the awards, which is generally the vesting term of three years. As of June 30, 2025, the nonvested balance of PSUs that vest based on performance and market conditions was 594,634 and 891,932 sh ares, respectively. As of June 30, 2025, the unrecognized stock-based compensation expense related to the unvested portion of the Company's PSU awards was approximately $14.9 million and is expected to be recognized over a weighted-average period of 1.64 years. During the six months ended June 30, 2025, the Company issued an aggregate of 165,455 shares of common stock to employees and non-employee directors upon the vesting of PSUs previously granted under the 2020 Plan. Stock Options As of June 30, 2025, there was no unrecognized stock-based compensation expense related to the unvested portion of the Company's stock options, as all granted stock options were fully vested on October 15, 2024. During the six months ended June 30, 2025, the Company issued an aggregate of 286,695 shares of common stock to employees upon the exercise of options previously granted under the 2016 Stock Incentive Plan and 2020 Plan at exercise prices ranging from $3.68 to $13.82 per share. During the six months ended June 30, 2024, the Company issued an aggregate of 566,811 shares of common stock to employees upon the exercise of options previously granted under the 2016 Stock Incentive Plan and 2020 Plan at exercise prices ranging from $3.68 to $13.82 per share. Employee Stock Purchase Plan During the six months ended June 30, 2025, the Company issued 171,561 shares through the Employee Stock Purchase Plan (“ESPP”). During the six months ended June 30, 2024, the Company issued 149,983 shares through the ESPP. Share Repurchase Program On April 30, 2024, the Board authorized a share repurchase program (the “Share Repurchase Program”), under which the Company may repurchase up to $40 million in shares of common stock through April 30, 2029. The repurchase program is subject to market conditions, the periodic capital needs of the Company’s operating activities, and the continued satisfaction of all covenants under the Company’s Term Loan and ABL Credit Agreement. The Share Repurchase Program does not obligate the Company to repurchase shares and may be suspended, terminated, or modified at any time. As of June 30, 2025, the Company had repurchased approximately $0.5 million, or 26,495 shares, of the Company's outstanding common stock under the Share Repurchase program and $39.5 million remains available for share repurchases. The acquired shares were recorded as Treasury stock upon repurchase.

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

X
- Definition The entire disclosure for equity. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 815 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 8A -Publisher FASB -URI https://asc.fasb.org/1943274/2147480434/815-10-50-8A Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-13 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Subparagraph (h) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-13 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 14 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-14 Reference 5: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 235 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147477968/946-235-50-2 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 235 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147477968/946-235-50-2 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 505 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Publisher FASB -URI https://asc.fasb.org/1943274/2147478448/946-505-50-6 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 815 -SubTopic 40 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480237/815-40-50-6 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.3-04) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1 Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 505 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org/505/tableOfContent Reference 11: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-13 Reference 12: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Subparagraph (g) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-13 Reference 13: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 13 -Subparagraph (i) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-13 Reference 14: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 14 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-14 Reference 15: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 14 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-14 Reference 16: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 16 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-16 Reference 17: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 18 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-18 Reference 18: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 18 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-18 Reference 19: http://www.xbrl.org/2003/role/disclosureRef -Topic 505 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 18 -Subparagraph (d) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481112/505-10-50-18 + Details
Name: | us-gaap_StockholdersEquityNoteDisclosureTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration