XML 57 R2.htm IDEA: XBRL DOCUMENT
v3.25.1

Pay vs Performance Disclosure - USD ($) | 12 Months Ended
--- | ---
Dec. 31, 2024 | Dec. 31, 2023 | Dec. 31, 2022 | Dec. 31, 2021 | Dec. 31, 2020
Pay vs Performance Disclosure |  |  |  |  |
Pay vs Performance Disclosure, Table |
|  | Summary Compensation Table Total for PEO (1) ($) |  | Compensation Actually Paid to PEO (1)(2) ($) |  | Average Summary Compensation Table Total for Non-PEO NEOs(1) ($) |  | Average Compensation Actually Paid to Non-PEO NEOs(1)(2) ($) |  | Value of Initial Fixed $100 Investment Based On(3) |  | Net Income ($) |  | Company Selected Measure: Adjusted EBITDA(5) ($)
Year |  | Former PEO (Black) |  | Current PEO (Collins) |  | Former PEO (Black) |  | Current PEO (Collins) |  |  |  | Company TSR ($) |  | Peer Group TSR(4) ($) |  |
2024 |  | — |  |  | 14,405,176 |  |  | — |  |  | 10,992,904 |  |  | 4,593,545 |  |  | 2,803,011 |  |  | 332 |  | 301 |  | 77,054,000 |  | 186,631,000
2023 |  | 9,616,696 |  | 6,752,127 |  |  | 26,705,325 |  |  | 7,973,866 |  | 4,535,894 |  | 16,538,822 |  |  | 350 |  | 221 |  | 65,824,000 |  | 157,630,000
2022 |  | 6,066,081 |  | — |  |  | 4,501,154 |  |  | — |  |  | 3,632,052 |  | 2,919,066 |  |  | 232 |  | 133 |  | 55,134,000 |  | 132,268,000
2021 |  | 6,693,464 |  | — |  |  | 14,052,465 |  |  | — |  |  | 3,829,274 |  | 7,227,613 |  |  | 257 |  | 207 |  | 44,597,000 |  | 107,015,000
2020 |  | 4,810,804 |  | — |  |  | 18,046,825 |  |  | — |  |  | 2,283,243 |  | 8,625,426 |  | 196 |  | 150 |  | 45,586,000 |  | 86,994,000
Company Selected Measure Name | Adjusted EBITDA |  |  |  |
Named Executive Officers, Footnote | For 2024, Chad Collins served as our PEO, and our non-PEO NEOs were Kimberly Nelson, Dan Juckniess, Jamie Thingelstad, Archie Black, and James Frome. In 2023, Archie Black served as our PEO and upon his retirement as CEO, Chad Collins became our CEO and the PEO. Archie Black served as our PEO for all of 2020 - 2022. For 2020 - 2023, Kimberly Nelson and James Frome served as our non-PEO NEOs. |  |  |  |
Peer Group Issuers, Footnote | Our selected Peer Group is the Nasdaq Computer Index, an independently prepared market capitalization weighted index, and which is the same industry index used in our stock price performance graph in our Annual Report on Form 10-K for the fiscal year ended December 31, 2024. |  |  |  |
PEO Total Compensation Amount | $ 14,405,176 |  | $ 6,066,081 | $ 6,693,464 | $ 4,810,804
PEO Actually Paid Compensation Amount | $ 10,992,904 |  | 4,501,154 | 14,052,465 | 18,046,825
Adjustment To PEO Compensation, Footnote | Compensation Actually Paid, as defined and in accordance with Item 402(v) of Regulation S-K, is calculated as noted in the table below. The amounts noted do not reflect the actual amount of compensation earned by or paid to the individuals in the applicable year. The fair values and changes in fair values were determined in accordance with ASC Topic 718, consistent with the methods used for grant date fair valuation, exclusive of date of measurement. For a discussion of the relevant assumptions used to determine the value, refer to Note A and Note K to the Notes to Consolidated Financial Statements included in our Annual Report on Form 10-K for the fiscal year ended December 31, 2024.
|  |  | Base |  | Less |  | Plus |  | Plus or (Less) |  | Plus or (Less) |  | Plus or (Less) |  | Total
| Year |  | Summary Compensation Table - Total Compensation ($) |  | Grant Date Fair Value of Stock Awards and Option Awards Granted in Fiscal Year ($) |  | Fair Value at Fiscal Year-End of Outstanding and Unvested Stock Awards and Option Awards Granted in Fiscal Year ($) |  | Change in Fair Value at End of Fiscal Year from End of Prior Fiscal Year of Outstanding and Unvested Stock Awards and Option Awards Granted in Prior Fiscal Years ($) |  | Change in Fair Value as of Vesting Date from End of Prior Fiscal Year of Stock Awards and Option Awards Granted in Prior Fiscal Years For Which Applicable Vesting Conditions Were Satisfied During Fiscal Year ($) |  | Fair Value as of Vesting Date of Stock Awards and Option Awards Granted and Vested During Fiscal Year ($) |  | Compensation Actually Paid ($)
Current PEO (Collins) | 2024 |  | 14,405,176 |  | (13,239,826) |  |  | 10,335,734 |  |  | (318,805) |  |  | (189,375) |  |  | — |  |  | 10,992,904
2023 |  | 6,752,127 |  | (6,499,877) |  |  | 7,721,616 |  |  | — |  |  | — |  |  | — |  |  | 7,973,866 |
Former PEO (Black) | 2023 |  | 9,616,696 |  | (8,315,596) |  |  | 14,299,748 |  |  | 4,395,649 |  |  | 6,708,828 |  |  | — |  |  | 26,705,325 |
2022 |  | 6,066,081 |  | (5,089,381) |  |  | 5,376,891 |  |  | (835,723) |  |  | (1,016,714) |  |  | — |  |  | 4,501,154 |
2021 |  | 6,693,464 |  | (5,241,434) |  |  | 7,196,040 |  |  | 5,349,429 |  |  | 54,966 |  |  | — |  |  | 14,052,465 |
2020 |  | 4,810,804 |  | (3,892,234) |  |  | 10,643,528 |  |  | 5,921,853 |  |  | 562,874 |  |  | — |  |  | 18,046,825 |
Non-PEO NEO Average | 2024 |  | 4,593,545 |  | (3,873,820) |  |  | 1,715,721 |  |  | (1,050,833) |  |  | (297,625) |  |  | 1,716,023 |  |  | 2,803,011 |
2023 |  | 4,535,894 |  | (3,591,994) |  |  | 10,151,683 |  |  | 4,752,143 |  |  | 691,096 |  |  | — |  |  | 16,538,822 |
2022 |  | 3,632,052 |  | (2,937,683) |  |  | 3,103,639 |  |  | (295,785) |  |  | (583,157) |  |  | — |  |  | 2,919,066 |
2021 |  | 3,829,274 |  | (2,821,974) |  |  | 3,874,330 |  |  | 2,301,858 |  |  | 44,125 |  |  | — |  |  | 7,227,613 |
2020 |  | 2,283,243 |  | (1,658,387) |  |  | 4,317,603 |  |  | 3,379,146 |  |  | 303,821 |  |  | — |  |  | 8,625,426
Non-PEO NEO Average Total Compensation Amount | $ 4,593,545 | $ 4,535,894 | 3,632,052 | 3,829,274 | 2,283,243
Non-PEO NEO Average Compensation Actually Paid Amount | $ 2,803,011 | 16,538,822 | 2,919,066 | 7,227,613 | 8,625,426
Adjustment to Non-PEO NEO Compensation Footnote | Compensation Actually Paid, as defined and in accordance with Item 402(v) of Regulation S-K, is calculated as noted in the table below. The amounts noted do not reflect the actual amount of compensation earned by or paid to the individuals in the applicable year. The fair values and changes in fair values were determined in accordance with ASC Topic 718, consistent with the methods used for grant date fair valuation, exclusive of date of measurement. For a discussion of the relevant assumptions used to determine the value, refer to Note A and Note K to the Notes to Consolidated Financial Statements included in our Annual Report on Form 10-K for the fiscal year ended December 31, 2024.
|  |  | Base |  | Less |  | Plus |  | Plus or (Less) |  | Plus or (Less) |  | Plus or (Less) |  | Total
| Year |  | Summary Compensation Table - Total Compensation ($) |  | Grant Date Fair Value of Stock Awards and Option Awards Granted in Fiscal Year ($) |  | Fair Value at Fiscal Year-End of Outstanding and Unvested Stock Awards and Option Awards Granted in Fiscal Year ($) |  | Change in Fair Value at End of Fiscal Year from End of Prior Fiscal Year of Outstanding and Unvested Stock Awards and Option Awards Granted in Prior Fiscal Years ($) |  | Change in Fair Value as of Vesting Date from End of Prior Fiscal Year of Stock Awards and Option Awards Granted in Prior Fiscal Years For Which Applicable Vesting Conditions Were Satisfied During Fiscal Year ($) |  | Fair Value as of Vesting Date of Stock Awards and Option Awards Granted and Vested During Fiscal Year ($) |  | Compensation Actually Paid ($)
Current PEO (Collins) | 2024 |  | 14,405,176 |  | (13,239,826) |  |  | 10,335,734 |  |  | (318,805) |  |  | (189,375) |  |  | — |  |  | 10,992,904
2023 |  | 6,752,127 |  | (6,499,877) |  |  | 7,721,616 |  |  | — |  |  | — |  |  | — |  |  | 7,973,866 |
Former PEO (Black) | 2023 |  | 9,616,696 |  | (8,315,596) |  |  | 14,299,748 |  |  | 4,395,649 |  |  | 6,708,828 |  |  | — |  |  | 26,705,325 |
2022 |  | 6,066,081 |  | (5,089,381) |  |  | 5,376,891 |  |  | (835,723) |  |  | (1,016,714) |  |  | — |  |  | 4,501,154 |
2021 |  | 6,693,464 |  | (5,241,434) |  |  | 7,196,040 |  |  | 5,349,429 |  |  | 54,966 |  |  | — |  |  | 14,052,465 |
2020 |  | 4,810,804 |  | (3,892,234) |  |  | 10,643,528 |  |  | 5,921,853 |  |  | 562,874 |  |  | — |  |  | 18,046,825 |
Non-PEO NEO Average | 2024 |  | 4,593,545 |  | (3,873,820) |  |  | 1,715,721 |  |  | (1,050,833) |  |  | (297,625) |  |  | 1,716,023 |  |  | 2,803,011 |
2023 |  | 4,535,894 |  | (3,591,994) |  |  | 10,151,683 |  |  | 4,752,143 |  |  | 691,096 |  |  | — |  |  | 16,538,822 |
2022 |  | 3,632,052 |  | (2,937,683) |  |  | 3,103,639 |  |  | (295,785) |  |  | (583,157) |  |  | — |  |  | 2,919,066 |
2021 |  | 3,829,274 |  | (2,821,974) |  |  | 3,874,330 |  |  | 2,301,858 |  |  | 44,125 |  |  | — |  |  | 7,227,613 |
2020 |  | 2,283,243 |  | (1,658,387) |  |  | 4,317,603 |  |  | 3,379,146 |  |  | 303,821 |  |  | — |  |  | 8,625,426
Compensation Actually Paid vs. Total Shareholder Return |  |  |  |  |
Compensation Actually Paid vs. Net Income | Compensation Actually Paid versus Company Financial Performance |  |  |  |
Compensation Actually Paid vs. Company Selected Measure | Compensation Actually Paid versus Company Financial Performance |  |  |  |
Total Shareholder Return Vs Peer Group |  |  |  |  |
Tabular List, Table |
TSR
Adjusted EBITDA(1)
Revenue
Total Shareholder Return Amount | $ 332 | 350 | 232 | 257 | 196
Peer Group Total Shareholder Return Amount | 301 | 221 | 133 | 207 | 150
Net Income (Loss) | $ 77,054,000 | $ 65,824,000 | $ 55,134,000 | $ 44,597,000 | $ 45,586,000
Company Selected Measure Amount | 186,631,000 | 157,630,000 | 132,268,000 | 107,015,000 | 86,994,000
PEO Name | Chad Collins |  | Archie Black | Archie Black | Archie Black
Additional 402(v) Disclosure | TSR is the change from an original $100 investment at the close of market on December 31, 2019, and the value of the investment as of the last trading day of each respective year, assuming that dividends, if any, were reinvested. The comparison is based on historical data and are not intended to forecast or be indicative of future performance of our common stock. We believe the Compensation Actually Paid in each of the years reported above and over the cumulative period are reflective of the Compensation & Talent Committee’s emphasis on “pay-for-performance” as the Compensation Actually Paid fluctuated year-over-year, primarily due our stock price and varying levels of achievement against pre-established performance goals under our Management Incentive Plan and equity program, including our Adjusted EBITDA and TSR performance. Due to the leverage of our executive compensation program toward long-term incentives through grants of PSUs and RSUs, the Compensation Actually Paid is most significantly impacted by changes in our stock price over the vesting period of the awards. The Compensation Discussion and Analysis section of this Proxy Statement describes in greater detail the Compensation & Talent Committee’s emphasis on “pay-for-performance” and how our executive compensation program is designed to link executive compensation with the achievement of our financial and strategic objectives as well as stockholder value creation. |  |  |  |
Measure:: 1 |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Name | TSR |  |  |  |
Measure:: 2 |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Name | Adjusted EBITDA |  |  |  |
Non-GAAP Measure Description | We consider our TSR our most important financial performance measure used to link compensation actually paid to our Company performance. As TSR is already disclosed, our next most important measure, Adjusted EBITDA, is selected. Adjusted EBITDA is a non-GAAP financial measure. Refer to Appendix A in this Proxy Statement for a reconciliation of this non-GAAP financial measure to the corresponding GAAP measure. |  |  |  |
Measure:: 3 |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Name | Revenue |  |  |  |
Archie Black [Member] |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
PEO Total Compensation Amount |  | $ 9,616,696 |  |  |
PEO Actually Paid Compensation Amount |  | $ 26,705,325 |  |  |
PEO Name |  | Archie Black |  |  |
Chad Collins [Member] |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
PEO Total Compensation Amount |  | $ 6,752,127 |  |  |
PEO Actually Paid Compensation Amount |  | $ 7,973,866 |  |  |
PEO Name |  | Chad Collins |  |  |
PEO | Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | $ (13,239,826) |  | $ (5,089,381) | $ (5,241,434) | $ (3,892,234)
PEO | Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | 10,335,734 |  | 5,376,891 | 7,196,040 | 10,643,528
PEO | Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | (318,805) |  | (835,723) | 5,349,429 | 5,921,853
PEO | Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | 0 |  | 0 | 0 | 0
PEO | Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | (189,375) |  | (1,016,714) | 54,966 | 562,874
PEO | Archie Black [Member] | Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | $ (8,315,596) |  |  |
PEO | Archie Black [Member] | Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 14,299,748 |  |  |
PEO | Archie Black [Member] | Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 4,395,649 |  |  |
PEO | Archie Black [Member] | Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 0 |  |  |
PEO | Archie Black [Member] | Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 6,708,828 |  |  |
PEO | Chad Collins [Member] | Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | (6,499,877) |  |  |
PEO | Chad Collins [Member] | Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 7,721,616 |  |  |
PEO | Chad Collins [Member] | Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 0 |  |  |
PEO | Chad Collins [Member] | Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 0 |  |  |
PEO | Chad Collins [Member] | Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount |  | 0 |  |  |
Non-PEO NEO | Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | (3,873,820) | (3,591,994) | (2,937,683) | (2,821,974) | (1,658,387)
Non-PEO NEO | Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | 1,715,721 | 10,151,683 | 3,103,639 | 3,874,330 | 4,317,603
Non-PEO NEO | Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | (1,050,833) | 4,752,143 | (295,785) | 2,301,858 | 3,379,146
Non-PEO NEO | Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | 1,716,023 | 0 | 0 | 0 | 0
Non-PEO NEO | Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year |  |  |  |  |
Pay vs Performance Disclosure |  |  |  |  |
Adjustment to Compensation, Amount | $ (297,625) | $ 691,096 | $ (583,157) | $ 44,125 | $ 303,821

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v + Details
Name: | ecd_Additional402vDisclosureTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToNonPeoNeoCompFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_AdjToPeoCompFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_CoSelectedMeasureAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:decimalItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_CoSelectedMeasureName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph iii + Details
Name: | ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph ii + Details
Name: | ecd_CompActuallyPaidVsNetIncomeTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph i + Details
Name: | ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_MeasureName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_NamedExecutiveOfficersFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph vi + Details
Name: | ecd_NonGaapMeasureDescriptionTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iii + Details
Name: | ecd_NonPeoNeoAvgCompActuallyPaidAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph ii + Details
Name: | ecd_NonPeoNeoAvgTotalCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_PeerGroupIssuersFnTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_PeerGroupTotalShareholderRtnAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iii + Details
Name: | ecd_PeoActuallyPaidCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 3 + Details
Name: | ecd_PeoName
Namespace Prefix: | ecd_
Data Type: | xbrli:normalizedStringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph ii + Details
Name: | ecd_PeoTotalCompAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 1 + Details
Name: | ecd_PvpTable
Namespace Prefix: | ecd_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 1 + Details
Name: | ecd_PvpTableTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 6 + Details
Name: | ecd_TabularListTableTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 2 -Subparagraph iv + Details
Name: | ecd_TotalShareholderRtnAmt
Namespace Prefix: | ecd_
Data Type: | xbrli:monetaryItemType
Balance Type: | na
Period Type: | duration

