StackSwap · For vendors · GTM Decision Schema v1.0.0
Submit a vendor fact sheet
Send us a populated GTM Decision Schema JSON document and we'll fold the facts into the StackSwap tool corpus within 7 business days. The corpus is what feeds per-tool pages, comparison pages, and the stack-scan recommendation engine — so the version of your product that buyers and agents see depends on the facts in it. Submitting a fact sheet is how vendors keep that version accurate.
Why this exists
StackSwap publishes opinions about thousands of B2B GTM tools — price/seat, integration depth, contract minimums, AI capabilities, what to consolidate, what to cancel. Those opinions are only as honest as the underlying facts. Today we source most facts from public pricing pages, vendor docs, earnings calls, Reddit threads, and G2/Capterra review excerpts. That works, but it has two failure modes: (1) vendor pricing pages change and we miss the edit for weeks, and (2) some facts — integration depth scores, contract gotchas, data freshness SLAs — just aren't on the marketing site.
The fix is to let vendors submit structured facts directly, with provenance and a verification date attached. The GTM Decision Schema is the public spec. It's a JSON Schema (draft 2020-12) covering pricing, tiers, integrations (including MCP server availability), AI capabilities, affiliate program terms, and self-disclosed carveout signals. Required fields are the minimum we need to publish a fact-sheet stub; optional fields let agents reason more precisely about your product.
The schema
Required: tool_name, homepage_url, category, verification. Optional groups: pricing, integrations, data_coverage, ai_capabilities, affiliate_program, carveout_disclosures.
- GTM Decision Schema v1.0.0 (JSON Schema, draft 2020-12)
- Methodology change log (schema version history)
- How the corpus is sourced and verified
Backward-compatible additions bump the minor version (1.x.0) and are announced in the change log. Breaking changes bump the major and trigger a 90-day deprecation window for existing submissions — you will not get a 4xx response surprise.
Worked example
A populated fact sheet for a fictional sales engagement tool called Apex Cadence. Shows what good looks like: real numeric pricing, named tiers with gotchas, integration depth scores, self-disclosed conflict (vendor-claimed-vs-user-reported) under verification.conflicts_acknowledged, and an honest carveout_disclosures block. Use this as a template — same field names, your facts.
{
"tool_name": "Apex Cadence",
"vendor_legal_name": "Apex Cadence Inc.",
"homepage_url": "https://example.com/apex-cadence",
"category": "sales engagement",
"subcategories": [
"outbound sequencing",
"email deliverability"
],
"short_description": "Multi-channel sequencer for 5-50 rep SMB sales teams. Email + LinkedIn + dialer in one workflow, no per-channel upcharge.",
"pricing": {
"is_public_pricing": true,
"pricing_model": "per_seat",
"currency": "USD",
"starting_monthly_price_usd": 79,
"has_free_tier": false,
"trial_days": 14,
"tiers": [
{
"name": "Starter",
"price_usd_monthly_per_seat": 79,
"billed_annually_only": false,
"min_seats": 1,
"included_usage": "500 emails/day/seat, 50 LinkedIn actions/day/seat, 1 dialer line",
"gotchas": [
"Dialer minutes billed separately at $0.04/min above 500 included",
"Custom report builder gated to Growth tier"
]
},
{
"name": "Growth",
"price_usd_monthly_per_seat": 149,
"billed_annually_only": true,
"min_seats": 5,
"included_usage": "2,500 emails/day/seat, 250 LinkedIn actions/day/seat, 3 dialer lines",
"gotchas": [
"Annual commit required for Growth pricing — month-to-month adds 25% surcharge",
"CRM bidirectional sync only with HubSpot + Salesforce; Pipedrive is one-way push"
]
}
],
"contract_minimum_months": 0,
"contract_minimum_seats": 1,
"published_pricing_url": "https://example.com/apex-cadence/pricing",
"negotiation_signals": {
"typical_discount_percent_annual_commit": 15,
"typical_discount_percent_multi_year": 22,
"end_of_quarter_flexibility": true
}
},
"integrations": {
"native_integrations": [
{
"target_tool": "HubSpot",
"integration_type": "bidirectional_sync",
"depth_score": 5,
"docs_url": "https://example.com/apex-cadence/integrations/hubspot"
},
{
"target_tool": "Salesforce",
"integration_type": "bidirectional_sync",
"depth_score": 5,
"docs_url": "https://example.com/apex-cadence/integrations/salesforce"
},
{
"target_tool": "Pipedrive",
"integration_type": "one_way_push",
"depth_score": 2
}
],
"api_available": true,
"api_docs_url": "https://example.com/apex-cadence/api",
"webhooks_available": true,
"mcp_server_available": true,
"mcp_server_url": "https://example.com/apex-cadence/mcp",
"zapier_app": true,
"make_app": false,
"n8n_node": false
},
"ai_capabilities": {
"has_native_ai_features": true,
"ai_feature_summary": "Reply classification (positive/objection/oof), draft suggestions inside the inbox, and a per-rep weekly recap that flags stalled sequences.",
"llm_providers_used": [
"anthropic",
"openai"
],
"customer_data_used_for_training": "never",
"agent_consumable": true
},
"affiliate_program": {
"has_affiliate_program": true,
"program_url": "https://example.com/apex-cadence/partners",
"commission_structure": "25% recurring for 12 months, $100 SPIF on first paid month",
"cookie_window_days": 60
},
"carveout_disclosures": {
"uses_exit_intent_popups": false,
"uses_drip_sequences_without_explicit_optin": false,
"core_motion_is_cold_email_at_scale": false,
"incentivizes_reviews_with_compensation": false
},
"verification": {
"submitted_by": "vendor",
"vendor_contact_email": "partnerships@example.com",
"last_verified_at": "2026-05-18",
"attestation": "I am authorized to submit this fact sheet on behalf of Apex Cadence Inc. and attest these facts are accurate as of 2026-05-18.",
"conflicts_acknowledged": [
{
"field": "pricing.tiers[0].included_usage",
"vendor_position": "500 emails/day/seat is the documented Starter limit",
"user_reported_position": "Reddit threads from Q4 2025 report soft throttling at 350/day on new tenants for the first 14 days while domain warms",
"vendor_response": "Confirmed: 350/day is the new-tenant throttle during initial warmup. After 14 days the documented 500/day limit applies. Updating public docs to surface this."
}
]
}
}The fictional example.com URLs above are placeholders. In a real submission they would point to your actual pricing page, integration docs, partner program, and API docs.
How to submit
- Populate the schema. Save a JSON file that validates against gtm-decision-schema.json. Required fields are
tool_name,homepage_url,category,verification. Everything else is optional but each field you fill in is one fewer guess we make. - Email the JSON to nick@stackswap.ai. Subject line:
Fact sheet: [your tool name]. Attach the JSON file or paste it inline. Include the attestation text fromverification.attestationin the email body so the audit record matches. - Reply window: 7 business days. We validate the JSON, cross-check against public sources, and either publish or send one clarification request. Honest self-disclosure of conflicts in
verification.conflicts_acknowledgedaccelerates publication — we don't have to chase a gap you already named. - Resubmit on material changes. New pricing model, new tier, acquisition, product retirement, material change to integration depth, new compliance certification. We also re-verify pricing every 30-90 days — if your published price is going to change, send the resubbefore the public page edit so the corpus is correct on day one.
What we do with it
- Per-tool pages. Pricing, integration matrix, and AI capability sections refresh from the fact sheet on the next deploy after verification. Where vendor-claimed facts conflict with user-reported reality (Reddit, G2, support tickets) we surface both with attribution — that's the surface-both policy.
- Vendor-verified badge. Per-tool pages render a small “Vendor-verified YYYY-MM-DD” badge for any tool with a fact sheet whose
verification.last_verified_atis within 90 days. Stale fact sheets surface a “Verification stale” badge instead — prompts a buyer flag and a vendor resub. - Recommendation engine. Pricing, integration depth, MCP server availability, and AI-readiness signals feed the ranking score for your category. Submitting accurate facts means the engine ranks you on what you actually do, not what we inferred.
- Comparison pages. When you appear in a vs-comparison page, your tier names, gotchas, and integration depth scores come from the fact sheet. If you ship a new pricing tier, resub and we update the comparison without waiting on a content refresh cycle.
- Agent consumption. The schema is public and machine-readable. Buyer-side agents (and our own MCP server at
/api/mcp) can read the corpus directly, which means the version of your product an AI buying assistant surfaces is the version you submitted — not a hallucinated approximation.
What we will not do
- We will not move you up in rankings because you submitted a fact sheet or signed up for an affiliate program. Fit is the ranking input. Affiliate signal only breaks ties between equivalent-fit tools. See editorial firewall point 3.
- We will not suppress non-affiliate competitors. Equal-depth coverage for non-affiliates is point 2 of the firewall — ZoomInfo, Outreach, Gong, and Salesforce appear at full depth across comparison and ranking pages despite no commercial relationship with us.
- We will not silently take your word against user-reported reality. If Reddit threads and support tickets describe a different experience than your pricing page, we surface both. You can pre-empt this by self-disclosing the gap in
verification.conflicts_acknowledged. - We will not publish facts we cannot verify against at least one public source. If your fact sheet claims a 5M-contact database and your homepage says 3M, we send a clarification request before publishing.
If you are an affiliate partner
We would love your fact sheet in the corpus by Q3 2026 — that's the soft target for getting the agent-era methodology refresh to steady state. If you're an existing StackSwap partner and would like a starter JSON pre-filled from public sources, reply to your partnership thread and we'll send one for you to correct and re-submit. Pre-filling is faster than starting from blank.
If you are not a partner
Submit anyway. The schema and process are identical. The fact corpus treats vendor submissions the same regardless of commercial relationship — non-partner submissions just get tagged submitted_by: vendor with no affiliate program block populated. We don't use the absence of an affiliate program as a negative signal.
FAQ
Related
- Methodology — editorial firewall, fact corpus, carveouts
- GTM Decision Schema v1.0.0 (JSON)
- Methodology change log
- Carveouts — tools and categories we decline to promote
Canonical URL: https://stackswap.ai/vendors/submit-fact-sheet