{"schema_version":"secwatch.filing_event.v1","accession":"0001092699-26-000063","form_type":"8-K","ticker":"SPSC","cik":"0001092699","company_name":"SPS COMMERCE INC","filed_at":"2026-07-30T20:08:43+00:00","discovered_at":"2026-07-30T20:10:00.295312+00:00","generated_at":"2026-07-30T20:10:08.557656+00:00","sec_items":["2.02","9.01"],"event_type":"earnings","sentiment":"positive","materiality_score":0.75,"calibrated_materiality_score":0.75,"confidence":"high","headline":"SPS Commerce Q2 revenue and Adjusted EBITDA beat guidance; divests 3P Revenue Recovery business","bullets":["Revenue $197.8M (+6% YoY); recurring revenue up 6%; Adjusted EBITDA $66.6M (+19%).","GAAP net income $6.9M ($0.19 diluted) vs $19.7M ($0.52) a year ago; non-GAAP income $46.4M ($1.27).","Divested 3P Revenue Recovery business on June 30; reduces H2 2026 revenue by ~$10.5M, neutral to Adjusted EBITDA.","FY2026 guidance: revenue $788.4-793.4M (5-6% growth); Adjusted EBITDA margin ~34% (+300 bps YoY).","Share repurchases of $51.2M in Q2; CEO highlights AI agentic capabilities (MAX) launching to all Fulfillment customers."],"urls":{"canonical":"https://secwatch.observer/filing/0001092699-26-000063","json":"https://secwatch.observer/filing/0001092699-26-000063.json","markdown":"https://secwatch.observer/filing/0001092699-26-000063.md","text":"https://secwatch.observer/filing/0001092699-26-000063.txt","edgar_index":"https://www.sec.gov/Archives/edgar/data/1092699/000109269926000063/0001092699-26-000063-index.htm","edgar_primary_document":"https://www.sec.gov/Archives/edgar/data/1092699/000109269926000063/spsc-20260730.htm"},"model":{"generated_by":"deepseek-v4-flash:cloud@v2","generated_at":"2026-07-30T20:10:08.557656+00:00"},"review":{"review_status":"machine_generated","human_reviewed":false,"corrected":false,"correction_note":null,"correction_timestamp":null,"superseded_by":null,"related_filings":[]},"source_grounded_claims":[],"license":"Source filings: public domain (SEC EDGAR). Summaries (headline + bullets): CC-BY-4.0; attribute https://secwatch.observer"}