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.

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

  1. 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.
  2. 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 from verification.attestation in the email body so the audit record matches.
  3. 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_acknowledged accelerates publication — we don't have to chase a gap you already named.
  4. 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

What we will not do

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

No. The recommendation engine ranks tools on fit (cost-effectiveness, integration depth, stack compatibility, AI-readiness). Affiliate status only breaks ties between equivalent-fit tools. Submitting a fact sheet improves the accuracy of what gets surfaced about your product — it does not change whether or where you rank. See /methodology#editorial-firewall for the full policy.

Submit anyway. Non-partners get the same fact-sheet treatment as partners. Equal-depth coverage for non-affiliates is one of the five editorial-firewall commitments. If your pricing or integration matrix has changed and we have it wrong, send the updated fact sheet to nick@stackswap.ai — we will update the corpus within 7 business days regardless of commercial relationship.

StackSwap surfaces both with attribution — vendor-claimed and user-reported — rather than silently taking the vendor's word. You can pre-empt this by self-disclosing known disagreements in the verification.conflicts_acknowledged array. Honest self-disclosure earns trust signal in the recommendation engine and pre-empts the "surface both" treatment for that field.

Whenever material facts change: 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 against your published_pricing_url. Resubmit ahead of any pricing page edit so the corpus is correct on day one rather than catching the change a month later.

Not yet. Phase 3 of the methodology refresh ships email-based submission to nick@stackswap.ai. A POST endpoint at /api/vendors/submit-fact-sheet with the same JSON Schema validation is on the roadmap but not before we have a steady-state submission volume that justifies the moderation tooling. Email is the trusted-but-slow channel; we will graduate to API when volume warrants.

Set pricing.is_public_pricing to false and pricing.pricing_model to custom_quote. The tool will surface as "contact sales" pricing rather than fabricated numbers. We will still publish the rest of the fact sheet (integrations, AI capabilities, compliance) and the recommendation engine will use a category-typical price band for ranking — flagged as estimated, not vendor-attested.

The fact that you submitted (submitted_by: vendor) and the verification date will be surfaced on per-tool pages as a "Vendor-verified YYYY-MM-DD" badge. The exact attestation text is stored as part of the editorial record but not displayed inline — it exists so we can defend the audit trail if a third party questions the provenance of a claim.

Marketing language in the short_description field ("AI-powered, best-in-class"), missing or invalid pricing URLs that 404, conflicts_acknowledged omissions where we have direct evidence of user-reported gaps, and tier descriptions that omit known gotchas (annual-only pricing, seat minimums, overage fees). We send a single clarification request before rejecting — most submissions land on the second pass.

Related

Canonical URL: https://stackswap.ai/vendors/submit-fact-sheet