Cover
Cover - shares | 6 Months Ended | |
Jun. 30, 2023 | Jul. 20, 2023 | |
Cover [Abstract] | ||
Document Type | 10-Q | |
Document Quarterly Report | true | |
Document Period End Date | Jun. 30, 2023 | |
Document Transition Report | false | |
Entity File Number | 001-34702 | |
Entity Registrant Name | SPS COMMERCE, INC. | |
Entity Incorporation, State or Country Code | DE | |
Entity Tax Identification Number | 41-2015127 | |
Entity Address, Address Line One | 333 South Seventh Street | |
Entity Address, Address Line Two | Suite 1000 | |
Entity Address, City or Town | Minneapolis | |
Entity Address, State or Province | MN | |
Entity Address, Postal Zip Code | 55402 | |
City Area Code | 612 | |
Local Phone Number | 435-9400 | |
Title of 12(b) Security | Common Stock, par value $0.001 per share | |
Trading Symbol | SPSC | |
Security Exchange Name | NASDAQ | |
Entity Current Reporting Status | Yes | |
Entity Interactive Data Current | Yes | |
Entity Filer Category | Large Accelerated Filer | |
Entity Small Business | false | |
Entity Emerging Growth Company | false | |
Entity Shell Company | false | |
Entity Common Stock, Shares Outstanding | 36,651,156 | |
Entity Central Index Key | 0001092699 | |
Current Fiscal Year End Date | --12-31 | |
Document Fiscal Year Focus | 2023 | |
Document Fiscal Period Focus | Q2 | |
Amendment Flag | false |
Condensed Consolidated Balance
Condensed Consolidated Balance Sheets - USD ($) $ in Thousands | Jun. 30, 2023 | Dec. 31, 2022 |
Current assets | ||
Cash and cash equivalents | $ 209,264 | $ 162,893 |
Short-term investments | 60,914 | 51,412 |
Accounts receivable | 48,092 | 42,501 |
Allowance for credit losses | (3,100) | (3,066) |
Accounts receivable, net | 44,992 | 39,435 |
Deferred costs | 56,250 | 52,755 |
Other assets | 13,556 | 16,319 |
Total current assets | 384,976 | 322,814 |
Property and equipment, net | 35,211 | 35,458 |
Operating lease right-of-use assets | 7,973 | 9,170 |
Goodwill | 202,786 | 197,284 |
Intangible assets, net | 77,633 | 88,352 |
Other assets | ||
Deferred costs, non-current | 19,005 | 17,424 |
Deferred income tax assets | 6,676 | 227 |
Other assets, non-current | 1,278 | 2,185 |
Total assets | 735,538 | 672,914 |
Current liabilities | ||
Accounts payable | 6,163 | 11,256 |
Accrued compensation | 28,637 | 30,235 |
Accrued expenses | 6,714 | 7,451 |
Deferred revenue | 66,381 | 57,423 |
Operating lease liabilities | 4,073 | 4,277 |
Total current liabilities | 111,968 | 110,642 |
Other liabilities | ||
Deferred revenue, non-current | 5,724 | 4,771 |
Operating lease liabilities, non-current | 11,058 | 13,009 |
Deferred income tax liabilities | 5,807 | 7,419 |
Total liabilities | 134,557 | 135,841 |
Commitments and contingencies | ||
Stockholders' equity | ||
Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding | 0 | 0 |
Common stock, $0.001 par value; 110,000,000 shares authorized; 38,797,917 and 38,309,144 shares issued; and 36,646,819 and 36,158,046 shares outstanding, respectively | 39 | 38 |
Treasury Stock, at cost; 2,151,098 shares | (128,892) | (128,892) |
Additional paid-in capital | 508,484 | 476,117 |
Retained earnings | 223,192 | 193,221 |
Accumulated other comprehensive loss | (1,842) | (3,411) |
Total stockholders’ equity | 600,981 | 537,073 |
Total liabilities and stockholders’ equity | $ 735,538 | $ 672,914 |
Condensed Consolidated Balanc_2
Condensed Consolidated Balance Sheets (Parenthetical) - $ / shares | Jun. 30, 2023 | Dec. 31, 2022 |
Statement of Financial Position [Abstract] | ||
Preferred stock, par value (in dollars per share) | $ 0.001 | $ 0.001 |
Preferred stock, shares authorized (in shares) | 5,000,000 | 5,000,000 |
Preferred stock, shares issued (in shares) | 0 | 0 |
Preferred stock, shares outstanding (in shares) | 0 | 0 |
Common stock, par value (in dollars per share) | $ 0.001 | $ 0.001 |
Common stock, shares authorized (in shares) | 110,000,000 | 110,000,000 |
Common stock, shares issued (in shares) | 38,797,917 | 38,309,144 |
Common stock, shares outstanding (in shares) | 36,646,819 | 36,158,046 |
Treasury stock, shares (in shares) | 2,151,098 | 2,151,098 |
Condensed Consolidated Statemen
Condensed Consolidated Statements of Comprehensive Income - USD ($) shares in Thousands, $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Income Statement [Abstract] | ||||
Revenues | $ 130,416 | $ 109,178 | $ 256,284 | $ 214,371 |
Cost of revenues | 44,544 | 37,530 | 87,508 | 72,919 |
Gross profit | 85,872 | 71,648 | 168,776 | 141,452 |
Operating expenses | ||||
Sales and marketing | 30,349 | 24,582 | 59,433 | 49,237 |
Research and development | 13,318 | 11,432 | 25,880 | 22,133 |
General and administrative | 21,693 | 17,198 | 42,369 | 32,666 |
Amortization of intangible assets | 3,479 | 2,468 | 7,330 | 4,938 |
Total operating expenses | 68,839 | 55,680 | 135,012 | 108,974 |
Income from operations | 17,033 | 15,968 | 33,764 | 32,478 |
Other income (expense), net | 1,882 | (1,338) | 3,157 | (915) |
Income before income taxes | 18,915 | 14,630 | 36,921 | 31,563 |
Income tax expense | 4,233 | 3,877 | 6,950 | 8,207 |
Net income | 14,682 | 10,753 | 29,971 | 23,356 |
Other comprehensive income (expense) | ||||
Foreign currency translation adjustments | 1,615 | (1,743) | 1,520 | (1,013) |
Unrealized gain (loss) on investments, net of tax of $136, $(3), $269 and $(4), respectively | 408 | (8) | 806 | (11) |
Reclassification of gain on investments into earnings, net of tax of $(127), $(8), $(252), and $(4), respectively | (381) | (23) | (757) | (12) |
Total other comprehensive income (expense) | 1,642 | (1,774) | 1,569 | (1,036) |
Comprehensive income | $ 16,324 | $ 8,979 | $ 31,540 | $ 22,320 |
Net income per share | ||||
Basic (in dollars per share) | $ 0.40 | $ 0.30 | $ 0.82 | $ 0.65 |
Diluted (in dollars per share) | $ 0.39 | $ 0.29 | $ 0.80 | $ 0.63 |
Weighted average common shares used to compute net income per share | ||||
Basic (in shares) | 36,593 | 36,085 | 36,511 | 36,110 |
Diluted (in shares) | 37,426 | 36,862 | 37,327 | 36,897 |
Condensed Consolidated Statem_2
Condensed Consolidated Statements of Comprehensive Income (Parenthetical) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Income Statement [Abstract] | ||||
Unrealized gain (loss) on investments, tax | $ 136 | $ (3) | $ 269 | $ (4) |
Reclassification of (gain) loss on investments into earnings, tax | $ (127) | $ (8) | $ (252) | $ (4) |
Condensed Consolidated Statem_3
Condensed Consolidated Statements of Stockholders' Equity - USD ($) $ in Thousands | Total | Common Stock | Treasury Stock | Additional Paid-in Capital | Retained Earnings | Accumulated Other Comprehensive Loss |
Beginning balance (in shares) at Dec. 31, 2021 | 36,009,257 | |||||
Beginning balance at Dec. 31, 2021 | $ 484,259 | $ 38 | $ (85,677) | $ 433,258 | $ 138,087 | $ (1,447) |
Beginning balance (in shares) at Dec. 31, 2021 | 1,789,353 | |||||
Increase (Decrease) in Stockholders' Equity [Roll Forward] | ||||||
Stock-based compensation | 16,624 | 16,624 | ||||
Shares issued pursuant to stock awards (in shares) | 240,381 | |||||
Shares issued pursuant to stock awards | 690 | 690 | ||||
Employee stock purchase plan activity (in shares) | 35,035 | |||||
Employee stock purchase plan activity | $ 3,350 | 3,350 | ||||
Repurchases of common stock (in shares) | (255,196) | (255,196) | (255,196) | |||
Repurchases of common stock | $ (30,223) | $ (30,223) | ||||
Net income | 23,356 | 23,356 | ||||
Foreign currency translation adjustments | (1,013) | (1,013) | ||||
Unrealized gain (loss) on investments, net of tax | (11) | (11) | ||||
Reclassification of (gain) loss on investments into earnings, net of tax | (12) | (12) | ||||
Ending balance (in shares) at Jun. 30, 2022 | 36,029,477 | |||||
Ending balance at Jun. 30, 2022 | 497,020 | $ 38 | $ (115,900) | 453,922 | 161,443 | (2,483) |
Ending balance (in shares) at Jun. 30, 2022 | 2,044,549 | |||||
Beginning balance (in shares) at Mar. 31, 2022 | 36,120,518 | |||||
Beginning balance at Mar. 31, 2022 | 491,521 | $ 38 | $ (100,903) | 442,405 | 150,690 | (709) |
Beginning balance (in shares) at Mar. 31, 2022 | 1,910,897 | |||||
Increase (Decrease) in Stockholders' Equity [Roll Forward] | ||||||
Stock-based compensation | 8,128 | 8,128 | ||||
Shares issued pursuant to stock awards (in shares) | 9,274 | |||||
Shares issued pursuant to stock awards | 186 | 186 | ||||
Employee stock purchase plan activity (in shares) | 33,337 | |||||
Employee stock purchase plan activity | $ 3,203 | 3,203 | ||||
Repurchases of common stock (in shares) | (133,652) | (133,652) | (133,652) | |||
Repurchases of common stock | $ (14,997) | $ (14,997) | ||||
Net income | 10,753 | 10,753 | ||||
Foreign currency translation adjustments | (1,743) | (1,743) | ||||
Unrealized gain (loss) on investments, net of tax | (8) | (8) | ||||
Reclassification of (gain) loss on investments into earnings, net of tax | (23) | (23) | ||||
Ending balance (in shares) at Jun. 30, 2022 | 36,029,477 | |||||
Ending balance at Jun. 30, 2022 | $ 497,020 | $ 38 | $ (115,900) | 453,922 | 161,443 | (2,483) |
Ending balance (in shares) at Jun. 30, 2022 | 2,044,549 | |||||
Beginning balance (in shares) at Dec. 31, 2022 | 36,158,046 | 36,158,046 | ||||
Beginning balance at Dec. 31, 2022 | $ 537,073 | $ 38 | $ (128,892) | 476,117 | 193,221 | (3,411) |
Beginning balance (in shares) at Dec. 31, 2022 | 2,151,098 | 2,151,098 | ||||
Increase (Decrease) in Stockholders' Equity [Roll Forward] | ||||||
Stock-based compensation | $ 23,412 | 23,412 | ||||
Shares issued pursuant to stock awards (in shares) | 450,548 | |||||
Shares issued pursuant to stock awards | 4,819 | $ 1 | 4,818 | |||
Employee stock purchase plan activity (in shares) | 38,225 | |||||
Employee stock purchase plan activity | $ 4,136 | 4,136 | ||||
Repurchases of common stock (in shares) | 0 | |||||
Repurchases of common stock | $ 0 | |||||
Net income | 29,971 | 29,971 | ||||
Foreign currency translation adjustments | 1,520 | 1,520 | ||||
Unrealized gain (loss) on investments, net of tax | 806 | 806 | ||||
Reclassification of (gain) loss on investments into earnings, net of tax | $ (757) | (757) | ||||
Ending balance (in shares) at Jun. 30, 2023 | 36,646,819 | 36,646,819 | ||||
Ending balance at Jun. 30, 2023 | $ 600,981 | $ 39 | $ (128,892) | 508,484 | 223,192 | (1,842) |
Ending balance (in shares) at Jun. 30, 2023 | 2,151,098 | 2,151,098 | ||||
Beginning balance (in shares) at Mar. 31, 2023 | 36,532,756 | |||||
Beginning balance at Mar. 31, 2023 | $ 565,889 | $ 39 | $ (128,892) | 489,716 | 208,510 | (3,484) |
Beginning balance (in shares) at Mar. 31, 2023 | 2,151,098 | |||||
Increase (Decrease) in Stockholders' Equity [Roll Forward] | ||||||
Stock-based compensation | 12,237 | 12,237 | ||||
Shares issued pursuant to stock awards (in shares) | 78,387 | |||||
Shares issued pursuant to stock awards | 2,636 | 2,636 | ||||
Employee stock purchase plan activity (in shares) | 35,676 | |||||
Employee stock purchase plan activity | $ 3,895 | 3,895 | ||||
Repurchases of common stock (in shares) | 0 | |||||
Repurchases of common stock | $ 0 | |||||
Net income | 14,682 | 14,682 | ||||
Foreign currency translation adjustments | 1,615 | 1,615 | ||||
Unrealized gain (loss) on investments, net of tax | 408 | 408 | ||||
Reclassification of (gain) loss on investments into earnings, net of tax | $ (381) | (381) | ||||
Ending balance (in shares) at Jun. 30, 2023 | 36,646,819 | 36,646,819 | ||||
Ending balance at Jun. 30, 2023 | $ 600,981 | $ 39 | $ (128,892) | $ 508,484 | $ 223,192 | $ (1,842) |
Ending balance (in shares) at Jun. 30, 2023 | 2,151,098 | 2,151,098 |
Condensed Consolidated Statem_4
Condensed Consolidated Statements of Cash Flows - USD ($) $ in Thousands | 6 Months Ended | |
Jun. 30, 2023 | Jun. 30, 2022 | |
Cash flows from operating activities | ||
Net income | $ 29,971 | $ 23,356 |
Reconciliation of net income to net cash provided by operating activities | ||
Deferred income taxes | (8,654) | (2,160) |
Depreciation and amortization of property and equipment | 9,289 | 7,814 |
Amortization of intangible assets | 7,330 | 4,938 |
Provision for credit losses | 2,491 | 2,634 |
Stock-based compensation | 24,661 | 17,676 |
Other, net | 1,143 | 8 |
Changes in assets and liabilities | ||
Accounts receivable | (9,937) | (7,862) |
Deferred costs | (5,136) | (5,095) |
Other current and non-current assets | 3,614 | (1,423) |
Accounts payable | (4,414) | (3,234) |
Accrued compensation | (2,910) | (7,186) |
Accrued expenses | (728) | (805) |
Deferred revenue | 9,909 | 8,802 |
Operating leases | (959) | (678) |
Net cash provided by operating activities | 55,670 | 36,785 |
Cash flows from investing activities | ||
Purchases of property and equipment | (9,769) | (8,191) |
Purchases of investments | (68,579) | (114,603) |
Maturities of investments | 60,000 | 117,500 |
Net cash used in investing activities | (18,348) | (5,294) |
Cash flows from financing activities | ||
Repurchases of common stock | 0 | (30,223) |
Net proceeds from exercise of options to purchase common stock | 4,819 | 690 |
Net proceeds from employee stock purchase plan activity | 4,136 | 3,350 |
Net cash provided by (used in) financing activities | 8,955 | (26,183) |
Effect of foreign currency exchange rate changes | 94 | (135) |
Net increase in cash and cash equivalents | 46,371 | 5,173 |
Cash and cash equivalents at beginning of period | 162,893 | 207,552 |
Cash and cash equivalents at end of period | $ 209,264 | $ 212,725 |
General
General | 6 Months Ended |
Jun. 30, 2023 | |
Organization, Consolidation and Presentation of Financial Statements [Abstract] | |
General | General Business Description SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf. Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience. Basis of Presentation The accompanying unaudited condensed consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the condensed consolidated financial statements. This interim financial information has been prepared under the instructions to Form 10-Q and Rule 10-01 of Regulation S-X. Accordingly, these condensed consolidated financial statements do not include all of the information and notes required by GAAP. Therefore, these condensed consolidated financial statements should be read in conjunction with the consolidated financial statements and notes included in our Annual Report on Form 10-K for the year ended December 31, 2022, as filed with the Securities and Exchange Commission (“SEC”). We have included all normal recurring adjustments considered necessary to provide a fair presentation of our financial position, results of operations, stockholders’ equity, and cash flows for the interim periods presented. Operating results for these interim periods are not necessarily indicative of the results to be expected for the full year. Use of Estimates Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates. Significant Accounting Policies There were no material changes in our significant accounting policies during the six months ended June 30, 2023. See Note A to the consolidated financial statements included in our Annual Report on Form 10-K for the year ended December 31, 2022 , as filed with the SEC, for additional information regarding our significant accounting policies. Accounting Pronouncements Recently Adopted Standard Date of Issuance Description Date of Adoption Effect on the Financial Statements ASU 2021-08, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers October 2021 This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter. January 2023 The adoption of this standard may have a material impact on the purchase accounting for future business combinations depending on the specific amount of contract assets and liabilities being acquired. |
Business Acquisitions
Business Acquisitions | 6 Months Ended |
Jun. 30, 2023 | |
Business Combination and Asset Acquisition [Abstract] | |
Business Acquisitions | Business Acquisitions GCommerce Effective July 19, 2022, we acquired all of the outstanding equity ownership interests of GCommerce, Inc. ("GCommerce"), a leading EDI provider within the automotive aftermarket industry. Pursuant to the definitive agreement, the purchase price was $45.1 million, including post-closing adjustments. During the quarter ended March 31, 2023, provisional amounts were adjusted by $1.6 million, primarily relating to a $1.5 million decrease in the estimated value of deferred income tax assets, with the corresponding offset to goodwill. During the quarter ending June 30, 2023, there were no significant adjustments made to provisional amounts. The purchase accounting for the acquisition has been finalized as of June 30, 2023. InterTrade Effective October 4, 2022, we acquired all of the outstanding equity ownership interests of Canadian based InterTrade Systems Inc. ("InterTrade"), a leading EDI provider within the apparel and general merchandising markets. Pursuant to the definitive agreement, the purchase price was $49.1 million, including estimated post-closing adjustments. The purchase accounting for the acquisition has not been finalized as of June 30, 2023 due to various items including valuation modeling completion; provisional amounts are primarily related to intangible assets. We expect to finalize the allocation of the purchase price within the one-year measurement period following the acquisition. During the quarter ended June 30, 2023, provisional amounts were adjusted by $3.1 million, primarily relating to a $3.9 million decrease in estimated value of intangible assets and the corresponding $1.0 million change to the deferred tax position, with the offsets to goodwill. TIE Kinetix On July 26, 2023, we entered into a purchase agreement with TIE Kinetix N.V. ("TIE Kinetix"), a leading provider of supply chain digitalization including EDI and e-invoicing in Europe, to acquire the business and operations of TIE Kinetix by purchasing the equity of its wholly owned operating subsidiary. The purchase price is €64.5 million ($71.4 million at the July 26, 2023 exchange rate), net of cash acquired. The transaction is subject to customary closing conditions and is expected to close during the quarter ending September 30, 2023, upon the approval of the shareholders of TIE Kinetix. |
Revenue
Revenue | 6 Months Ended |
Jun. 30, 2023 | |
Revenue from Contract with Customer [Abstract] | |
Revenue | Revenue We derive our revenues from the following revenue streams: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Recurring revenues: Fulfillment $ 105,500 $ 87,887 $ 207,169 $ 172,618 Analytics 12,709 11,648 25,079 22,944 Other 3,314 1,628 6,576 3,168 Recurring revenues 121,523 101,163 238,824 198,730 One-time revenues 8,893 8,015 17,460 15,641 Total revenue $ 130,416 $ 109,178 $ 256,284 $ 214,371 Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services. Recurring Revenues Recurring revenues consist of recurring subscriptions from customers that utilize our Fulfillment, Analytics, and Other supply chain management products. Revenue for these products is generally recognized on a ratable basis over the contract term beginning on the date that our service is made available to the customer. Our contracts with our recurring revenue customers are recurring in nature, generally ranging from monthly to annual, and generally allow the customer to cancel the contract for any reason with 30 to 90 days’ notice. Timing of billings varies by customer and by contract type and generally are either in advance or within 30 days of the service being performed. Given that the recurring revenue contracts are for one year or less, we have applied the optional exemption to not disclose information about the remaining performance obligations for recurring revenue contracts. One-time Revenues One-time revenues consist of set-up fees and miscellaneous fees from customers. Set-up revenues Set-up fees are specific for each connection a customer has with a trading partner. These nonrefundable fees are necessary for our customers to utilize our services and do not provide any standalone value. Many of our customers have connections with numerous trading partners. Set-up fees constitute a material renewal option right that provide customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. As such, set-up fees and related costs are deferred and recognized ratably over two years which is the estimated period for which a material right is present for our customers. The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Balance, beginning of period $ 15,287 $ 14,938 $ 14,999 $ 14,459 Invoiced set-up fees 5,739 4,058 9,990 8,061 Recognized set-up fees (4,048) (3,687) (8,011) (7,211) Balance, end of period $ 16,978 $ 15,309 $ 16,978 $ 15,309 The entire balance of deferred set-up fees will be recognized within two years. Those that will be recognized within the next year are classified as current, whereas the remainder are classified as non-current. Miscellaneous one-time revenues Miscellaneous one-time fees consist of professional services and testing and certification. The contract period for these one-time fees is for one year or less and recognized at the time service is provided. We have applied the optional exemption to not disclose information about the remaining performance obligations for miscellaneous one-time fee contracts since they have original durations of one year or less. |
Deferred Costs
Deferred Costs | 6 Months Ended |
Jun. 30, 2023 | |
Deferred Costs [Abstract] | |
Deferred Costs | Deferred Costs The deferred costs activity was as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Balance, beginning of period $ 71,809 $ 62,610 $ 70,179 $ 59,720 Incurred deferred costs 19,304 17,637 37,538 35,418 Amortized deferred costs (15,858) (15,582) (32,462) (30,473) Balance, end of period $ 75,255 $ 64,665 $ 75,255 $ 64,665 |
Fair Value Measurements
Fair Value Measurements | 6 Months Ended |
Jun. 30, 2023 | |
Fair Value Disclosures [Abstract] | |
Fair Value Measurements | Fair Value Measurements Cash Equivalents and Investments Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following: June 30, 2023 December 31, 2022 Fair Value Level Amortized Cost Unrealized Gains (Losses), net Fair Value Amortized Cost Unrealized Gains (Losses), net Fair Value (in thousands) Cash equivalents: Money market funds Level 1 $ 152,309 $ — $ 152,309 $ 73,368 $ — $ 73,368 Investments: Certificates of deposit Level 1 6,662 — 6,662 6,813 — 6,813 Marketable securities: Commercial paper Level 2 43,985 305 44,290 44,224 375 44,599 U.S. treasury securities Level 2 9,827 135 9,962 — — — $ 212,783 $ 440 $ 213,223 $ 124,405 $ 375 $ 124,780 |
Allowance for Credit Losses
Allowance for Credit Losses | 6 Months Ended |
Jun. 30, 2023 | |
Allowance for Credit Loss [Abstract] | |
Allowance for Credit Losses | Allowance for Credit Losses The allowance for credit losses activity, included in accounts receivable, net, was as follows: Six Months Ended (in thousands) 2023 2022 Balance, beginning of period $ 3,066 $ 4,249 Provision for credit losses 2,491 2,634 Write-offs, net of recoveries (2,457) (2,429) Balance, end of period $ 3,100 $ 4,454 |
Property and Equipment, Net
Property and Equipment, Net | 6 Months Ended |
Jun. 30, 2023 | |
Property, Plant and Equipment [Abstract] | |
Property and Equipment, Net | Property and Equipment, Net Property and equipment, net consisted of the following: (in thousands) June 30, December 31, 2022 Internally developed software $ 54,846 $ 49,994 Computer equipment 32,213 30,310 Leasehold improvements 15,386 16,531 Office equipment and furniture 10,602 10,981 Property and equipment, cost 113,047 107,816 Less: accumulated depreciation and amortization (77,836) (72,358) Total property and equipment, net $ 35,211 $ 35,458 |
Goodwill and Intangible Assets,
Goodwill and Intangible Assets, Net | 6 Months Ended |
Jun. 30, 2023 | |
Goodwill and Intangible Assets Disclosure [Abstract] | |
Goodwill and Intangible Assets, Net | Goodwill and Intangible Assets, Net Goodwill The activity in goodwill was as follows: Six Months Ended (in thousands) 2023 Balance, beginning of period $ 197,284 Foreign currency translation 924 Remeasurement from provisional purchase accounting amount 4,578 Balance, end of period $ 202,786 Intangible Assets Intangible assets, net consisted of the following: June 30, 2023 ($ in thousands) Gross Accumulated Foreign Net Weighted Average Remaining Amortization Period Subscriber relationships $ 79,385 $ (26,376) $ (3,068) $ 49,941 6.4 years Acquired technology 40,612 (12,597) (323) 27,692 5.2 years $ 119,997 $ (38,973) $ (3,391) $ 77,633 6.0 years December 31, 2022 ($ in thousands) Gross Accumulated Foreign Net Weighted Average Remaining Amortization Period Subscriber relationships $ 80,101 $ (22,255) $ (171) $ 57,675 6.8 years Acquired technology 40,610 (9,934) 1 30,677 5.7 years $ 120,711 $ (32,189) $ (170) $ 88,352 6.4 years The estimated future annual amortization expense related to intangible assets is as follows: (in thousands) Remainder of 2023 $ 7,401 2024 13,665 2025 13,527 2026 12,523 2027 12,060 Thereafter 18,457 Total future amortization $ 77,633 |
Commitments and Contingencies
Commitments and Contingencies | 6 Months Ended |
Jun. 30, 2023 | |
Commitments and Contingencies Disclosure [Abstract] | |
Commitments and Contingencies | Commitments and Contingencies Leases The components of lease expense were as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Operating lease cost $ 779 $ 740 $ 1,578 $ 1,499 Variable lease cost 950 856 1,878 1,649 $ 1,729 $ 1,596 $ 3,456 $ 3,148 Supplemental cash flow information related to leases was as follows: Six Months Ended (in thousands) 2023 2022 Cash paid for amounts included in the measurement of lease liabilities Operating cash flows from operating leases $ 1,329 $ 2,176 Right-of-use assets obtained in exchange for operating lease liabilities 268 — Supplemental balance sheet information related to operating leases was as follows: June 30, December 31, 2022 Weighted-average remaining lease term 3.5 years 3.9 years Weighted-average discount rate 4.0 % 4.0 % At June 30, 2023, our future minimum payments under operating leases were as follows: (in thousands) Remainder of 2023 $ 2,563 2024 4,567 2025 4,116 2026 3,766 2027 1,282 Total future gross payments $ 16,294 Less: imputed interest (1,163) Total operating lease liabilities $ 15,131 Purchase Commitments We have entered into separate noncancelable agreements with computing infrastructure, productivity software, customer relationship management, and performance and security data analytics vendors for services through 2026. At June 30, 2023, our remaining purchase commitments and estimated purchase timing were as follows: (in thousands) Remainder of 2023 $ 5,863 2024 11,527 2025 11,178 2026 4,510 Total estimated future purchases $ 33,078 |
Stockholders' Equity
Stockholders' Equity | 6 Months Ended |
Jun. 30, 2023 | |
Equity [Abstract] | |
Stockholders' Equity | Stockholders’ Equity Share Repurchase Programs Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through June 30, 2023 were as follows: (in thousands) Effective Date Expiration Date Share Value Authorized for Repurchase Share Value Repurchased Unused & Expired Share Repurchase Value Share Value Available for Future Repurchase 2021 Program November 2021 August 2022 $ 50,000 $ 49,992 $ 8 N/A 2022 Program August 2022 July 2024 50,000 2,992 N/A $ 47,008 The share repurchase activity by period was as follows: Three Months Ended Six Months Ended (in thousands, except shares and per share amounts) 2023 2022 2023 2022 Number of shares repurchased — 133,652 — 255,196 Shares repurchased cost $ — $ 14,997 $ — $ 30,223 Average price per repurchased share $ — $ 112.21 $ — $ 118.43 |
Stock-Based Compensation
Stock-Based Compensation | 6 Months Ended |
Jun. 30, 2023 | |
Share-Based Payment Arrangement [Abstract] | |
Stock-Based Compensation | Stock-Based Compensation Our equity compensation plans provide for the grant of incentive and nonqualified stock options, as well as other stock-based awards including performance share units (“PSUs”), restricted stock awards (“RSAs”), restricted stock units (“RSUs”), and deferred stock units (“DSUs”), to employees, non-employee directors and other consultants who provide services to us. We also provide an employee stock purchase plan (“ESPP”) and 401(k) match to eligible participants. We recognize stock-based compensation expense based on grant date award fair value. This cost is recognized over the period for which the employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. At June 30, 2023 , there were 12.8 million shares available for grant under approved equity compensation plans. Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Cost of revenues $ 2,586 $ 2,152 $ 5,089 $ 4,331 Operating expenses Sales and marketing 2,528 1,958 4,951 3,990 Research and development 1,812 1,380 3,589 2,854 General and administrative 5,955 3,171 11,032 6,501 $ 12,881 $ 8,661 $ 24,661 $ 17,676 Stock-based compensation expense by grant type or plan was as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Stock options $ 494 $ 463 $ 985 $ 940 PSUs 3,499 2,004 7,424 4,703 RSUs 7,381 5,094 13,443 9,732 RSAs & DSUs 115 110 223 218 ESPP 748 458 1,337 1,032 401(k) stock match 644 532 1,249 1,051 $ 12,881 $ 8,661 $ 24,661 $ 17,676 As of June 30, 2023, there was $53.8 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a primarily straight-line basis over a weighted average period of 2.5 years. Stock Options Our stock option activity was as follows: Six Months Ended Options (#) Weighted Average Outstanding, beginning of period 562,697 $ 56.24 Granted 39,483 151.89 Exercised (143,550) 33.57 Forfeited (1,916) 123.49 Outstanding, end of period 456,714 $ 71.36 Of the total outstanding options at June 30, 2023, 0.4 million were exercisable. The outstanding and exercisable options had a weighted average exercise price of $58.49 per share and a weighted average remaining contractual life of 3.1 years. The weighted average grant date fair value of options granted during the six months ended June 30, 2023 was $56.23 per share. 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.2 Volatility 39.3 % Dividend yield — Risk-free interest rate 4.0 % Performance Share Units, Restricted Stock Units and Awards, and Deferred Stock Units In each of the quarters ended March 31, 2023, 2022, 2021, and 2020 we granted PSU awards with a target performance level. These awards are earned based upon our Company’s total shareholder return as compared to an indexed total shareholder return over the course of a fiscal based three-year performance period, starting in the year of grant. Earned awards vest in the quarter following the conclusion of the performance period. In the three months ended March 31, 2023 , PSU awards granted in 2020 vested at the maximum performance level and 0.1 million shares of common stock were issued. Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows: Six Months Ended # Weighted Average Grant Outstanding, beginning of period 712,158 $ 103.93 Granted 311,488 162.86 Vested and common stock issued (305,853) 74.89 Forfeited (4,613) 115.39 Outstanding, end of period 713,180 $ 142.04 The number of PSUs, RSUs, RSAs, and DSUs outstanding at June 30, 2023 included less than 0.1 million units that have vested, but the shares of common stock have not yet been issued, pursuant to the terms of the underlying agreements. Employee Stock Purchase Plan Our ESPP activity was as follows: Three Months Ended Six Months Ended (in thousands, except shares) 2023 2022 2023 2022 Amounts for shares purchased $ 3,895 $ 3,203 $ 4,136 $ 3,350 Shares purchased 35,676 33,337 38,225 35,035 A total of 1.7 million shares of common stock are reserved for issuance under the ESPP as of June 30, 2023. 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 40.1 % Dividend yield — Risk-free interest rate 4.6 % |
Income Taxes
Income Taxes | 6 Months Ended |
Jun. 30, 2023 | |
Income Tax Disclosure [Abstract] | |
Income Taxes | Income TaxesWe record our interim provision for income taxes by applying our estimated annual effective tax rate to our year-to-date pre-tax income and adjust the provision for discrete tax items recorded in the period. Our provisions for income taxes includes current federal, state, and foreign income tax expense, as well as deferred tax expense.Differences between our effective tax rate and statutory tax rates are primarily due to the impact of permanently non-deductible expenses partially offset by the federal research and development credits and tax benefits associated with foreign-derived intangible income. Additionally, excess tax benefits generated upon settlement or exercise of stock awards are recognized as a reduction to income tax expense as a discrete tax item in the quarter that the event occurs, creating potentially significant fluctuation in tax expense by quarter and by year. |
Other Income and Expense
Other Income and Expense | 6 Months Ended |
Jun. 30, 2023 | |
Other Income and Expenses [Abstract] | |
Other Income and Expense | Other Income and Expense Other income (expense), net included the following: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Investment income $ 1,611 $ 172 $ 2,737 $ 220 Realized gain (loss) from foreign currency on cash and investments held 290 (1,327) 427 (859) Other expense, net (19) (183) (7) (276) Total other income (expense), net $ 1,882 $ (1,338) $ 3,157 $ (915) |
Net Income Per Share
Net Income Per Share | 6 Months Ended |
Jun. 30, 2023 | |
Earnings Per Share [Abstract] | |
Net Income Per Share | Net Income Per Share The components and computation of basic and diluted net income per share were as follows: Three Months Ended Six Months Ended (in thousands, except per share amounts) 2023 2022 2023 2022 Numerator Net income $ 14,682 $ 10,753 $ 29,971 $ 23,356 Denominator Weighted average common shares outstanding, basic 36,593 36,085 36,511 36,110 Options to purchase common stock 274 391 291 405 PSUs, RSUs, RSAs, and DSUs 559 386 525 382 Weighted average common shares outstanding, diluted 37,426 36,862 37,327 36,897 Net income per share Basic $ 0.40 $ 0.30 $ 0.82 $ 0.65 Diluted $ 0.39 $ 0.29 $ 0.80 $ 0.63 The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Anti-dilutive shares 37 242 63 211 |
Geographic Information
Geographic Information | 6 Months Ended |
Jun. 30, 2023 | |
Revenue from Contract with Customer [Abstract] | |
Geographic Information | Geographic Information Revenue Domestic revenue, which we define as revenue that was attributable to customers based within the U.S., was as follows: Three Months Ended Six Months Ended 2023 2022 2023 2022 Domestic revenue 84 % 84 % 84 % 84 % No single jurisdiction outside of the U.S. had revenues in excess of 10%. Property and Equipment Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows: June 30, December 31, 2022 International property and equipment 14 % 13 % |
Pay vs Performance Disclosure
Pay vs Performance Disclosure - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Pay vs Performance Disclosure | ||||
Net income | $ 14,682 | $ 10,753 | $ 29,971 | $ 23,356 |
Insider Trading Arrangements
Insider Trading Arrangements | 6 Months Ended |
Jun. 30, 2023 | |
Trading Arrangements, by Individual | |
Rule 10b5-1 Arrangement Adopted | false |
Non-Rule 10b5-1 Arrangement Adopted | false |
Rule 10b5-1 Arrangement Terminated | false |
Non-Rule 10b5-1 Arrangement Terminated | false |
General (Policies)
General (Policies) | 6 Months Ended |
Jun. 30, 2023 | |
Organization, Consolidation and Presentation of Financial Statements [Abstract] | |
Business Description | Business Description SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf. Our products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience. |
Basis of Presentation | Basis of Presentation The accompanying unaudited condensed consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the condensed consolidated financial statements. This interim financial information has been prepared under the instructions to Form 10-Q and Rule 10-01 of Regulation S-X. Accordingly, these condensed consolidated financial statements do not include all of the information and notes required by GAAP. Therefore, these condensed consolidated financial statements should be read in conjunction with the consolidated financial statements and notes included in our Annual Report on Form 10-K for the year ended December 31, 2022, as filed with the Securities and Exchange Commission (“SEC”). We have included all normal recurring adjustments considered necessary to provide a fair presentation of our financial position, results of operations, stockholders’ equity, and cash flows for the interim periods presented. Operating results for these interim periods are not necessarily indicative of the results to be expected for the full year. |
Use of Estimates | Use of Estimates Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates. |
Significant Accounting Policies | Significant Accounting Policies There were no material changes in our significant accounting policies during the six months ended June 30, 2023. See Note A to the consolidated financial statements included in our Annual Report on Form 10-K for the year ended December 31, 2022 , as filed with the SEC, for additional information regarding our significant accounting policies. |
General (Tables)
General (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Organization, Consolidation and Presentation of Financial Statements [Abstract] | |
Accounting Pronouncements Note Yet Adopted | Accounting Pronouncements Recently Adopted Standard Date of Issuance Description Date of Adoption Effect on the Financial Statements ASU 2021-08, Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers October 2021 This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter. January 2023 The adoption of this standard may have a material impact on the purchase accounting for future business combinations depending on the specific amount of contract assets and liabilities being acquired. |
Revenue (Tables)
Revenue (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Revenue from Contract with Customer [Abstract] | |
Summary of Revenues by Revenue Stream | We derive our revenues from the following revenue streams: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Recurring revenues: Fulfillment $ 105,500 $ 87,887 $ 207,169 $ 172,618 Analytics 12,709 11,648 25,079 22,944 Other 3,314 1,628 6,576 3,168 Recurring revenues 121,523 101,163 238,824 198,730 One-time revenues 8,893 8,015 17,460 15,641 Total revenue $ 130,416 $ 109,178 $ 256,284 $ 214,371 |
Summary of Deferred Revenue Liability Relating to Set-Up Fees | The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Balance, beginning of period $ 15,287 $ 14,938 $ 14,999 $ 14,459 Invoiced set-up fees 5,739 4,058 9,990 8,061 Recognized set-up fees (4,048) (3,687) (8,011) (7,211) Balance, end of period $ 16,978 $ 15,309 $ 16,978 $ 15,309 |
Deferred Costs (Tables)
Deferred Costs (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Deferred Costs [Abstract] | |
Summary of Deferred Costs and Amortization of Deferred Costs | The deferred costs activity was as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Balance, beginning of period $ 71,809 $ 62,610 $ 70,179 $ 59,720 Incurred deferred costs 19,304 17,637 37,538 35,418 Amortized deferred costs (15,858) (15,582) (32,462) (30,473) Balance, end of period $ 75,255 $ 64,665 $ 75,255 $ 64,665 |
Fair Value Measurements (Tables
Fair Value Measurements (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Fair Value Disclosures [Abstract] | |
Summary of Cash Equivalents and Investments | Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following: June 30, 2023 December 31, 2022 Fair Value Level Amortized Cost Unrealized Gains (Losses), net Fair Value Amortized Cost Unrealized Gains (Losses), net Fair Value (in thousands) Cash equivalents: Money market funds Level 1 $ 152,309 $ — $ 152,309 $ 73,368 $ — $ 73,368 Investments: Certificates of deposit Level 1 6,662 — 6,662 6,813 — 6,813 Marketable securities: Commercial paper Level 2 43,985 305 44,290 44,224 375 44,599 U.S. treasury securities Level 2 9,827 135 9,962 — — — $ 212,783 $ 440 $ 213,223 $ 124,405 $ 375 $ 124,780 |
Allowance for Credit Losses (Ta
Allowance for Credit Losses (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Allowance for Credit Loss [Abstract] | |
Schedule of Allowance for Credit Losses Activity Included in Accounts Receivable Net | The allowance for credit losses activity, included in accounts receivable, net, was as follows: Six Months Ended (in thousands) 2023 2022 Balance, beginning of period $ 3,066 $ 4,249 Provision for credit losses 2,491 2,634 Write-offs, net of recoveries (2,457) (2,429) Balance, end of period $ 3,100 $ 4,454 |
Property and Equipment, Net (Ta
Property and Equipment, Net (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Property, Plant and Equipment [Abstract] | |
Property, Plant and Equipment | Property and equipment, net consisted of the following: (in thousands) June 30, December 31, 2022 Internally developed software $ 54,846 $ 49,994 Computer equipment 32,213 30,310 Leasehold improvements 15,386 16,531 Office equipment and furniture 10,602 10,981 Property and equipment, cost 113,047 107,816 Less: accumulated depreciation and amortization (77,836) (72,358) Total property and equipment, net $ 35,211 $ 35,458 |
Goodwill and Intangible Asset_2
Goodwill and Intangible Assets, Net (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Goodwill and Intangible Assets Disclosure [Abstract] | |
Schedule of Changes in Net Carrying Amount of Goodwill | Goodwill The activity in goodwill was as follows: Six Months Ended (in thousands) 2023 Balance, beginning of period $ 197,284 Foreign currency translation 924 Remeasurement from provisional purchase accounting amount 4,578 Balance, end of period $ 202,786 |
Intangible Assets | Intangible Assets Intangible assets, net consisted of the following: June 30, 2023 ($ in thousands) Gross Accumulated Foreign Net Weighted Average Remaining Amortization Period Subscriber relationships $ 79,385 $ (26,376) $ (3,068) $ 49,941 6.4 years Acquired technology 40,612 (12,597) (323) 27,692 5.2 years $ 119,997 $ (38,973) $ (3,391) $ 77,633 6.0 years December 31, 2022 ($ in thousands) Gross Accumulated Foreign Net Weighted Average Remaining Amortization Period Subscriber relationships $ 80,101 $ (22,255) $ (171) $ 57,675 6.8 years Acquired technology 40,610 (9,934) 1 30,677 5.7 years $ 120,711 $ (32,189) $ (170) $ 88,352 6.4 years |
Estimated Future Annual Amortization Expense Related to Intangible Assets Subject to Amortization | The estimated future annual amortization expense related to intangible assets is as follows: (in thousands) Remainder of 2023 $ 7,401 2024 13,665 2025 13,527 2026 12,523 2027 12,060 Thereafter 18,457 Total future amortization $ 77,633 |
Commitments and Contingencies (
Commitments and Contingencies (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Commitments and Contingencies Disclosure [Abstract] | |
Components of Lease Expense | The components of lease expense were as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Operating lease cost $ 779 $ 740 $ 1,578 $ 1,499 Variable lease cost 950 856 1,878 1,649 $ 1,729 $ 1,596 $ 3,456 $ 3,148 |
Schedule of Supplemental Cash Flow Information Related to Leases | Supplemental cash flow information related to leases was as follows: Six Months Ended (in thousands) 2023 2022 Cash paid for amounts included in the measurement of lease liabilities Operating cash flows from operating leases $ 1,329 $ 2,176 Right-of-use assets obtained in exchange for operating lease liabilities 268 — |
Schedule of Supplemental Balance Sheet Information Related to Leases | Supplemental balance sheet information related to operating leases was as follows: June 30, December 31, 2022 Weighted-average remaining lease term 3.5 years 3.9 years Weighted-average discount rate 4.0 % 4.0 % |
Schedule of Future Minimum Payments Under Operating Leases | At June 30, 2023, our future minimum payments under operating leases were as follows: (in thousands) Remainder of 2023 $ 2,563 2024 4,567 2025 4,116 2026 3,766 2027 1,282 Total future gross payments $ 16,294 Less: imputed interest (1,163) Total operating lease liabilities $ 15,131 |
Schedule of Remaining Purchase Commitments and Estimated Purchase Timing | At June 30, 2023, our remaining purchase commitments and estimated purchase timing were as follows: (in thousands) Remainder of 2023 $ 5,863 2024 11,527 2025 11,178 2026 4,510 Total estimated future purchases $ 33,078 |
Stockholders' Equity (Tables)
Stockholders' Equity (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Equity [Abstract] | |
Stock Repurchase Activity | Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through June 30, 2023 were as follows: (in thousands) Effective Date Expiration Date Share Value Authorized for Repurchase Share Value Repurchased Unused & Expired Share Repurchase Value Share Value Available for Future Repurchase 2021 Program November 2021 August 2022 $ 50,000 $ 49,992 $ 8 N/A 2022 Program August 2022 July 2024 50,000 2,992 N/A $ 47,008 The share repurchase activity by period was as follows: Three Months Ended Six Months Ended (in thousands, except shares and per share amounts) 2023 2022 2023 2022 Number of shares repurchased — 133,652 — 255,196 Shares repurchased cost $ — $ 14,997 $ — $ 30,223 Average price per repurchased share $ — $ 112.21 $ — $ 118.43 |
Stock-Based Compensation (Table
Stock-Based Compensation (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Share-Based Payment Arrangement [Abstract] | |
Stock-Based Compensation Expense | Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Cost of revenues $ 2,586 $ 2,152 $ 5,089 $ 4,331 Operating expenses Sales and marketing 2,528 1,958 4,951 3,990 Research and development 1,812 1,380 3,589 2,854 General and administrative 5,955 3,171 11,032 6,501 $ 12,881 $ 8,661 $ 24,661 $ 17,676 Stock-based compensation expense by grant type or plan was as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Stock options $ 494 $ 463 $ 985 $ 940 PSUs 3,499 2,004 7,424 4,703 RSUs 7,381 5,094 13,443 9,732 RSAs & DSUs 115 110 223 218 ESPP 748 458 1,337 1,032 401(k) stock match 644 532 1,249 1,051 $ 12,881 $ 8,661 $ 24,661 $ 17,676 |
Stock Option Activity | Our stock option activity was as follows: Six Months Ended Options (#) Weighted Average Outstanding, beginning of period 562,697 $ 56.24 Granted 39,483 151.89 Exercised (143,550) 33.57 Forfeited (1,916) 123.49 Outstanding, end of period 456,714 $ 71.36 |
Weighted Average Grant Date Fair Value of Options Granted, Assumptions | The weighted average grant date fair value of options granted during the six months ended June 30, 2023 was $56.23 per share. 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.2 Volatility 39.3 % Dividend yield — Risk-free interest rate 4.0 % |
PSU, RSU, RSA, and DSU | Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows: Six Months Ended # Weighted Average Grant Outstanding, beginning of period 712,158 $ 103.93 Granted 311,488 162.86 Vested and common stock issued (305,853) 74.89 Forfeited (4,613) 115.39 Outstanding, end of period 713,180 $ 142.04 |
Summary of ESPP Activity | Our ESPP activity was as follows: Three Months Ended Six Months Ended (in thousands, except shares) 2023 2022 2023 2022 Amounts for shares purchased $ 3,895 $ 3,203 $ 4,136 $ 3,350 Shares purchased 35,676 33,337 38,225 35,035 |
Fair Value Estimation of Common Stock Using Black-Scholes Option Pricing Model, 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: Life (in years) 0.5 Volatility 40.1 % Dividend yield — Risk-free interest rate 4.6 % |
Other Income and Expense (Table
Other Income and Expense (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Other Income and Expenses [Abstract] | |
Summary of Other Income (Expense), Net | Other income (expense), net included the following: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Investment income $ 1,611 $ 172 $ 2,737 $ 220 Realized gain (loss) from foreign currency on cash and investments held 290 (1,327) 427 (859) Other expense, net (19) (183) (7) (276) Total other income (expense), net $ 1,882 $ (1,338) $ 3,157 $ (915) |
Net Income Per Share (Tables)
Net Income Per Share (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Earnings Per Share [Abstract] | |
Components and Computation of Basic and Diluted Net Income Per Share | The components and computation of basic and diluted net income per share were as follows: Three Months Ended Six Months Ended (in thousands, except per share amounts) 2023 2022 2023 2022 Numerator Net income $ 14,682 $ 10,753 $ 29,971 $ 23,356 Denominator Weighted average common shares outstanding, basic 36,593 36,085 36,511 36,110 Options to purchase common stock 274 391 291 405 PSUs, RSUs, RSAs, and DSUs 559 386 525 382 Weighted average common shares outstanding, diluted 37,426 36,862 37,327 36,897 Net income per share Basic $ 0.40 $ 0.30 $ 0.82 $ 0.65 Diluted $ 0.39 $ 0.29 $ 0.80 $ 0.63 |
Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share | The number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows: Three Months Ended Six Months Ended (in thousands) 2023 2022 2023 2022 Anti-dilutive shares 37 242 63 211 |
Geographic Information (Tables)
Geographic Information (Tables) | 6 Months Ended |
Jun. 30, 2023 | |
Revenue from Contract with Customer [Abstract] | |
Summary of Domestic Revenue | Domestic revenue, which we define as revenue that was attributable to customers based within the U.S., was as follows: Three Months Ended Six Months Ended 2023 2022 2023 2022 Domestic revenue 84 % 84 % 84 % 84 % |
Schedule Of Percentage Of Property And Equipment Net | Property and equipment, net located at subsidiary and office locations outside of the U.S. was as follows: June 30, December 31, 2022 International property and equipment 14 % 13 % |
Business Acquisitions - Narrati
Business Acquisitions - Narrative (Details) € in Millions, $ in Millions | 3 Months Ended | |||||
Jul. 26, 2023 USD ($) | Jul. 26, 2023 EUR (€) | Oct. 04, 2022 USD ($) | Jul. 19, 2022 USD ($) | Jun. 30, 2023 USD ($) | Mar. 31, 2023 USD ($) | |
GCommerce Inc | ||||||
Business Acquisition [Line Items] | ||||||
Purchase price | $ 45.1 | |||||
Decrease in provisional amounts for consideration transferred | $ 1.6 | |||||
Decrease in estimated value of deferred income tax assets | $ 1.5 | |||||
InterTrade Systems Inc. | ||||||
Business Acquisition [Line Items] | ||||||
Purchase price | $ 49.1 | |||||
Decrease in provisional amounts for consideration transferred | $ 3.1 | |||||
Measurement period | 1 year | |||||
Decrease in estimated value of deferred income tax assets | 3.9 | |||||
Change in deferred tax position | $ 1 | |||||
TIE Kinetix | Subsequent Event | ||||||
Business Acquisition [Line Items] | ||||||
Purchase price | $ 71.4 | € 64.5 |
Revenue - Summary of Revenues b
Revenue - Summary of Revenues by Revenue Stream (Detail) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Revenue Recognition [Line Items] | ||||
Revenues | $ 130,416 | $ 109,178 | $ 256,284 | $ 214,371 |
Recurring revenues | ||||
Revenue Recognition [Line Items] | ||||
Revenues | 121,523 | 101,163 | 238,824 | 198,730 |
One-time revenues | ||||
Revenue Recognition [Line Items] | ||||
Revenues | 8,893 | 8,015 | 17,460 | 15,641 |
Fulfillment | Recurring revenues | ||||
Revenue Recognition [Line Items] | ||||
Revenues | 105,500 | 87,887 | 207,169 | 172,618 |
Analytics | Recurring revenues | ||||
Revenue Recognition [Line Items] | ||||
Revenues | 12,709 | 11,648 | 25,079 | 22,944 |
Other | Recurring revenues | ||||
Revenue Recognition [Line Items] | ||||
Revenues | $ 3,314 | $ 1,628 | $ 6,576 | $ 3,168 |
Revenue - Narrative (Detail)
Revenue - Narrative (Detail) | 6 Months Ended |
Jun. 30, 2023 | |
Disaggregation Of Revenue [Line Items] | |
Latest timing of billings | 30 days |
Contract term maximum | 1 year |
Set up fees recognized period | 2 years |
Maximum recognition period for miscellaneous one-time fee | 1 year |
Minimum | |
Disaggregation Of Revenue [Line Items] | |
Customer contract cancellation period | 30 days |
Maximum | |
Disaggregation Of Revenue [Line Items] | |
Customer contract cancellation period | 90 days |
Revenue - Summary of Deferred R
Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Detail) - Set-Up Fees - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Deferred Revenue Arrangement [Roll Forward] | ||||
Balance, beginning of period | $ 15,287 | $ 14,938 | $ 14,999 | $ 14,459 |
Invoiced set-up fees | 5,739 | 4,058 | 9,990 | 8,061 |
Recognized set-up fees | (4,048) | (3,687) | (8,011) | (7,211) |
Balance, end of period | $ 16,978 | $ 15,309 | $ 16,978 | $ 15,309 |
Deferred Costs (Detail)
Deferred Costs (Detail) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Deferred Costs [Roll Forward] | ||||
Balance, beginning of period | $ 71,809 | $ 62,610 | $ 70,179 | $ 59,720 |
Incurred deferred costs | 19,304 | 17,637 | 37,538 | 35,418 |
Amortized deferred costs | (15,858) | (15,582) | (32,462) | (30,473) |
Balance, end of period | $ 75,255 | $ 64,665 | $ 75,255 | $ 64,665 |
Fair Value Measurements - Summa
Fair Value Measurements - Summary of Cash Equivalents and Investments (Detail) - USD ($) $ in Thousands | Jun. 30, 2023 | Dec. 31, 2022 |
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | $ 212,783 | $ 124,405 |
Unrealized Gains (Losses), net | 440 | 375 |
Fair Value | 213,223 | 124,780 |
Investments: | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 6,662 | 6,813 |
Unrealized Gains (Losses), net | 0 | 0 |
Fair Value | 6,662 | 6,813 |
Cash Equivalents | Money market funds | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 152,309 | 73,368 |
Unrealized Gains (Losses), net | 0 | 0 |
Fair Value | 152,309 | 73,368 |
Marketable Securities | Commercial paper | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 43,985 | 44,224 |
Unrealized Gains (Losses), net | 305 | 375 |
Fair Value | 44,290 | 44,599 |
Marketable Securities | U.S. treasury securities | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 9,827 | 0 |
Unrealized Gains (Losses), net | 135 | 0 |
Fair Value | $ 9,962 | $ 0 |
Allowance for Credit Losses (De
Allowance for Credit Losses (Detail) - USD ($) $ in Thousands | 6 Months Ended | |
Jun. 30, 2023 | Jun. 30, 2022 | |
Accounts Receivable, Allowance for Credit Loss [Roll Forward] | ||
Balance, beginning of period | $ 3,066 | $ 4,249 |
Provision for credit losses | 2,491 | 2,634 |
Write-offs, net of recoveries | (2,457) | (2,429) |
Balance, end of period | $ 3,100 | $ 4,454 |
Property and Equipment, Net (De
Property and Equipment, Net (Details) - USD ($) $ in Thousands | Jun. 30, 2023 | Dec. 31, 2022 |
Property, Plant and Equipment [Line Items] | ||
Property and equipment, cost | $ 113,047 | $ 107,816 |
Less: accumulated depreciation and amortization | (77,836) | (72,358) |
Property and equipment, net | 35,211 | 35,458 |
Internally developed software | ||
Property, Plant and Equipment [Line Items] | ||
Property and equipment, cost | 54,846 | 49,994 |
Computer equipment | ||
Property, Plant and Equipment [Line Items] | ||
Property and equipment, cost | 32,213 | 30,310 |
Leasehold improvements | ||
Property, Plant and Equipment [Line Items] | ||
Property and equipment, cost | 15,386 | 16,531 |
Office equipment and furniture | ||
Property, Plant and Equipment [Line Items] | ||
Property and equipment, cost | $ 10,602 | $ 10,981 |
Goodwill and Intangible Asset_3
Goodwill and Intangible Assets, Net - Schedule of Changes in Net Carrying Amount of Goodwill (Detail) $ in Thousands | 6 Months Ended |
Jun. 30, 2023 USD ($) | |
Goodwill [Roll Forward] | |
Balance, beginning of period | $ 197,284 |
Foreign currency translation | 924 |
Remeasurement from provisional purchase accounting amount | 4,578 |
Balance, end of period | $ 202,786 |
Goodwill and Intangible Asset_4
Goodwill and Intangible Assets, Net - Intangible Assets (Detail) - USD ($) $ in Thousands | Jun. 30, 2023 | Dec. 31, 2022 |
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | $ 119,997 | $ 120,711 |
Accumulated Amortization | (38,973) | (32,189) |
Foreign Currency Translation | (3,391) | (170) |
Net | $ 77,633 | $ 88,352 |
Weighted Average Remaining Amortization Period | 6 years | 6 years 4 months 24 days |
Subscriber relationships | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | $ 79,385 | $ 80,101 |
Accumulated Amortization | (26,376) | (22,255) |
Foreign Currency Translation | (3,068) | (171) |
Net | $ 49,941 | $ 57,675 |
Weighted Average Remaining Amortization Period | 6 years 4 months 24 days | 6 years 9 months 18 days |
Acquired technology | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | $ 40,612 | $ 40,610 |
Accumulated Amortization | (12,597) | (9,934) |
Foreign Currency Translation | (323) | 1 |
Net | $ 27,692 | $ 30,677 |
Weighted Average Remaining Amortization Period | 5 years 2 months 12 days | 5 years 8 months 12 days |
Goodwill and Intangible Asset_5
Goodwill and Intangible Assets, Net - Estimated Future Annual Amortization Expense Related to Intangible Assets Subject to Amortization (Detail) - USD ($) $ in Thousands | Jun. 30, 2023 | Dec. 31, 2022 |
Goodwill and Intangible Assets Disclosure [Abstract] | ||
Remainder of 2023 | $ 7,401 | |
2024 | 13,665 | |
2025 | 13,527 | |
2026 | 12,523 | |
2027 | 12,060 | |
Thereafter | 18,457 | |
Net | $ 77,633 | $ 88,352 |
Commitments and Contingencies -
Commitments and Contingencies - Components of Lease Expense (Detail) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Commitments and Contingencies Disclosure [Abstract] | ||||
Operating lease cost | $ 779 | $ 740 | $ 1,578 | $ 1,499 |
Variable lease cost | 950 | 856 | 1,878 | 1,649 |
Lease expense | $ 1,729 | $ 1,596 | $ 3,456 | $ 3,148 |
Commitments and Contingencies_2
Commitments and Contingencies - Schedule of Supplemental Cash Flow Information Related to Leases (Detail) - USD ($) $ in Thousands | 6 Months Ended | |
Jun. 30, 2023 | Jun. 30, 2022 | |
Cash paid for amounts included in the measurement of lease liabilities | ||
Operating cash flows from operating leases | $ 1,329 | $ 2,176 |
Right-of-use assets obtained in exchange for operating lease liabilities | $ 268 | $ 0 |
Commitments and Contingencies_3
Commitments and Contingencies - Schedule of Supplemental Balance Sheet Information Related to Leases (Detail) | Jun. 30, 2023 | Dec. 31, 2022 |
Commitments and Contingencies Disclosure [Abstract] | ||
Weighted-average remaining lease term | 3 years 6 months | 3 years 10 months 24 days |
Weighted-average discount rate | 4% | 4% |
Commitments and Contingencies_4
Commitments and Contingencies - Schedule of Future Minimum Payments Under Operating Leases (Detail) $ in Thousands | Jun. 30, 2023 USD ($) |
Commitments and Contingencies Disclosure [Abstract] | |
Remainder of 2023 | $ 2,563 |
2024 | 4,567 |
2025 | 4,116 |
2026 | 3,766 |
2027 | 1,282 |
Total future gross payments | 16,294 |
Less: imputed interest | (1,163) |
Total operating lease liabilities | $ 15,131 |
Commitments and Contingencies_5
Commitments and Contingencies - Schedule of Remaining Purchase Commitments (Details) $ in Thousands | Jun. 30, 2023 USD ($) |
Commitments and Contingencies Disclosure [Abstract] | |
Remainder of 2023 | $ 5,863 |
2024 | 11,527 |
2025 | 11,178 |
2026 | 4,510 |
Total estimated future purchases | $ 33,078 |
Stockholders' Equity - Share Re
Stockholders' Equity - Share Repurchase Plan (Details) - USD ($) $ in Thousands | 6 Months Ended | |
Jun. 30, 2023 | Dec. 31, 2022 | |
Schedule Of Stockholders Equity [Line Items] | ||
Share Value Repurchased | $ 128,892 | $ 128,892 |
Common Stock | 2021 Share Repurchase Program | ||
Schedule Of Stockholders Equity [Line Items] | ||
Share Value Authorized for Repurchase | 50,000 | |
Share Value Repurchased | 49,992 | |
Unused & Expired Share Repurchase Value | 8 | |
Common Stock | 2022 Stock Repurchase Program | ||
Schedule Of Stockholders Equity [Line Items] | ||
Share Value Authorized for Repurchase | 50,000 | |
Share Value Repurchased | 2,992 | |
Share Value Available for Future Repurchase | $ 47,008 |
Stockholders' Equity - Stock Re
Stockholders' Equity - Stock Repurchase Activity (Details) - USD ($) $ / shares in Units, $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Equity [Abstract] | ||||
Number of shares repurchased (in shares) | 0 | 133,652 | 0 | 255,196 |
Shares repurchased cost | $ 0 | $ 14,997 | $ 0 | $ 30,223 |
Average price per repurchased share (in dollars per share) | $ 0 | $ 112.21 | $ 0 | $ 118.43 |
Stock-Based Compensation - Narr
Stock-Based Compensation - Narrative (Detail) - USD ($) $ / shares in Units, $ in Millions | 3 Months Ended | 6 Months Ended | |||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2021 | Jun. 30, 2020 | Jun. 30, 2023 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Shares available for grant (in shares) | 12,800,000 | 12,800,000 | |||
Unrecognized stock-based compensation expense | $ 53.8 | $ 53.8 | |||
Unrecognized stock-based compensation, expected to be recognized, weighted average period | 2 years 6 months | ||||
Employee Stock Purchase Plan | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Common stock reserved for future issuance (in shares) | 1,700,000 | 1,700,000 | |||
Stock options | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Outstanding and exercisable options (in shares) | 400,000 | 400,000 | |||
Weighted average exercise price (in dollars per share) | $ 58.49 | $ 58.49 | |||
Weighted average remaining contractual life | 3 years 1 month 6 days | ||||
Weighted average fair value per share of options granted (in dollars per share) | $ 56.23 | ||||
Performance Share Unit | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Vesting period | 3 years | 3 years | 3 years | 3 years | |
Performance Share Unit | Maximum | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Shares issued (in shares) | 100,000 | ||||
PSU, RSU, RSA, and DSU | Maximum | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Vested at period end (in shares) | 100,000 | 100,000 |
Stock-Based Compensation - Stoc
Stock-Based Compensation - Stock-Based Compensation Expense (Detail) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | $ 12,881 | $ 8,661 | $ 24,661 | $ 17,676 |
Stock options | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 494 | 463 | 985 | 940 |
PSUs | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 3,499 | 2,004 | 7,424 | 4,703 |
RSUs | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 7,381 | 5,094 | 13,443 | 9,732 |
RSAs & DSUs | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 115 | 110 | 223 | 218 |
ESPP | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 748 | 458 | 1,337 | 1,032 |
401(k) stock match | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 644 | 532 | 1,249 | 1,051 |
Cost of revenues | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 2,586 | 2,152 | 5,089 | 4,331 |
Sales and marketing | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 2,528 | 1,958 | 4,951 | 3,990 |
Research and development | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | 1,812 | 1,380 | 3,589 | 2,854 |
General and administrative | ||||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||||
Stock-based compensation expense | $ 5,955 | $ 3,171 | $ 11,032 | $ 6,501 |
Stock-Based Compensation - St_2
Stock-Based Compensation - Stock Option Activity (Detail) | 6 Months Ended |
Jun. 30, 2023 $ / shares shares | |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward] | |
Outstanding, beginning of period (in shares) | shares | 562,697 |
Granted (in shares) | shares | 39,483 |
Exercised (in shares) | shares | (143,550) |
Forfeited (in shares) | shares | (1,916) |
Outstanding, end of period (in shares) | shares | 456,714 |
Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract] | |
Outstanding, beginning of period (in dollars per share) | $ / shares | $ 56.24 |
Granted (in dollars per share) | $ / shares | 151.89 |
Exercised (in dollars per share) | $ / shares | 33.57 |
Forfeited (in dollars per share) | $ / shares | 123.49 |
Outstanding, end of period (in dollars per share) | $ / shares | $ 71.36 |
Stock-Based Compensation - Weig
Stock-Based Compensation - Weighted Average Grant Date Fair Value of Options Granted, Assumptions (Detail) - Stock options | 6 Months Ended |
Jun. 30, 2023 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Life (in years) | 4 years 2 months 12 days |
Volatility | 39.30% |
Dividend yield | 0% |
Risk-free interest rate | 4% |
Stock-Based Compensation - PSU,
Stock-Based Compensation - PSU, RSU, RSA, and DSU (Detail) - PSU, RSU, RSA, and DSU | 6 Months Ended |
Jun. 30, 2023 $ / shares shares | |
# | |
Outstanding, beginning of period (in shares) | shares | 712,158 |
Granted (in shares) | shares | 311,488 |
Vested and common stock issued (in shares) | shares | (305,853) |
Forfeited (in shares) | shares | (4,613) |
Outstanding, end of period (in shares) | shares | 713,180 |
Weighted Average Grant Date Fair Value ($/share) | |
Outstanding, beginning of period (in dollars per share) | $ / shares | $ 103.93 |
Granted (in dollars per share) | $ / shares | 162.86 |
Vested and common stock issued (in dollars per share) | $ / shares | 74.89 |
Forfeited (in dollars per share) | $ / shares | 115.39 |
Outstanding, end of period (in dollars per share) | $ / shares | $ 142.04 |
Stock-Based Compensation - Summ
Stock-Based Compensation - Summary of ESPP Activity (Detail) - Employee Stock Purchase Plan - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | ||||
Amounts for shares purchased | $ 3,895 | $ 3,203 | $ 4,136 | $ 3,350 |
Shares purchased (in shares) | 35,676 | 33,337 | 38,225 | 35,035 |
Stock-Based Compensation - Fair
Stock-Based Compensation - Fair Value Estimation of Common Stock Using Black-Scholes Option Pricing Model, Assumptions (Detail) - Employee Stock Purchase Plan | 6 Months Ended |
Jun. 30, 2023 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Life (in years) | 6 months |
Volatility | 40.10% |
Dividend yield | 0% |
Risk-free interest rate | 4.60% |
Other Income and Expense (Detai
Other Income and Expense (Detail) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Other Income and Expenses [Abstract] | ||||
Investment income | $ 1,611 | $ 172 | $ 2,737 | $ 220 |
Realized gain (loss) from foreign currency on cash and investments held | 290 | (1,327) | 427 | (859) |
Other expense, net | (19) | (183) | (7) | (276) |
Total other income (expense), net | $ 1,882 | $ (1,338) | $ 3,157 | $ (915) |
Net Income Per Share - Componen
Net Income Per Share - Components and Computation of Basic and Diluted Net Income Per Share (Detail) - USD ($) $ / shares in Units, shares in Thousands, $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Numerator | ||||
Net income | $ 14,682 | $ 10,753 | $ 29,971 | $ 23,356 |
Denominator | ||||
Weighted average common shares outstanding, basic (in shares) | 36,593 | 36,085 | 36,511 | 36,110 |
Options to purchase common stock (in shares) | 274 | 391 | 291 | 405 |
PSUs, RSUs, RSAs, and DSUs (in shares) | 559 | 386 | 525 | 382 |
Weighted average common shares outstanding, diluted (in shares) | 37,426 | 36,862 | 37,327 | 36,897 |
Net income per share | ||||
Basic (in dollars per share) | $ 0.40 | $ 0.30 | $ 0.82 | $ 0.65 |
Diluted (in dollars per share) | $ 0.39 | $ 0.29 | $ 0.80 | $ 0.63 |
Net Income Per Share - Schedule
Net Income Per Share - Schedule of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Detail) - shares shares in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | |
Earnings Per Share [Abstract] | ||||
Anti-dilutive shares (in shares) | 37 | 242 | 63 | 211 |
Geographic Information - Summar
Geographic Information - Summary of Domestic Revenue (Detail) - Revenue Benchmark - Geographic Concentration Risk | 3 Months Ended | 6 Months Ended | 12 Months Ended | ||
Jun. 30, 2023 | Jun. 30, 2022 | Jun. 30, 2023 | Jun. 30, 2022 | Dec. 31, 2022 | |
Domestic Revenue | |||||
Disaggregation Of Revenue [Line Items] | |||||
Concentration risk, percentage | 84% | 84% | 84% | 84% | |
Foreign | |||||
Disaggregation Of Revenue [Line Items] | |||||
Concentration risk, percentage | 14% | 13% |