Document and Entity Information
Document and Entity Information - shares | 3 Months Ended | |
Mar. 31, 2020 | Apr. 24, 2020 | |
Cover [Abstract] | ||
Document Type | 10-Q | |
Amendment Flag | false | |
Document Period End Date | Mar. 31, 2020 | |
Document Fiscal Year Focus | 2020 | |
Document Fiscal Period Focus | Q1 | |
Trading Symbol | SPSC | |
Entity Registrant Name | SPS COMMERCE, INC. | |
Entity Central Index Key | 0001092699 | |
Current Fiscal Year End Date | --12-31 | |
Entity Filer Category | Large Accelerated Filer | |
Entity Small Business | false | |
Entity Emerging Growth Company | false | |
Entity Common Stock, Shares Outstanding | 34,927,767 | |
Entity Current Reporting Status | Yes | |
Entity Interactive Data Current | Yes | |
Entity Shell Company | false | |
Entity File Number | 001-34702 | |
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 | |
Security Exchange Name | NASDAQ | |
Document Quarterly Report | true | |
Document Transition Report | false |
Condensed Consolidated Balance
Condensed Consolidated Balance Sheets (Unaudited) - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
CURRENT ASSETS | ||
Cash and cash equivalents | $ 184,484 | $ 179,252 |
Short-term investments | 30,074 | 34,284 |
Accounts receivable | 33,275 | 33,001 |
Allowance for credit losses | (2,939) | (1,469) |
Accounts receivable, net | 30,336 | 31,532 |
Deferred costs | 35,543 | 35,274 |
Other assets | 9,417 | 11,279 |
Total current assets | 289,854 | 291,621 |
PROPERTY AND EQUIPMENT, less accumulated depreciation of $53,458 and $50,574, respectively | 24,035 | 23,752 |
OPERATING LEASE RIGHT-OF-USE ASSETS | 15,170 | 15,744 |
GOODWILL | 74,463 | 76,845 |
INTANGIBLE ASSETS, net | 20,857 | 22,668 |
OTHER ASSETS | ||
Deferred costs, non-current | 11,393 | 11,667 |
Deferred income tax assets | 1,837 | 2,630 |
Other assets, non-current | 2,210 | 2,513 |
Total assets | 439,819 | 447,440 |
CURRENT LIABILITIES | ||
Accounts payable | 4,602 | 4,274 |
Accrued compensation | 13,132 | 22,303 |
Accrued expenses | 5,374 | 6,207 |
Deferred revenue | 34,929 | 31,463 |
Operating lease liabilities | 3,866 | 3,783 |
Total current liabilities | 61,903 | 68,030 |
OTHER LIABILITIES | ||
Deferred revenue, non-current | 2,781 | 2,851 |
Operating lease liabilities, non-current | 18,957 | 20,085 |
Deferred income tax liabilities | 990 | 1,193 |
Other liabilities, non-current | 405 | |
Total liabilities | 84,631 | 92,564 |
COMMITMENTS and CONTINGENCIES | ||
STOCKHOLDERS’ EQUITY | ||
Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding | ||
Common stock, $0.001 par value; 55,000,000 shares authorized; 36,474,448 and 36,104,619 shares issued; and 34,992,825 and 34,863,271 outstanding, respectively | 36 | 36 |
Treasury stock, at cost; 1,481,623 and 1,241,348 shares, respectively | (58,297) | (46,297) |
Additional paid-in capital | 361,853 | 354,115 |
Retained earnings | 57,419 | 48,973 |
Accumulated other comprehensive loss | (5,823) | (1,951) |
Total stockholders’ equity | 355,188 | 354,876 |
Total liabilities and stockholders’ equity | $ 439,819 | $ 447,440 |
Condensed Consolidated Balanc_2
Condensed Consolidated Balance Sheets (Unaudited) (Parenthetical) - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
Statement Of Financial Position [Abstract] | ||
Accumulated depreciation | $ 53,458 | $ 50,574 |
Preferred stock, par value | $ 0.001 | $ 0.001 |
Preferred stock, shares authorized | 5,000,000 | 5,000,000 |
Preferred stock, shares issued | 0 | 0 |
Preferred stock, shares outstanding | 0 | 0 |
Common stock, par value | $ 0.001 | $ 0.001 |
Common stock, shares authorized | 55,000,000 | 55,000,000 |
Common stock, shares issued | 36,474,448 | 36,104,619 |
Common stock, shares outstanding | 34,992,825 | 34,863,271 |
Treasury stock, shares | 1,481,623 | 1,241,348 |
Condensed Consolidated Statemen
Condensed Consolidated Statements of Comprehensive Income (Unaudited) - USD ($) shares in Thousands, $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Income Statement [Abstract] | ||
Revenues | $ 74,192 | $ 66,934 |
Cost of revenues | 23,544 | 21,367 |
Gross profit | 50,648 | 45,567 |
Operating expenses | ||
Sales and marketing | 18,299 | 17,922 |
Research and development | 7,568 | 6,192 |
General and administrative | 11,909 | 12,770 |
Amortization of intangible assets | 1,336 | 1,304 |
Total operating expenses | 39,112 | 38,188 |
Income from operations | 11,536 | 7,379 |
Other income (expense) | ||
Interest income, net | 640 | 577 |
Other expense, net | (1,241) | (47) |
Change in earn-out liability | (72) | (56) |
Total other income (expense), net | (673) | 474 |
Income before income taxes | 10,863 | 7,853 |
Income tax expense | 1,348 | 1,040 |
Net income | 9,515 | 6,813 |
Other comprehensive income (expense) | ||
Foreign currency translation adjustments | (3,864) | 740 |
Unrealized gain on investments, net of tax of $24 and $30 | 71 | 90 |
Reclassification of gain on investments into earnings, net of tax of ($26) and ($31) | (79) | (93) |
Total other comprehensive income (expense) | (3,872) | 737 |
Comprehensive income | $ 5,643 | $ 7,550 |
Net income per share | ||
Basic | $ 0.27 | $ 0.19 |
Diluted | $ 0.26 | $ 0.19 |
Weighted average common shares used to compute net income per share | ||
Basic | 35,072 | 34,942 |
Diluted | 35,926 | 35,984 |
Condensed Consolidated Statem_2
Condensed Consolidated Statements of Comprehensive Income (Unaudited) (Parenthetical) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020USD ($) | Mar. 31, 2019USD ($) | |
Income Statement [Abstract] | ||
Unrealized gain on investments, tax | $ 24 | $ 30 |
Reclassification of gain on investments into earnings, tax | $ (26) | $ (31) |
Condensed Consolidated Statem_3
Condensed Consolidated Statements of Stockholders' Equity - USD ($) $ in Thousands | Total | Common Stock [Member] | Treasury Stock [Member] | Additional Paid-in Capital [Member] | Retained Earnings [Member] | Accumulated Other Comprehensive Loss [Member] |
Beginning balance at Dec. 31, 2018 | $ 318,974 | $ 36 | $ (25,679) | $ 332,574 | $ 15,261 | $ (3,218) |
Beginning balance, shares at Dec. 31, 2018 | 34,691,472 | 823,784 | ||||
Stock-based compensation | 4,966 | 4,966 | ||||
Exercise of stock options and issuance of restricted stock | 2,472 | 2,472 | ||||
Exercise of stock options and issuance of restricted stock, shares | 316,878 | |||||
Repurchases of common stock | (2,966) | $ (2,966) | ||||
Repurchases of common stock, shares | (67,464) | 67,464 | ||||
Settlement and subsequent return of shares | (300) | (300) | ||||
Settlement and subsequent return of shares, shares | (5,522) | |||||
Net income | 6,813 | 6,813 | ||||
Foreign currency translation adjustments | 740 | 740 | ||||
Unrealized gain (loss) on investments, net of tax | (93) | (93) | ||||
Reclassification of (gain) loss on investments into earnings | 90 | 90 | ||||
Adoption of ASU | ASU 2018-02 | 8 | 8 | ||||
Ending balance at Mar. 31, 2019 | 330,704 | $ 36 | $ (28,645) | 339,712 | 22,074 | (2,473) |
Ending balance, shares at Mar. 31, 2019 | 34,935,364 | 891,248 | ||||
Beginning balance at Dec. 31, 2019 | 354,876 | $ 36 | $ (46,297) | 354,115 | 48,973 | (1,951) |
Beginning balance, shares at Dec. 31, 2019 | 34,863,271 | 1,241,348 | ||||
Stock-based compensation | 3,968 | 3,968 | ||||
Exercise of stock options and issuance of restricted stock | 3,683 | 3,683 | ||||
Exercise of stock options and issuance of restricted stock, shares | 367,814 | |||||
Employee stock purchase plan | 87 | 87 | ||||
Employee stock purchase plan, shares | 2,015 | |||||
Repurchases of common stock | (12,000) | $ (12,000) | ||||
Repurchases of common stock, shares | (240,275) | 240,275 | ||||
Net income | 9,515 | 9,515 | ||||
Foreign currency translation adjustments | (3,864) | (3,864) | ||||
Unrealized gain (loss) on investments, net of tax | 71 | 71 | ||||
Reclassification of (gain) loss on investments into earnings | (79) | (79) | ||||
Adoption of ASU | ASU 2016-13 | (1,069) | (1,069) | ||||
Ending balance at Mar. 31, 2020 | $ 355,188 | $ 36 | $ (58,297) | $ 361,853 | $ 57,419 | $ (5,823) |
Ending balance, shares at Mar. 31, 2020 | 34,992,825 | 1,481,623 |
Condensed Consolidated Statem_4
Condensed Consolidated Statements of Stockholders' Equity (Parenthetical) | Aug. 22, 2019 | Aug. 08, 2019 |
Statement Of Stockholders Equity [Abstract] | ||
Stock split ratio | 2 | 2 |
Condensed Consolidated Statem_5
Condensed Consolidated Statements of Cash Flows (Unaudited) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Cash flows from operating activities | ||
Net income | $ 9,515 | $ 6,813 |
Reconciliation of net income to net cash provided by operating activities | ||
Deferred income taxes | 668 | 838 |
Change in earn-out liability | 72 | 56 |
Depreciation and amortization of property and equipment | 3,138 | 2,637 |
Amortization of intangible assets | 1,336 | 1,304 |
Provision for credit losses | 1,285 | 655 |
Stock-based compensation | 4,344 | 5,294 |
Other, net | (105) | (240) |
Changes in assets and liabilities | ||
Accounts receivable | (1,053) | (1,328) |
Deferred costs | (256) | (414) |
Other current and non-current assets | 2,041 | (337) |
Accounts payable | 655 | 353 |
Accrued compensation | (9,302) | (8,843) |
Accrued expenses | (615) | 60 |
Deferred revenue | 3,396 | 3,698 |
Operating leases | (452) | (345) |
Net cash provided by operating activities | 14,667 | 10,201 |
Cash flows from investing activities | ||
Purchases of property and equipment | (3,965) | (2,899) |
Purchases of investments | (12,460) | (12,447) |
Maturities of investments | 15,875 | 15,225 |
Net cash used in investing activities | (550) | (121) |
Cash flows from financing activities | ||
Repurchases of common stock | (12,000) | (2,966) |
Net proceeds from exercise of options to purchase common stock | 3,683 | 2,472 |
Net proceeds from employee stock purchase plan | 87 | |
Payment for earn-out liability | (688) | |
Net cash used in financing activities | (8,918) | (494) |
Effect of foreign currency exchange rate changes | 33 | 270 |
Net increase in cash and cash equivalents | 5,232 | 9,856 |
Cash and cash equivalents at beginning of period | 179,252 | 133,859 |
Cash and cash equivalents at end of period | $ 184,484 | $ 143,715 |
General
General | 3 Months Ended |
Mar. 31, 2020 | |
Organization Consolidation And Presentation Of Financial Statements [Abstract] | |
General | NOTE A – General Business Description SPS Commerce is a leading provider of cloud-based supply chain management solutions that retailers, suppliers, grocers, distributors and logistics firms to orchestrate the For many businesses, implementing and maintaining a suite of supply chain management capabilities is resource-intensive and not a core competency. The solutions offered by SPS Commerce eliminate the need for on-premise software and support staff by taking on that capability on the customer’s behalf. These solutions also enable our customers to increase their supply cycle agility, optimize their inventory levels and sell-through, reduce operational costs and gain increased visibility into customer orders, helping ensure that suppliers, grocers, distributors, and logistics firms can satisfy retailer requirements. Basis of Presentation The accompanying unaudited condensed consolidated financial statements include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the condensed consolidated financial statements, which Effective January 1, 2020, we adopted Accounting Standards Update (“ASU”) No. 2016-13, Financial Instruments – Credit Losses On July 25, 2019, the Company announced that its board of directors declared a two-for-one stock split of the Company’s common stock, effected in the form of a 100 percent stock dividend as of the record date on August 8, 2019. The stock split dividend was distributed on August 22, 2019. Earnings per share and weighted average shares outstanding are presented in this Quarterly Report on Form 10-Q after the effect of the 100 percent stock dividend. The two-for-one stock split is reflected in the share amounts in all periods presented in this Quarterly Report on Form 10-Q. Use of Estimates Preparing financial statements in conformity with GAAP requires management to make estimates 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. Recently Adopted Accounting Pronouncements Standard Date of Issuance Description Date Adopted Effect on the Financial Statements ASU 2016-13 , Financial Instruments - Credit Losses (Topic 326), Measurement of Credit Losses on Financial Statements June 2016 The amendment replaces the incurred loss impairment methodology in current GAAP with a methodology that reflects expected credit losses on instruments within its scope, including trade receivables. This is intended to provide financial statement users with more decision-useful information about the expected credit losses. January 2020 The adoption of this standard did not have a material impact on our condensed consolidated financial statements. See above under “Basis for Presentation” for significant inputs for the allowance for credit losses. ASU 2018-13 , Fair Value Measurement (Topic 820), Disclosure Framework - Changes to the Disclosure Requirements for Fair Value Measurement August 2018 This amendment adds, modifies and removes several disclosure requirements relative to the three levels of inputs used to measure fair value in accordance with Topic 820, Fair Value Measurement. January 2020 The adoption of this standard did not have a material impact on our condensed consolidated financial statements. ASU 2017-04 , Intangibles - Goodwill and Other (Topic 350), Simplifying the Test for Goodwill Impairment January 2017 This amendment eliminates Step 2 from the goodwill impairment test. January 2020 The adoption of this standard did not have a material impact on our condensed consolidated financial statements. Significant Accounting Policies There were no material changes in our significant accounting policies during the three months ended March 31, 2020. See Note A to the consolidated financial statements included in our Annual Report on Form 10-K for the year ended December 31, 2019, as filed with the SEC, for additional information regarding our significant accounting policies. |
Revenue
Revenue | 3 Months Ended |
Mar. 31, 2020 | |
Revenue From Contract With Customer [Abstract] | |
Revenue | NOTE B – Revenue We derive our revenues from the following revenue streams: Three Months Ended March 31, (In thousands) 2020 2019 Recurring revenues: Fulfillment $ 59,103 $ 52,445 Analytics 9,736 8,873 Other 1,199 1,428 Recurring Revenues 70,038 62,746 One-time revenues 4,154 4,188 $ 74,192 $ 66,934 Revenues are recognized when our services are made available to our customers, in an amount that reflects the consideration we are contractually and legally entitled to in exchange for those services. We determine revenue recognition through the following steps: - Identification of the contract, or contracts, with a customer - Identification of the performance obligations in the contract - Determination of the transaction price - Allocation of the transaction price to the performance obligations in the contract - Recognition of revenue when, or as, we satisfy a performance obligation Recurring Revenues Recurring revenues consists of recurring subscriptions from customers that utilize our Fulfillment, Analytics, and Other cloud-based supply chain management solutions. Revenue for these solutions 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, 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 are either in advance or within 30 days of the service being performed. The deferred revenue liability for recurring revenue contracts are for one year or less and recognized on a ratable basis over the contract term. We have applied the optional exemption to not disclose information about the remaining performance obligations for contracts which have original durations of one year or less. One-time Revenues One-time revenues consist of set-up fees from customers and miscellaneous one-time fees. Set-up fees are specific for each connection a customer has with a trading partner and many of our customers have connections with numerous trading partners. Set-up fees related to our cloud-based supply chain management solutions are nonrefundable upfront fees that are necessary for our customers to utilize our cloud-based services. These set-up fees do not provide any standalone value to our customers. Certain contracts contain set-up fees that constitute a material renewal option right. This material right provides customers a significant future incentive that would not otherwise be available to them unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. For our Fulfillment solution, we have determined that the set-up fees and related costs represent a material renewal option right to our customers as they will not be incurred again upon renewal. These set-up fees and related costs are deferred and recognized ratably over two years For our Analytics solution, we have determined that the set-up fees do not represent a material customer renewal right and, as such, are deferred and recognized ratably over the estimated initial contract term, which is generally one year The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 10,518 $ 9,857 Invoiced set-up fees 2,719 2,537 Amortized set-up fees (2,665 ) (2,581 ) Balance, end of period $ 10,572 $ 9,813 The entire balance of set-up fees will be recognized within two years and, as such, current amounts will be recognized in the next 1-12 months and long-term amounts will be recognized in the next 13-24 months. Miscellaneous one-time fees consist of professional services and testing and certification. The deferred revenue liability for these one-time fees are 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 contracts which have original durations of one year or less. |
Deferred Costs
Deferred Costs | 3 Months Ended |
Mar. 31, 2020 | |
Deferred Costs [Abstract] | |
Deferred Costs | NOTE C – Deferred Costs Deferred costs consist of costs to obtain customer contracts, such as commissions paid to sales personnel and to third-party partners for customer referrals, and costs to fulfill customer contracts, such as customer implementation costs. Costs to obtain customer contracts relating to recurring revenues are considered incremental and recoverable costs of obtaining a contract with our customer. These costs are deferred and amortized over the expected period of benefit which we have determined to be two years Costs to fulfill customer contracts are considered incremental and recoverable costs of obtaining a contract with our customer. These costs are deferred and amortized over the expected period of benefit which we have determined to be two years The table below presents the activity of deferred costs and amortization of deferred costs: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 46,941 $ 45,475 Incurred deferred costs 12,721 12,332 Amortized deferred costs (12,726 ) (11,916 ) Balance, end of period $ 46,936 $ 45,891 |
Financial Instruments
Financial Instruments | 3 Months Ended |
Mar. 31, 2020 | |
Disclosure Text Block Supplement [Abstract] | |
Financial Instruments | NOTE D – Financial Instruments We invest primarily in money market funds, certificates of deposit, highly liquid debt instruments of the U.S. government and U.S. corporate debt securities. All investments with remaining maturities of less than one year from the balance sheet date are classified as short-term investments. Investments with remaining maturities of more than one year from the balance sheet date are classified as long-term investments. As of March 31, 2020 and December 31, 2019, all of our investments held were classified as short-term. Our short-term marketable securities are classified as available-for-sale. We intend to hold marketable securities until maturity; however, we may sell these securities at any time for use in current operations or for other purposes. Our marketable securities are carried at fair value and unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive loss in the condensed consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the condensed consolidated statements of comprehensive income. When a determination has been made that the fair value of a marketable security is below its amortized cost basis, the portion of the unrealized loss that corresponds to a credit-related factor is realized through a credit allowance on the marketable security and the equivalent expense is realized in other income (expense), net in the condensed consolidated statements of comprehensive income. Cash equivalents and short-term investments consisted of the following: March 31, 2020 Amortized Unrealized Fair (In thousands) Cost Gains, net Value Cash equivalents: Money market funds $ 157,333 $ — $ 157,333 Certificates of deposit 6,140 — 6,140 Marketable securities: Corporate bonds 11,405 24 11,429 Commercial paper 7,496 10 7,506 U.S. treasury securities 4,932 67 4,999 $ 187,306 $ 101 $ 187,407 December 31, 2019 Amortized Unrealized Fair (In thousands) Cost Gains, net Value Cash equivalents: Money market funds $ 151,266 $ — $ 151,266 Certificates of deposit 7,030 — 7,030 Marketable securities: Corporate bonds 9,785 20 9,805 Commercial paper 7,503 — 7,503 U.S. treasury securities 9,855 91 9,946 $ 185,439 $ 111 $ 185,550 Recurring Fair Value Measurements We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that may be used to measure fair value are: • Level 1 – quoted prices in active markets for identical assets or liabilities. • Level 2 – observable inputs other than Level 1 prices, such as: (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities. • Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities. We obtain the fair values of our level 2 available-for-sale securities from a professional pricing service. For the earn-out liability related to the EDIAdmin acquisition, the Company utilized the Monte Carlo simulation method to estimate the fair value of this contingent liability as of the balance sheet date. Thousands of iterations of the simulation were performed using forecasted revenues to develop a distribution of future values of recurring revenue which, in turn, provided indicated earn-out payments. The total estimated fair value equals the sum of the average present values of the indicated earn-out payments. Changes in the assumptions used in the simulations described above could have an impact on the payout of contingent consideration. The following table presents information about our financial assets and liabilities that are measured at fair value on a recurring basis and indicates the fair value hierarchy of the valuation techniques utilized to determine such fair value: March 31, 2020 (In thousands) Level 1 Level 2 Level 3 Total Assets: Cash equivalents: Money market funds $ 157,333 $ — $ — $ 157,333 Certificates of deposit 6,140 — — 6,140 Marketable securities: Corporate bonds — 11,429 — 11,429 Commercial paper — 7,506 — 7,506 U.S. treasury securities — 4,999 — 4,999 $ 163,473 $ 23,934 $ — $ 187,407 Liabilities: Earn-out liability $ — $ — $ 307 $ 307 $ — $ — $ 307 $ 307 December 31, 2019 (In thousands) Level 1 Level 2 Level 3 Total Assets: Cash equivalents: Money market funds $ 151,266 $ — $ — $ 151,266 Certificates of deposit 7,030 — — 7,030 Marketable securities: Corporate bonds — 9,805 — 9,805 Commercial paper — 7,503 — 7,503 U.S. treasury securities — 9,946 — 9,946 $ 158,296 $ 27,254 $ — $ 185,550 Liabilities: Earn-out liability $ — $ — $ 405 $ 405 $ — $ — $ 405 $ 405 During the three months ended March 31, 2020, we recognized expense of $0.1 million in our condensed consolidated statements of comprehensive income due to the remeasurement of the contingent liability and, additionally, we transferred $0.2 million out of Level 3. The remaining earn-out liability is expected to be paid in the first quarter of 2021 and has been measured as Level 3 given the unobservable inputs that are significant to the measurement of the liability. The earn-out has a maximum potential payout of $1.7 million, of which $0.7 million was paid during the three months ended March 31, 2020. There were no other transfers in or out of our Level 1, 2, or 3 assets or liabilities during the three months ended March 31, 2020 and 2019. Nonrecurring Fair Value Measurements The Company measures certain assets and liabilities at fair value on a nonrecurring basis. Assets that are measured at fair value on a nonrecurring basis include long-lived assets, goodwill and indefinite-lived intangible assets, which would generally be recorded at fair value as a result of an impairment charge. Assets acquired and liabilities assumed as part of business combinations are measured at fair value. Other Fair Value Disclosures The carrying values of the Company's short-term financial instruments, including cash and cash equivalents, accounts receivable, and accounts payable, when applicable, approximate their respective fair values due to their short-term nature. |
Allowance for Credit Losses
Allowance for Credit Losses | 3 Months Ended |
Mar. 31, 2020 | |
Receivables [Abstract] | |
Allowance for Credit Losses | NOTE E – Allowance for Credit Losses The allowance for credit losses activity, included in accounts receivable, net, was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 1,469 $ 1,392 Adoption of ASU 2016-13 1,069 — Provision for credit losses 1,285 655 Write-offs, net of recoveries (884 ) (569 ) Balance, end of period $ 2,939 $ 1,478 |
Goodwill and Intangible Assets,
Goodwill and Intangible Assets, net | 3 Months Ended |
Mar. 31, 2020 | |
Goodwill And Intangible Assets Disclosure [Abstract] | |
Goodwill and Intangible Assets, net | NOTE F – Goodwill and Intangible Assets, net The changes in the net carrying amount of goodwill was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 76,845 $ 69,658 Foreign currency translation adjustments (2,382 ) 417 Balance, end of period $ 74,463 $ 70,075 Intangible assets subject to amortization are amortized over their respective useful lives (ranging from three to ten years). Intangible assets, net included the following: March 31, 2020 Gross Foreign Carrying Accumulated Currency (In thousands) Amount Amortization Translation Net Subscriber relationships $ 36,847 $ (21,383 ) $ (468 ) $ 14,996 Non-competition agreements 698 (597 ) (9 ) 92 Acquired technology 7,795 (2,026 ) — 5,769 $ 45,340 $ (24,006 ) $ (477 ) $ 20,857 December 31, 2019 Gross Foreign Carrying Accumulated Currency (In thousands) Amount Amortization Translation Net Subscriber relationships $ 43,640 $ (27,287 ) $ 214 $ 16,567 Non-competition agreements 2,495 (2,371 ) 10 134 Acquired technology 8,602 (2,643 ) 8 5,967 $ 54,737 $ (32,301 ) $ 232 $ 22,668 The estimated annual amortization expense related to intangible assets subject to amortization for the next five years is as follows: (In thousands) Remainder of 2020 $ 3,914 2021 4,395 2022 3,291 2023 3,227 2024 2,100 Thereafter 3,930 $ 20,857 |
Other Assets
Other Assets | 3 Months Ended |
Mar. 31, 2020 | |
Other Assets [Abstract] | |
Other Assets | NOTE G – Other Assets The changes in the net amount of capitalized implementation costs for software hosting arrangements is as follows: Three Months Ended March 31, (in thousands) 2020 2019 Balance, beginning of period $ 1,166 $ 455 Capitalized implementation fees 51 255 Amortization of implementation fees (29 ) (10 ) Balance, end of period $ 1,188 $ 700 There were no impairment losses in relation to the capitalized implementation costs for the three months ended March 31, 2020 and 2019. |
Leases
Leases | 3 Months Ended |
Mar. 31, 2020 | |
Leases [Abstract] | |
Leases | NOTE H – Leases We are obligated under non-cancellable operating leases, primarily for office space and certain equipment, as follows: March 31, 2020 December 31, 2019 (In thousands, except remaining term) Remaining Term Right-of-Use Asset Remaining Term Right-of-Use Asset Minneapolis, MN lease 5 years $ 10,577 5 years $ 10,704 Kyev, Ukraine lease 5 years 2,220 5 years 2,316 Little Falls, NJ lease 3 years 1,472 4 years 1,574 Other leases <1 - 5 years 901 <1 - 5 years 1,150 $ 15,170 $ 15,744 Some of our leases may include options to extend the leases for up to five years. The options to extend our leases are not recognized as part of our Right-of-Use (“ROU”) assets and lease liabilities as it is not reasonably certain that we will exercise those options. Additionally, our agreements do not include options to terminate the leases. The components of lease expense were as follows: Three Months Ended March 31, (In thousands) 2020 2019 Operating lease cost $ 595 $ 686 Variable lease cost 892 804 $ 1,487 $ 1,490 Operating lease cost for short-term leases was not material for the three months ended March 31, 2020 and 2019 . Supplemental cash flow information related to leases was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Cash paid for amounts included in the measurement of lease liabilities Operating cash flows from operating leases 1,112 1,033 ROU assets obtained in exchange for operating lease liabilities 29 — Supplemental balance sheet information related to leases was as follows: March 31, 2020 December 31, 2019 Weighted-average remaining lease term - operating leases 4.8 years 5.0 years Weighted-average discount rate - operating leases 4.5 % 4.5 % At March 31, 2020, our future minimum payments under operating leases were as follows: (In thousands) Remainder of 2020 $ 5,513 2021 5,077 2022 4,589 2023 4,402 2024 4,149 Thereafter 1,437 25,167 Less: imputed interest (2,344 ) $ 22,823 |
Stockholders' Equity
Stockholders' Equity | 3 Months Ended |
Mar. 31, 2020 | |
Equity [Abstract] | |
Stockholders’ Equity | NOTE I – Stockholders’ Equity Stock Split On August 22, 2019, we effected a two-for-one stock split of the Company’s common stock. There was no change in the number of authorized common shares of the Company. All share and per share data have been adjusted for all periods presented to reflect the stock split. Stock Repurchase Program On November 2, 2019, our board of directors authorized a program to repurchase up to $50 million of common stock. Under the program, purchases may be made from time to time in the open market over two years. For the three months ended March 31, 2020, we repurchased 240,275 shares at a cost of $12.0 million. As of March 31, 2020, $38.0 million of the share repurchase program was available for future share repurchases. |
Stock-Based Compensation
Stock-Based Compensation | 3 Months Ended |
Mar. 31, 2020 | |
Disclosure Of Compensation Related Costs Sharebased Payments [Abstract] | |
Stock-Based Compensation | NOTE J – 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 restricted stock and restricted stock units (“RSU”), to employees, non-employee directors and other consultants who provide services to us. We also provide an employee stock purchase plan and 401(k) stock match. Restricted stock awards result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested or released according to the terms of the agreement. In February 2020, 2.1 million additional shares were reserved for future issuance under our 2010 Equity Incentive Plan. At March 31, 2020, there were approximately 14.0 million shares available for grant under approved equity compensation plans. We recognize stock-based compensation expense on a straight-line basis over the vesting period, except for expense 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. Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows: Three Months Ended March 31, (In thousands) 2020 2019 Cost of revenues $ 808 $ 587 Operating expenses Sales and marketing 846 730 Research and development 923 523 General and administrative 1,767 3,454 $ 4,344 $ 5,294 Stock-based compensation expense by plan type was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Stock options $ 594 $ 1,274 Performance share units 696 923 Restricted stock units 2,329 2,443 Restricted stock awards 127 136 Employee stock purchase plan 222 190 401(k) stock match 376 328 $ 4,344 $ 5,294 As of March 31, 2020, there was approximately $27.1 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a straight-line basis over a weighted average period of 2.8 years. Stock Options Stock options generally vest over four years and have a contractual term of seven to ten years from the date of grant. Our stock option activity was as follows: Three Months Ended March 31, 2020 Weighted Average Options (#) Exercise Price (per share) Outstanding, beginning of period 1,543,912 $ 30.03 Granted 86,906 56.25 Exercised (173,192 ) 21.27 Forfeited (1,756 ) 41.27 Outstanding, end of period 1,455,870 32.63 Of the total outstanding options at March 31, 2020, 1.1 million were exercisable with a weighted average exercise price of $29.33 per share. The total outstanding options had a weighted average remaining contractual life of 3.1 years. The weighted average grant date fair value of options granted during the first three months of 2020 was $14.51 per share. This was estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions: Volatility 31.2 % Dividend yield 0 % Life (in years) 3.8 Risk-free interest rate 1.3 % The expected volatility of the options is based on the historical volatility of our common stock. We have not issued dividends on our common stock and do not expect to do so in the foreseeable future. Beginning with awards granted in 2020, the expected term of options is derived from historical data on employee exercises and post-vesting employment termination behavior. For awards granted prior to 2020, the expected term of the options was based on the simplified method which did not consider historical employee exercise behavior. The risk-free interest rate is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equal to the expected life at the grant date. Performance Share Units and Restricted Stock Units and Awards In February 2017, our executive officers were granted performance share unit (“PSU”) awards with vesting contingent on successful attainment of pre-determined revenue targets over the course of a three-year In February 2018, 2019 and 2020, our executive officers were granted PSU awards with vesting contingent on the Company’s total shareholder return as compared to indexed total shareholder return over the course of a fiscal based three-year RSUs vest over four years and, upon vesting, the holder is entitled to receive shares of our common stock. With restricted stock awards, shares of our common stock are issued when the award is granted and the restrictions lapse over one year. Activity for our PSUs and RSUs was as follows: Three Months Ended March 31, 2020 Weighted Average Grant PSUs and RSUs (#) Date Fair Value (per share) Outstanding, beginning of period 795,086 $ 38.76 Granted 202,011 57.12 Vested and common stock issued (194,622 ) 33.99 Forfeited (150,636 ) 28.20 Outstanding, end of period 651,839 48.32 Our restricted stock awards activity was as follows: Three Months Ended March 31, 2020 Restricted Stock Weighted Average Grant Awards (#) Date Fair Value (per share) Outstanding, beginning of period 2,460 $ 51.80 Restrictions lapsed (2,460 ) 51.80 Outstanding, end of period — — Employee Stock Purchase Plan We have an employee stock purchase plan which a llows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of one share of common stock at the beginning or end of each stock purchase period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year, respectively. A total of 1.9 million shares of common stock are reserved for issuance under the plan as of March 31, 2020. Our ESPP activity was as follows: Three Months Ended March 31, (In thousands, except share data) 2020 2019 Amount for shares purchased $ 87 $ — Shares purchased 2,015 — The fair value was estimated based on the market price of our common stock at the beginning of the offering period using the Black-Scholes option pricing model with the following assumptions: Volatility 30.6 % Dividend yield 0 % Life (in years) 0.5 Risk-free interest rate 1.6 % 401(k) Stock Match We sponsor a 401(k) retirement savings plan for our U.S. employees where participants can contribute up to 80% of their compensation, subject to the limits established by law. We match 50% of the employee’s elective deferrals, up to the first 6% of the employee’s pre-tax compensation for each pay period. A portion of our match is in company stock, which is purchased from the open market by our plan provider and immediately deposited into the employee’s 401(k) account. |
Income Taxes
Income Taxes | 3 Months Ended |
Mar. 31, 2020 | |
Income Tax Disclosure [Abstract] | |
Income Taxes | NOTE K – Income Taxes We record our interim provision for income taxes by applying our estimated annual effective tax rate to our year-to-date pretax income and adjust the provision for discrete tax items recorded in the period. 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. Our provisions for income taxes include current foreign and state income tax expense, as well as deferred tax expense. As of March 31, 2020, we do not have any unrecognized tax benefits nor any material accrued interest or tax penalties. |
Net Income Per Share
Net Income Per Share | 3 Months Ended |
Mar. 31, 2020 | |
Earnings Per Share [Abstract] | |
Net Income Per Share | NOTE L – Net Income Per Share Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares, including options, PSUs, RSUs and restricted awards. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share. The following table presents the components of the computation of basic and diluted net income per share for the periods indicated: Three Months Ended March 31, (In thousands, except per share amounts) 2020 2019 Numerator Net income $ 9,515 $ 6,813 Denominator Weighted average common shares outstanding, basic 35,072 34,942 Options to purchase common stock 582 722 PSUs, RSUs and restricted stock awards 272 320 Weighted average common shares outstanding, diluted 35,926 35,984 Net income per share Basic $ 0.27 $ 0.19 Diluted $ 0.26 $ 0.19 Shares and per share data have been adjusted for all periods presented to reflect a two-for-one stock split effective August 22, 2019. For the three months ended March 31, 2020 |
Geographic Information
Geographic Information | 3 Months Ended |
Mar. 31, 2020 | |
Revenue From Contract With Customer [Abstract] | |
Geographic Information | NOTE M – Geographic Information For the three months ended March 31, 2020 At March 31, 2020 |
General (Policies)
General (Policies) | 3 Months Ended |
Mar. 31, 2020 | |
Organization Consolidation And Presentation Of Financial Statements [Abstract] | |
Business Description | Business Description SPS Commerce is a leading provider of cloud-based supply chain management solutions that retailers, suppliers, grocers, distributors and logistics firms to orchestrate the For many businesses, implementing and maintaining a suite of supply chain management capabilities is resource-intensive and not a core competency. The solutions offered by SPS Commerce eliminate the need for on-premise software and support staff by taking on that capability on the customer’s behalf. These solutions also enable our customers to increase their supply cycle agility, optimize their inventory levels and sell-through, reduce operational costs and gain increased visibility into customer orders, helping ensure that suppliers, grocers, distributors, and logistics firms can satisfy retailer requirements. |
Basis of Presentation | Basis of Presentation The accompanying unaudited condensed consolidated financial statements include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the condensed consolidated financial statements, which Effective January 1, 2020, we adopted Accounting Standards Update (“ASU”) No. 2016-13, Financial Instruments – Credit Losses On July 25, 2019, the Company announced that its board of directors declared a two-for-one stock split of the Company’s common stock, effected in the form of a 100 percent stock dividend as of the record date on August 8, 2019. The stock split dividend was distributed on August 22, 2019. Earnings per share and weighted average shares outstanding are presented in this Quarterly Report on Form 10-Q after the effect of the 100 percent stock dividend. The two-for-one stock split is reflected in the share amounts in all periods presented in this Quarterly Report on Form 10-Q. |
Use of Estimates | Use of Estimates Preparing financial statements in conformity with GAAP requires management to make estimates 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. |
Recently Adopted Accounting Pronouncements | Recently Adopted Accounting Pronouncements Standard Date of Issuance Description Date Adopted Effect on the Financial Statements ASU 2016-13 , Financial Instruments - Credit Losses (Topic 326), Measurement of Credit Losses on Financial Statements June 2016 The amendment replaces the incurred loss impairment methodology in current GAAP with a methodology that reflects expected credit losses on instruments within its scope, including trade receivables. This is intended to provide financial statement users with more decision-useful information about the expected credit losses. January 2020 The adoption of this standard did not have a material impact on our condensed consolidated financial statements. See above under “Basis for Presentation” for significant inputs for the allowance for credit losses. ASU 2018-13 , Fair Value Measurement (Topic 820), Disclosure Framework - Changes to the Disclosure Requirements for Fair Value Measurement August 2018 This amendment adds, modifies and removes several disclosure requirements relative to the three levels of inputs used to measure fair value in accordance with Topic 820, Fair Value Measurement. January 2020 The adoption of this standard did not have a material impact on our condensed consolidated financial statements. ASU 2017-04 , Intangibles - Goodwill and Other (Topic 350), Simplifying the Test for Goodwill Impairment January 2017 This amendment eliminates Step 2 from the goodwill impairment test. January 2020 The adoption of this standard did not have a material impact on our condensed consolidated financial statements. |
Significant Accounting Policies | Significant Accounting Policies There were no material changes in our significant accounting policies during the three months ended March 31, 2020. See Note A to the consolidated financial statements included in our Annual Report on Form 10-K for the year ended December 31, 2019, as filed with the SEC, for additional information regarding our significant accounting policies. |
Revenue (Tables)
Revenue (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Revenue From Contract With Customer [Abstract] | |
Summary of Revenues by Revenue Stream | We derive our revenues from the following revenue streams: Three Months Ended March 31, (In thousands) 2020 2019 Recurring revenues: Fulfillment $ 59,103 $ 52,445 Analytics 9,736 8,873 Other 1,199 1,428 Recurring Revenues 70,038 62,746 One-time revenues 4,154 4,188 $ 74,192 $ 66,934 |
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 March 31, (In thousands) 2020 2019 Balance, beginning of period $ 10,518 $ 9,857 Invoiced set-up fees 2,719 2,537 Amortized set-up fees (2,665 ) (2,581 ) Balance, end of period $ 10,572 $ 9,813 |
Deferred Costs (Tables)
Deferred Costs (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Deferred Costs [Abstract] | |
Summary of Deferred Costs and Amortization of Deferred Costs | The table below presents the activity of deferred costs and amortization of deferred costs: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 46,941 $ 45,475 Incurred deferred costs 12,721 12,332 Amortized deferred costs (12,726 ) (11,916 ) Balance, end of period $ 46,936 $ 45,891 |
Financial Instruments (Tables)
Financial Instruments (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Financial Instruments Owned At Fair Value [Abstract] | |
Summary of Cash Equivalents and Short-term Investments | Cash equivalents and short-term investments consisted of the following: March 31, 2020 Amortized Unrealized Fair (In thousands) Cost Gains, net Value Cash equivalents: Money market funds $ 157,333 $ — $ 157,333 Certificates of deposit 6,140 — 6,140 Marketable securities: Corporate bonds 11,405 24 11,429 Commercial paper 7,496 10 7,506 U.S. treasury securities 4,932 67 4,999 $ 187,306 $ 101 $ 187,407 December 31, 2019 Amortized Unrealized Fair (In thousands) Cost Gains, net Value Cash equivalents: Money market funds $ 151,266 $ — $ 151,266 Certificates of deposit 7,030 — 7,030 Marketable securities: Corporate bonds 9,785 20 9,805 Commercial paper 7,503 — 7,503 U.S. treasury securities 9,855 91 9,946 $ 185,439 $ 111 $ 185,550 |
Summary of Financial Assets and Liabilities Measured at Fair Value on a Recurring Basis | The following table presents information about our financial assets and liabilities that are measured at fair value on a recurring basis and indicates the fair value hierarchy of the valuation techniques utilized to determine such fair value: March 31, 2020 (In thousands) Level 1 Level 2 Level 3 Total Assets: Cash equivalents: Money market funds $ 157,333 $ — $ — $ 157,333 Certificates of deposit 6,140 — — 6,140 Marketable securities: Corporate bonds — 11,429 — 11,429 Commercial paper — 7,506 — 7,506 U.S. treasury securities — 4,999 — 4,999 $ 163,473 $ 23,934 $ — $ 187,407 Liabilities: Earn-out liability $ — $ — $ 307 $ 307 $ — $ — $ 307 $ 307 December 31, 2019 (In thousands) Level 1 Level 2 Level 3 Total Assets: Cash equivalents: Money market funds $ 151,266 $ — $ — $ 151,266 Certificates of deposit 7,030 — — 7,030 Marketable securities: Corporate bonds — 9,805 — 9,805 Commercial paper — 7,503 — 7,503 U.S. treasury securities — 9,946 — 9,946 $ 158,296 $ 27,254 $ — $ 185,550 Liabilities: Earn-out liability $ — $ — $ 405 $ 405 $ — $ — $ 405 $ 405 |
Allowance for Credit Losses (Ta
Allowance for Credit Losses (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Receivables [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: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 1,469 $ 1,392 Adoption of ASU 2016-13 1,069 — Provision for credit losses 1,285 655 Write-offs, net of recoveries (884 ) (569 ) Balance, end of period $ 2,939 $ 1,478 |
Goodwill and Intangible Asset_2
Goodwill and Intangible Assets, net (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Goodwill And Intangible Assets Disclosure [Abstract] | |
Schedule of Changes in Net Carrying Amount of Goodwill | The changes in the net carrying amount of goodwill was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Balance, beginning of period $ 76,845 $ 69,658 Foreign currency translation adjustments (2,382 ) 417 Balance, end of period $ 74,463 $ 70,075 |
Intangible Assets | Intangible assets subject to amortization are amortized over their respective useful lives (ranging from three to ten years). Intangible assets, net included the following: March 31, 2020 Gross Foreign Carrying Accumulated Currency (In thousands) Amount Amortization Translation Net Subscriber relationships $ 36,847 $ (21,383 ) $ (468 ) $ 14,996 Non-competition agreements 698 (597 ) (9 ) 92 Acquired technology 7,795 (2,026 ) — 5,769 $ 45,340 $ (24,006 ) $ (477 ) $ 20,857 December 31, 2019 Gross Foreign Carrying Accumulated Currency (In thousands) Amount Amortization Translation Net Subscriber relationships $ 43,640 $ (27,287 ) $ 214 $ 16,567 Non-competition agreements 2,495 (2,371 ) 10 134 Acquired technology 8,602 (2,643 ) 8 5,967 $ 54,737 $ (32,301 ) $ 232 $ 22,668 |
Estimated Annual Amortization Expense Related to Intangible Assets Subject to Amortization | The estimated annual amortization expense related to intangible assets subject to amortization for the next five years is as follows: (In thousands) Remainder of 2020 $ 3,914 2021 4,395 2022 3,291 2023 3,227 2024 2,100 Thereafter 3,930 $ 20,857 |
Other Assets (Tables)
Other Assets (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Other Assets [Abstract] | |
Summary of Changes in Net Amount of Capitalized Implementation Costs for Software Hosting Arrangements | The changes in the net amount of capitalized implementation costs for software hosting arrangements is as follows: Three Months Ended March 31, (in thousands) 2020 2019 Balance, beginning of period $ 1,166 $ 455 Capitalized implementation fees 51 255 Amortization of implementation fees (29 ) (10 ) Balance, end of period $ 1,188 $ 700 |
Leases (Tables)
Leases (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Leases [Abstract] | |
Summary of Non-Cancellable Operating Leases, Primarily for Office Space and Certain Equipment | We are obligated under non-cancellable operating leases, primarily for office space and certain equipment, as follows: March 31, 2020 December 31, 2019 (In thousands, except remaining term) Remaining Term Right-of-Use Asset Remaining Term Right-of-Use Asset Minneapolis, MN lease 5 years $ 10,577 5 years $ 10,704 Kyev, Ukraine lease 5 years 2,220 5 years 2,316 Little Falls, NJ lease 3 years 1,472 4 years 1,574 Other leases <1 - 5 years 901 <1 - 5 years 1,150 $ 15,170 $ 15,744 |
Components of Lease Expense | The components of lease expense were as follows: Three Months Ended March 31, (In thousands) 2020 2019 Operating lease cost $ 595 $ 686 Variable lease cost 892 804 $ 1,487 $ 1,490 |
Schedule of Supplemental Cash Flow Information Related to Leases | Supplemental cash flow information related to leases was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Cash paid for amounts included in the measurement of lease liabilities Operating cash flows from operating leases 1,112 1,033 ROU assets obtained in exchange for operating lease liabilities 29 — |
Schedule of Supplemental Balance Sheet Information Related to Leases | Supplemental balance sheet information related to leases was as follows: March 31, 2020 December 31, 2019 Weighted-average remaining lease term - operating leases 4.8 years 5.0 years Weighted-average discount rate - operating leases 4.5 % 4.5 % |
Schedule of Future Minimum Payments Under Operating Leases | At March 31, 2020, our future minimum payments under operating leases were as follows: (In thousands) Remainder of 2020 $ 5,513 2021 5,077 2022 4,589 2023 4,402 2024 4,149 Thereafter 1,437 25,167 Less: imputed interest (2,344 ) $ 22,823 |
Stock-Based Compensation (Table
Stock-Based Compensation (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Stock-Based Compensation Expense | Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows: Three Months Ended March 31, (In thousands) 2020 2019 Cost of revenues $ 808 $ 587 Operating expenses Sales and marketing 846 730 Research and development 923 523 General and administrative 1,767 3,454 $ 4,344 $ 5,294 Stock-based compensation expense by plan type was as follows: Three Months Ended March 31, (In thousands) 2020 2019 Stock options $ 594 $ 1,274 Performance share units 696 923 Restricted stock units 2,329 2,443 Restricted stock awards 127 136 Employee stock purchase plan 222 190 401(k) stock match 376 328 $ 4,344 $ 5,294 |
Stock Option Activity | Stock options generally vest over four years and have a contractual term of seven to ten years from the date of grant. Our stock option activity was as follows: Three Months Ended March 31, 2020 Weighted Average Options (#) Exercise Price (per share) Outstanding, beginning of period 1,543,912 $ 30.03 Granted 86,906 56.25 Exercised (173,192 ) 21.27 Forfeited (1,756 ) 41.27 Outstanding, end of period 1,455,870 32.63 |
Weighted Average Grant Date Fair Value of Options Granted, Assumptions | The weighted average grant date fair value of options granted during the first three months of 2020 was $14.51 per share. This was estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions: Volatility 31.2 % Dividend yield 0 % Life (in years) 3.8 Risk-free interest rate 1.3 % |
Summary of ESPP Activity | Our ESPP activity was as follows: Three Months Ended March 31, (In thousands, except share data) 2020 2019 Amount for shares purchased $ 87 $ — Shares purchased 2,015 — |
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 Black-Scholes option pricing model with the following assumptions: Volatility 30.6 % Dividend yield 0 % Life (in years) 0.5 Risk-free interest rate 1.6 % |
PSUs and RSUs [Member] | |
PSUs and RSUs and Restricted Stock Awards | Activity for our PSUs and RSUs was as follows: Three Months Ended March 31, 2020 Weighted Average Grant PSUs and RSUs (#) Date Fair Value (per share) Outstanding, beginning of period 795,086 $ 38.76 Granted 202,011 57.12 Vested and common stock issued (194,622 ) 33.99 Forfeited (150,636 ) 28.20 Outstanding, end of period 651,839 48.32 |
Restricted Stock Award [Member] | |
PSUs and RSUs and Restricted Stock Awards | Our restricted stock awards activity was as follows: Three Months Ended March 31, 2020 Restricted Stock Weighted Average Grant Awards (#) Date Fair Value (per share) Outstanding, beginning of period 2,460 $ 51.80 Restrictions lapsed (2,460 ) 51.80 Outstanding, end of period — — |
Net Income Per Share (Tables)
Net Income Per Share (Tables) | 3 Months Ended |
Mar. 31, 2020 | |
Earnings Per Share [Abstract] | |
Components of Computation of Basic and Diluted Net Income Per Share | The following table presents the components of the computation of basic and diluted net income per share for the periods indicated: Three Months Ended March 31, (In thousands, except per share amounts) 2020 2019 Numerator Net income $ 9,515 $ 6,813 Denominator Weighted average common shares outstanding, basic 35,072 34,942 Options to purchase common stock 582 722 PSUs, RSUs and restricted stock awards 272 320 Weighted average common shares outstanding, diluted 35,926 35,984 Net income per share Basic $ 0.27 $ 0.19 Diluted $ 0.26 $ 0.19 |
General - Additional Informatio
General - Additional Information (Detail) $ in Millions | Aug. 22, 2019 | Aug. 08, 2019 | Mar. 31, 2020USD ($) |
Schedule of Accounting Policies [Line Items] | |||
Stock split ratio | 2 | 2 | |
Percentage of stock dividend from stock split | 100.00% | ||
Accounting Standards Update 2016-13 [Member] | |||
Schedule of Accounting Policies [Line Items] | |||
Cumulative-effect adjustment to retained earnings | $ 1.1 |
Revenue - Summary of Revenues b
Revenue - Summary of Revenues by Revenue Stream (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Revenue Recognition [Line Items] | ||
Revenues | $ 74,192 | $ 66,934 |
Recurring Revenues [Member] | ||
Revenue Recognition [Line Items] | ||
Revenues | 70,038 | 62,746 |
One-time Revenues [Member] | ||
Revenue Recognition [Line Items] | ||
Revenues | 4,154 | 4,188 |
Fulfillment [Member] | Recurring Revenues [Member] | ||
Revenue Recognition [Line Items] | ||
Revenues | 59,103 | 52,445 |
Analytics [Member] | Recurring Revenues [Member] | ||
Revenue Recognition [Line Items] | ||
Revenues | 9,736 | 8,873 |
Other [Member] | Recurring Revenues [Member] | ||
Revenue Recognition [Line Items] | ||
Revenues | $ 1,199 | $ 1,428 |
Revenue - Additional Informatio
Revenue - Additional Information (Detail) | 3 Months Ended |
Mar. 31, 2020 | |
Disaggregation Of Revenue [Line Items] | |
Latest timing of billings | 30 days |
Estimated period for material rights present to customers | 2 years |
Set up fees recognized period | 2 years |
Maximum recognition period for miscellaneous one-time fee | 1 year |
Analytics Solution [Member] | |
Disaggregation Of Revenue [Line Items] | |
Set up fees recognized period | 1 year |
Minimum [Member] | |
Disaggregation Of Revenue [Line Items] | |
Customer contract cancellation period | 30 days |
Current amount recognition period of set up fees | 1 month |
Long term amount recognition period of set up fees | 13 months |
Maximum [Member] | |
Disaggregation Of Revenue [Line Items] | |
Customer contract cancellation period | 90 days |
Deferred revenue recognition period | 1 year |
Contract period for remaining performance obligations for contracts in which the optional exemption under ASC 606-10-50-14(a) was applied | 1 year |
Current amount recognition period of set up fees | 12 months |
Long term amount recognition period of set up fees | 24 months |
Revenue - Summary of Deferred R
Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Detail) - Set-Up Fees [Member] - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Deferred Revenue Arrangement [Line Items] | ||
Balance, beginning of period | $ 10,518 | $ 9,857 |
Invoiced set-up fees | 2,719 | 2,537 |
Amortized set-up fees | (2,665) | (2,581) |
Balance, end of period | $ 10,572 | $ 9,813 |
Deferred Costs - Additional Inf
Deferred Costs - Additional Information (Detail) | 3 Months Ended |
Mar. 31, 2020 | |
Deferred Costs [Abstract] | |
Deferred commission expected amortization period | 2 years |
Deferred customer implementation costs expected amortization period | 2 years |
Deferred Costs - Summary of Def
Deferred Costs - Summary of Deferred Costs and Amortization of Deferred Costs (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Deferred Costs [Abstract] | ||
Balance, beginning of period | $ 46,941 | $ 45,475 |
Incurred deferred costs | 12,721 | 12,332 |
Amortized deferred costs | (12,726) | (11,916) |
Balance, end of period | $ 46,936 | $ 45,891 |
Financial Instruments - Summary
Financial Instruments - Summary of Cash Equivalents and Short-term Investments (Detail) - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | $ 187,306 | $ 185,439 |
Unrealized Gains, net | 101 | 111 |
Fair Value | 187,407 | 185,550 |
Money Market Funds [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 157,333 | 151,266 |
Fair Value | 157,333 | 151,266 |
Certificates of Deposit [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 6,140 | 7,030 |
Fair Value | 6,140 | 7,030 |
Corporate Bonds [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 11,405 | 9,785 |
Unrealized Gains, net | 24 | 20 |
Fair Value | 11,429 | 9,805 |
Commercial Paper [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 7,496 | 7,503 |
Unrealized Gains, net | 10 | |
Fair Value | 7,506 | 7,503 |
U.S. Treasury Securities [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 4,932 | 9,855 |
Unrealized Gains, net | 67 | 91 |
Fair Value | $ 4,999 | $ 9,946 |
Financial Instruments - Summa_2
Financial Instruments - Summary of Financial Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail) - Fair Value, Measurements, Recurring [Member] - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | $ 187,407 | $ 185,550 |
Liabilities fair value | 307 | 405 |
Money Market Funds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 157,333 | 151,266 |
Certificates of Deposit [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 6,140 | 7,030 |
Corporate Bonds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 11,429 | 9,805 |
Commercial Paper [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 7,506 | 7,503 |
U.S. Treasury Securities [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 4,999 | 9,946 |
Level 1 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 163,473 | 158,296 |
Level 1 [Member] | Money Market Funds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 157,333 | 151,266 |
Level 1 [Member] | Certificates of Deposit [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 6,140 | 7,030 |
Level 2 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 23,934 | 27,254 |
Level 2 [Member] | Corporate Bonds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 11,429 | 9,805 |
Level 2 [Member] | Commercial Paper [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 7,506 | 7,503 |
Level 2 [Member] | U.S. Treasury Securities [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 4,999 | 9,946 |
Level 3 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Liabilities fair value | $ 307 | $ 405 |
Financial Instruments - Additio
Financial Instruments - Additional Information (Detail) - USD ($) | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Maximum potential payout of contingent consideration | $ 1,700,000 | |
Expense due to remeasurement of contingent liability | 100,000 | |
Earn out liability payment | 700,000 | |
Fair value, assets, level 1 to level 2 transfers, amount | 0 | $ 0 |
Fair value, assets, level 2 to level 1 transfers, amount | 0 | 0 |
Fair value, liabilities, level 1 to level 2 transfers, amount | 0 | 0 |
Fair value, liabilities, level 2 to level 1 transfers, amount | 0 | 0 |
Fair value, asset transfers into level 3 | 0 | 0 |
Fair value, asset, transfers out of level 3 | 0 | 0 |
Fair value, liability, transfers into level 3 | 0 | 0 |
Fair value, liability, transfers out of level 3 | 0 | $ 0 |
Level 3 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Contingent liability transferred amount | $ 200,000 |
Allowance for Credit Losses - S
Allowance for Credit Losses - Schedule of Allowance for Credit Losses Activity Included in Accounts Receivable Net (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Allowance For Credit Loss [Abstract] | ||
Balance, beginning of period | $ 1,469 | $ 1,392 |
Adoption of ASU 2016-13 | 1,069 | |
Provision for credit losses | 1,285 | 655 |
Write-offs, net of recoveries | (884) | (569) |
Balance, end of period | $ 2,939 | $ 1,478 |
Goodwill and Intangible Asset_3
Goodwill and Intangible Assets, net - Schedule of Changes in Net Carrying Amount of Goodwill (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Goodwill And Intangible Assets Disclosure [Abstract] | ||
Balance, beginning of period | $ 76,845 | $ 69,658 |
Foreign currency translation adjustments | (2,382) | 417 |
Balance, end of period | $ 74,463 | $ 70,075 |
Goodwill and Intangible Asset_4
Goodwill and Intangible Assets, net - Additional Information (Detail) | 3 Months Ended |
Mar. 31, 2020 | |
Minimum [Member] | |
Finite-Lived Intangible Assets [Line Items] | |
Intangible assets useful life | 3 years |
Maximum [Member] | |
Finite-Lived Intangible Assets [Line Items] | |
Intangible assets useful life | 10 years |
Goodwill and Intangible Asset_5
Goodwill and Intangible Assets, net - Intangible Assets (Detail) - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | $ 45,340 | $ 54,737 |
Accumulated Amortization | (24,006) | (32,301) |
Foreign Currency Translation | (477) | 232 |
Net | 20,857 | 22,668 |
Subscriber Relationships [Member] | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | 36,847 | 43,640 |
Accumulated Amortization | (21,383) | (27,287) |
Foreign Currency Translation | (468) | 214 |
Net | 14,996 | 16,567 |
Non-competition Agreements [Member] | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | 698 | 2,495 |
Accumulated Amortization | (597) | (2,371) |
Foreign Currency Translation | (9) | 10 |
Net | 92 | 134 |
Acquired Technology [Member] | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | 7,795 | 8,602 |
Accumulated Amortization | (2,026) | (2,643) |
Foreign Currency Translation | 8 | |
Net | $ 5,769 | $ 5,967 |
Goodwill and Intangible Asset_6
Goodwill and Intangible Assets, net - Estimated Annual Amortization Expense Related to Intangible Assets Subject to Amortization (Detail) - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
Goodwill And Intangible Assets Disclosure [Abstract] | ||
Remainder of 2020 | $ 3,914 | |
2021 | 4,395 | |
2022 | 3,291 | |
2023 | 3,227 | |
2024 | 2,100 | |
Thereafter | 3,930 | |
Net | $ 20,857 | $ 22,668 |
Other Assets - Summary of Chang
Other Assets - Summary of Changes in Net Amount of Capitalized Implementation Costs for Software Hosting Arrangements (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Capitalized Computer Software Net [Abstract] | ||
Balance, beginning of period | $ 1,166 | $ 455 |
Capitalized implementation fees | 51 | 255 |
Amortization of implementation fees | (29) | (10) |
Balance, end of period | $ 1,188 | $ 700 |
Other Assets - Additional Infor
Other Assets - Additional Information (Detail) - USD ($) | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Capitalized Computer Software Net [Abstract] | ||
Impairment losses on capitalized implementation costs | $ 0 | $ 0 |
Leases - Summary of Non-Cancell
Leases - Summary of Non-Cancellable Operating Leases, Primarily for Office Space and Certain Equipment (Detail) - USD ($) $ in Thousands | Mar. 31, 2020 | Dec. 31, 2019 |
Lessee Lease Description [Line Items] | ||
Right-of-Use Asset | $ 15,170 | $ 15,744 |
Minneapolis, MN Lease [Member] | ||
Lessee Lease Description [Line Items] | ||
Remaining Term (in years) | 5 years | 5 years |
Right-of-Use Asset | $ 10,577 | $ 10,704 |
Kyev, Ukraine Lease [Member] | ||
Lessee Lease Description [Line Items] | ||
Remaining Term (in years) | 5 years | 5 years |
Right-of-Use Asset | $ 2,220 | $ 2,316 |
Little Falls, NJ Lease [Member] | ||
Lessee Lease Description [Line Items] | ||
Remaining Term (in years) | 3 years | 4 years |
Right-of-Use Asset | $ 1,472 | $ 1,574 |
Other Leases [Member] | ||
Lessee Lease Description [Line Items] | ||
Right-of-Use Asset | $ 901 | $ 1,150 |
Other Leases [Member] | Minimum [Member] | ||
Lessee Lease Description [Line Items] | ||
Remaining Term (in years) | 1 year | 1 year |
Other Leases [Member] | Maximum [Member] | ||
Lessee Lease Description [Line Items] | ||
Remaining Term (in years) | 5 years | 5 years |
Leases - Additional Information
Leases - Additional Information (Detail) | Mar. 31, 2020 |
Leases [Abstract] | |
Lease extension period, number of years | 5 years |
Leases - Components of Lease Ex
Leases - Components of Lease Expense (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Leases [Abstract] | ||
Operating lease cost | $ 595 | $ 686 |
Variable lease cost | 892 | 804 |
Lease expense | $ 1,487 | $ 1,490 |
Leases - Schedule of Supplement
Leases - Schedule of Supplemental Cash Flow Information Related to Leases (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Cash paid for amounts included in the measurement of lease liabilities | ||
Operating cash flows from operating leases | $ 1,112 | $ 1,033 |
ROU assets obtained in exchange for operating lease liabilities | $ 29 |
Leases - Schedule of Suppleme_2
Leases - Schedule of Supplemental Balance Sheet Information Related to Leases (Detail) | Mar. 31, 2020 | Dec. 31, 2019 |
Leases [Abstract] | ||
Weighted-average remaining lease term - operating leases | 4 years 9 months 18 days | 5 years |
Weighted-average discount rate - operating leases | 4.50% | 4.50% |
Leases - Schedule of Future Min
Leases - Schedule of Future Minimum Payments Under Operating Leases (Detail) $ in Thousands | Mar. 31, 2020USD ($) |
Leases [Abstract] | |
Remainder of 2020 | $ 5,513 |
2021 | 5,077 |
2022 | 4,589 |
2023 | 4,402 |
2024 | 4,149 |
Thereafter | 1,437 |
Future minimum payments | 25,167 |
Less: imputed interest | (2,344) |
Operating lease liability | $ 22,823 |
Stockholders' Equity - Addition
Stockholders' Equity - Additional Information (Detail) $ in Thousands | Nov. 02, 2019USD ($) | Aug. 22, 2019shares | Aug. 08, 2019 | Mar. 31, 2020USD ($)shares | Mar. 31, 2019USD ($)shares |
Schedule Of Stockholders Equity [Line Items] | |||||
Stock split ratio | 2 | 2 | |||
Change in number of common stock, shares authorized | shares | 0 | ||||
Treasury stock at cost | $ 12,000 | $ 2,966 | |||
Common Stock [Member] | |||||
Schedule Of Stockholders Equity [Line Items] | |||||
Stock repurchase program, authorized amount | $ 50,000 | ||||
Stock repurchase program, period | 2 years | ||||
Repurchase of treasury shares | shares | 240,275 | 67,464 | |||
Stock repurchase program, available for future repurchases | $ 38,000 |
Stock-Based Compensation - Addi
Stock-Based Compensation - Additional Information (Detail) $ / shares in Units, shares in Millions, $ in Millions | 1 Months Ended | 3 Months Ended | |||
Feb. 28, 2019 | Feb. 28, 2018 | Feb. 28, 2017 | Mar. 31, 2020USD ($)Offering$ / sharesshares | Feb. 29, 2020shares | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Shares available for grant | 14 | ||||
Unrecognized stock-based compensation expense | $ | $ 27.1 | ||||
Unrecognized stock-based compensation, expected to be recognized, weighted average period | 2 years 9 months 18 days | ||||
Employee Stock Purchase Plan [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Additional shares reserved for issuance under the plan | 1.9 | ||||
Purchase price as a percentage of fair market value | 85.00% | ||||
Number of offerings per year | Offering | 2 | ||||
Equity Incentive Plan [Member] | 2010 [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Additional shares reserved for issuance under the plan | 2.1 | ||||
Stock Options [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Vesting period | 4 years | ||||
Stock options exercisable | 1.1 | ||||
Weighted average exercise price | $ / shares | $ 29.33 | ||||
Weighted average remaining contractual life | 3 years 1 month 6 days | ||||
Weighted average fair value per share of options granted | $ / shares | $ 14.51 | ||||
Stock Options [Member] | Minimum [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Stock options contractual term range | 7 years | ||||
Stock Options [Member] | Maximum [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Stock options contractual term range | 10 years | ||||
Performance Share Unit [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Vesting period | 3 years | 3 years | 3 years | ||
Restricted Stock Units [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Vesting period | 4 years | ||||
Restricted Stock Award [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Restricted stock awards units restrictions lapse, period | 1 year | ||||
401(k) Stock Match [Member] | |||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||
Maximum allowable contribution by employee percentage | 80.00% | ||||
Defined benefit plan employer matching contribution percent | 50.00% | ||||
Maximum annual contribution per employee, percent | 6.00% |
Stock-Based Compensation - Stoc
Stock-Based Compensation - Stock-Based Compensation Expense (Detail) - USD ($) $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | $ 4,344 | $ 5,294 |
Stock Options [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 594 | 1,274 |
Performance Share Unit [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Performance Share Units | 696 | 923 |
Restricted Stock Units [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 2,329 | 2,443 |
Restricted Stock Award [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 127 | 136 |
Employee Stock Purchase Plan [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 222 | 190 |
401(k) Stock Match [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 376 | 328 |
Cost of Revenues [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 808 | 587 |
Sales and Marketing [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 846 | 730 |
Research and Development [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | 923 | 523 |
General and Administrative [Member] | ||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | ||
Stock-based compensation expense | $ 1,767 | $ 3,454 |
Stock-Based Compensation - St_2
Stock-Based Compensation - Stock Option Activity (Detail) | 3 Months Ended |
Mar. 31, 2020$ / sharesshares | |
Disclosure Of Compensation Related Costs Sharebased Payments [Abstract] | |
Options Outstanding, beginning of period | shares | 1,543,912 |
Options, Granted | shares | 86,906 |
Options, Exercised | shares | (173,192) |
Options, Forfeited | shares | (1,756) |
Options Outstanding, end of period | shares | 1,455,870 |
Weighted Average Exercise Price, Outstanding, beginning of period | $ / shares | $ 30.03 |
Weighted Average Exercise Price, Granted | $ / shares | 56.25 |
Weighted Average Exercise Price, Exercised | $ / shares | 21.27 |
Weighted Average Exercise Price, Forfeited | $ / shares | 41.27 |
Weighted Average Exercise Price, Outstanding, end of period | $ / shares | $ 32.63 |
Stock-Based Compensation - Weig
Stock-Based Compensation - Weighted Average Grant Date Fair Value of Options Granted, Assumptions (Detail) - Stock Options [Member] | 3 Months Ended |
Mar. 31, 2020 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Volatility | 31.20% |
Dividend yield | 0.00% |
Life (in years) | 3 years 9 months 18 days |
Risk-free interest rate | 1.30% |
Stock-Based Compensation - PSUs
Stock-Based Compensation - PSUs and RSUs (Detail) - PSU's and RSU's [Member] | 3 Months Ended |
Mar. 31, 2020$ / sharesshares | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Stock awards, Outstanding, beginning of period | shares | 795,086 |
Granted, stock units | shares | 202,011 |
Vested and common stock issued, stock units | shares | (194,622) |
Forfeited, stock units | shares | (150,636) |
Stock awards, Outstanding, end of period | shares | 651,839 |
Weighted average grant date fair value, Outstanding, beginning of period | $ / shares | $ 38.76 |
Granted, Weighted Average Grant Date Fair Value | $ / shares | 57.12 |
Vested and common stock issued, Weighted Average Grant Date Fair Value | $ / shares | 33.99 |
Forfeited, Weighted Average Grant Date Fair Value | $ / shares | 28.20 |
Weighted average grant date fair value, Outstanding, end of period | $ / shares | $ 48.32 |
Stock-Based Compensation - Rest
Stock-Based Compensation - Restricted Stock Awards (Detail) - Restricted Stock Award [Member] | 3 Months Ended |
Mar. 31, 2020$ / sharesshares | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Stock awards, Outstanding, beginning of period | shares | 2,460 |
Restrictions lapsed, stock awards | shares | (2,460) |
Weighted average grant date fair value, Outstanding, beginning of period | $ / shares | $ 51.80 |
Restrictions lapsed, Weighted Average Grant Date Fair Value | $ / shares | $ 51.80 |
Stock-Based Compensation - Summ
Stock-Based Compensation - Summary of ESPP Activity (Detail) - Employee Stock Purchase Plan [Member] $ in Thousands | 3 Months Ended |
Mar. 31, 2020USD ($)shares | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Amount for shares purchased | $ | $ 87 |
Shares purchased | shares | 2,015 |
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 [Member] | 3 Months Ended |
Mar. 31, 2020 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |
Volatility | 30.60% |
Dividend yield | 0.00% |
Life (in years) | 6 months |
Risk-free interest rate | 1.60% |
Income Taxes - Additional Infor
Income Taxes - Additional Information (Detail) | Mar. 31, 2020USD ($) |
Income Tax Disclosure [Abstract] | |
Unrecognized tax benefits | $ 0 |
Accrued interest or tax penalties | $ 0 |
Net Income Per Share - Componen
Net Income Per Share - Components of Computation of Basic and Diluted Net Income Per Share (Detail) - USD ($) $ / shares in Units, shares in Thousands, $ in Thousands | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Numerator | ||
Net income | $ 9,515 | $ 6,813 |
Denominator | ||
Weighted average common shares outstanding, basic | 35,072 | 34,942 |
Options to purchase common stock | 582 | 722 |
PSUs, RSUs and restricted stock awards | 272 | 320 |
Weighted average common shares outstanding, diluted | 35,926 | 35,984 |
Net income per share | ||
Basic | $ 0.27 | $ 0.19 |
Diluted | $ 0.26 | $ 0.19 |
Net Income Per Share - Addition
Net Income Per Share - Additional Information (Detail) shares in Thousands | Aug. 22, 2019 | Aug. 08, 2019 | Mar. 31, 2020shares | Mar. 31, 2019shares |
Net Income Per Share [Abstract] | ||||
Stock split ratio, description | two-for-one stock split | |||
Stock split ratio | 2 | 2 | ||
Outstanding potential common shares excluded from calculation of diluted net income (loss) per share | 309,000 | 69,000 |
Geographic Information - Additi
Geographic Information - Additional Information (Detail) - jurisdiction | 3 Months Ended | |
Mar. 31, 2020 | Mar. 31, 2019 | |
Disaggregation Of Revenue [Line Items] | ||
Number of jurisdiction outside US had excess revenue of 10% | 0 | |
Geographic Concentration Risk | United States [Member] | ||
Disaggregation Of Revenue [Line Items] | ||
Concentration risk, percentage | 83.00% | 82.00% |
Geographic Concentration Risk | Foreign [Member] | Property, Plant and Equipment | ||
Disaggregation Of Revenue [Line Items] | ||
Concentration risk, percentage | 8.00% | 8.00% |
Geographic Concentration Risk | Foreign [Member] | Maximum [Member] | ||
Disaggregation Of Revenue [Line Items] | ||
Concentration risk, percentage | 10.00% |