X
- References Reference 1: http://www.xbrl.org/2003/role/presentationRef -Publisher SEC -Name Regulation S-K -Number 229 -Section 402 -Subsection v -Paragraph 5 -Subparagraph iv + Details
Name: | ecd_TotalShareholderRtnVsPeerGroupTextBlock
Namespace Prefix: | ecd_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition The portion of profit or loss for the period, net of income taxes, which is attributable to the parent. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 9 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 805 -SubTopic 60 -Name Accounting Standards Codification -Section 65 -Paragraph 1 -Subparagraph (g) -Publisher FASB -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 740 -SubTopic 323 -Name Accounting Standards Codification -Section 65 -Paragraph 2 -Subparagraph (g)(3) -Publisher FASB -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2 Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SX 210.5-03(20)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Topic 235 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.4-08(g)(1)(ii)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Topic 323 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Topic 825 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 28 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 6 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3 Reference 11: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (b)(2) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1 Reference 12: http://www.xbrl.org/2003/role/disclosureRef -Topic 815 -SubTopic 40 -Name Accounting Standards Codification -Section 65 -Paragraph 1 -Subparagraph (f) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1 Reference 13: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 8 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8 Reference 14: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 11 -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11 Reference 15: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 11 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11 Reference 16: http://www.xbrl.org/2003/role/disclosureRef -Topic 250 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 4 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4 Reference 17: http://www.xbrl.org/2003/role/exampleRef -Topic 946 -SubTopic 830 -Name Accounting Standards Codification -Section 55 -Paragraph 10 -Publisher FASB -URI https://asc.fasb.org/1943274/2147479168/946-830-55-10 Reference 18: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section 45 -Paragraph 7 -Publisher FASB -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7 Reference 19: http://www.xbrl.org/2003/role/disclosureRef -Topic 944 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.7-04(18)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1 Reference 20: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.6-07(9)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1 Reference 21: http://www.xbrl.org/2003/role/disclosureRef -Topic 946 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 3 -Subparagraph (SX 210.6-09(1)(d)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3 Reference 22: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(i)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(ii)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 24: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(iii)(A)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 25: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(4)(iv)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 26: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1A -Subparagraph (SX 210.13-01(a)(5)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A Reference 27: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(i)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 28: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iii)(A)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 29: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iii)(B)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 30: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(4)(iv)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 31: http://www.xbrl.org/2003/role/disclosureRef -Topic 470 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 1B -Subparagraph (SX 210.13-02(a)(5)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B Reference 32: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 60B -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B Reference 33: http://www.xbrl.org/2003/role/disclosureRef -Topic 205 -SubTopic 20 -Name Accounting Standards Codification -Section 50 -Paragraph 7 -Publisher FASB -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7 Reference 34: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 230 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 28 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28 Reference 35: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 1A -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A Reference 36: http://www.xbrl.org/2003/role/disclosureRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section 45 -Paragraph 1B -Subparagraph (a) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B Reference 37: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 942 -SubTopic 220 -Name Accounting Standards Codification -Section S99 -Paragraph 1 -Subparagraph (SX 210.9-04(22)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1 + Details
Name: | us-gaap_NetIncomeLoss
Namespace Prefix: | us-gaap_
Data Type: | xbrli:monetaryItemType
Balance Type: | credit
Period Type: | duration

X
- Details
Name: | ecd_MeasureAxis=1
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_MeasureAxis=2
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_MeasureAxis=3
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_IndividualAxis=spsc_ArchieBlackMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_IndividualAxis=spsc_ChadCollinsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_ExecutiveCategoryAxis=ecd_PeoMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=ecd_EqtyAwrdsInSummryCompstnTblForAplblYrMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=ecd_YrEndFrValOfEqtyAwrdsGrntdInCvrdYrOutsdngAndUnvstdMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=ecd_ChngInFrValOfOutsdngAndUnvstdEqtyAwrdsGrntdInPrrYrsMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=ecd_VstngDtFrValOfEqtyAwrdsGrntdAndVstdInCvrdYrMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_AdjToCompAxis=ecd_ChngInFrValAsOfVstngDtOfPrrYrEqtyAwrdsVstdInCvrdYrMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |

X
- Details
Name: | ecd_ExecutiveCategoryAxis=ecd_NonPeoNeoMember
Namespace Prefix: |
Data Type: | na
Balance Type: |
Period Type: |