Connector Marketplace

Pre-built integrations for Claude AI, ChatGPT, GitHub, Google Workspace, Jira, Linear, and Zapier. Install with one click.

Available Connectors

Claude AI

@claude mention + /claude commands. Summarize threads, translate, ask questions, analyze sentiment.

ChatGPT

@chatgpt mention + /gpt commands. Same capabilities, OpenAI backend.

GitHub

PR/issue notifications, CI status, /github commands. OAuth for per-user access.

Google Workspace

Calendar reminders, Drive search, Gmail unread count. OAuth per-user.

Jira

Issue notifications, /jira create + status commands. Webhook-based.

Zapier / Make

Connect to 6,000+ apps. Incoming + outgoing webhooks for any automation.

Installing a Connector

  1. 1Go to Workspace Settings → Connectors.
  2. 2Browse the marketplace and click Install on the connector you want.
  3. 3Configure: paste your API key, select target channels, choose which events to receive.
  4. 4Click Test Connection to verify, then Save.

Slash Commands

/claude summarize     — Summarize the current thread
/claude translate de  — Translate last 5 messages to German
/claude ask  — Ask a question with channel context
/jira create Bug  — Create a Jira issue
/jira status PROJ-123  — Check issue status
/github status         — Show repo info
/github pr-list        — List open pull requests</code></pre>
      </div>
    </section>

    <section id="webhooks" class="mb-16 scroll-mt-24">
      <h2 class="text-2xl font-bold text-gray-900 mb-4">Webhooks</h2>
      <h3 id="incoming" class="text-lg font-semibold text-gray-900 mb-2 scroll-mt-24">Incoming webhooks (your service → Disqua)</h3>
      <p class="text-gray-600 mb-4 text-sm">
        Your platform POSTs a small JSON body and a message appears in a Disqua channel within about 100 ms.
        This is the quickest way to pipe product events — sign-ups, new listings, records created or updated
        — into a team channel. The contract mirrors Slack’s incoming webhooks, so an existing Slack
        integration usually needs nothing but a new URL. GitHub, Jira, and Zapier use the same mechanism.
      </p>

      <h4 class="text-base font-semibold text-gray-900 mb-2">1. Create the webhook</h4>
      <p class="text-gray-600 mb-4 text-sm">
        In your workspace open <span class="font-medium text-gray-900">Settings → Connectors → Incoming Webhook → Install</span>.
        Choose a <span class="font-medium text-gray-900">default channel</span> and — strongly recommended — set a
        <span class="font-medium text-gray-900">signing secret</span>. Installing mints a unique URL:
      </p>
      <div class="bg-gray-950 rounded-xl p-5 overflow-x-auto mb-6">
        <pre class="text-emerald-400 text-sm font-mono leading-relaxed"><code>POST https://api.disqua.com/v1/connectors/incoming/<token></code></pre>
      </div>

      <h4 class="text-base font-semibold text-gray-900 mb-2">2. Send events</h4>
      <p class="text-gray-600 mb-3 text-sm"><code class="font-mono text-xs text-gray-900">text</code> is the only required field.</p>
      <div class="overflow-x-auto mb-4">
        <table class="w-full text-sm text-left">
          <thead class="text-gray-500 border-b border-gray-200">
            <tr><th class="py-2 pr-4 font-semibold">Field</th><th class="py-2 pr-4 font-semibold">Required</th><th class="py-2 font-semibold">Meaning</th></tr>
          </thead>
          <tbody class="text-gray-600">
            <tr class="border-b border-gray-100"><td class="py-2 pr-4 font-mono text-xs text-gray-900">text</td><td class="py-2 pr-4">yes</td><td class="py-2">Message body. Markdown is rendered.</td></tr>
            <tr class="border-b border-gray-100"><td class="py-2 pr-4 font-mono text-xs text-gray-900">channel</td><td class="py-2 pr-4">no</td><td class="py-2">Channel <em>slug</em>. Overrides the default — this is how one webhook feeds several channels.</td></tr>
            <tr class="border-b border-gray-100"><td class="py-2 pr-4 font-mono text-xs text-gray-900">username</td><td class="py-2 pr-4">no</td><td class="py-2">Rendered in bold before the text. Useful when several systems post to one channel.</td></tr>
            <tr><td class="py-2 pr-4 font-mono text-xs text-gray-900">icon_url</td><td class="py-2 pr-4">no</td><td class="py-2">Accepted for Slack compatibility; not rendered today.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="bg-gray-950 rounded-xl p-5 overflow-x-auto mb-6">
        <pre class="text-emerald-400 text-sm font-mono leading-relaxed"><code>curl -X POST https://api.disqua.com/v1/connectors/incoming/<token> \
  -H 'Content-Type: application/json' \
  -d '{"text":"New sign-up: jane@example.com","username":"platform"}'</code></pre>
      </div>

      <h4 class="text-base font-semibold text-gray-900 mb-2">3. Route events to separate channels</h4>
      <p class="text-gray-600 mb-4 text-sm">
        Create one channel per event stream (for example <code class="font-mono text-xs text-gray-900">new-users</code> and
        <code class="font-mono text-xs text-gray-900">new-listings</code>) and set <code class="font-mono text-xs text-gray-900">channel</code>
        per message. Four patterns that cover most platforms:
      </p>
      <div class="bg-gray-950 rounded-xl p-5 overflow-x-auto mb-4">
        <pre class="text-emerald-400 text-sm font-mono leading-relaxed"><code>// user registered
{ "channel": "new-users",    "username": "platform",
  "text": "**New registration** — jane@example.com (plan: Free, country: CZ)" }

// listing created
{ "channel": "new-listings", "username": "platform",
  "text": "**New listing** — Skoda Octavia 2019, 289 000 CZK" }

// record created
{ "channel": "new-listings", "username": "platform",
  "text": "**New item** — Order #8412 created by jane@example.com" }

// record updated — say WHAT changed, not just that something did
{ "channel": "new-listings", "username": "platform",
  "text": "**Listing updated** — #8412 price 289 000 → 265 000 CZK" }</code></pre>
      </div>
      <p class="text-gray-600 mb-6 text-sm">
        If a <code class="font-mono text-xs text-gray-900">channel</code> slug does not exist in the workspace the event is
        dropped rather than posted somewhere unexpected, and the reason is recorded in the connector event log.
      </p>

      <h4 class="text-base font-semibold text-gray-900 mb-2">4. Sign your requests</h4>
      <p class="text-gray-600 mb-4 text-sm">
        Without a signing secret, anyone holding the URL can post to your channel — the same trade-off Slack makes.
        Once a secret is configured, Disqua requires an HMAC-SHA256 over the timestamp and the <em>raw request body</em>. The timestamp must be within 5 minutes of Disqua’s clock and each signature is accepted only once, so a captured request cannot be replayed:
      </p>
      <div class="bg-gray-950 rounded-xl p-5 overflow-x-auto mb-4">
        <pre class="text-emerald-400 text-sm font-mono leading-relaxed"><code>X-Disqua-Timestamp: <unix seconds>
X-Disqua-Signature: sha256=<hex(hmac_sha256(secret, "<timestamp>." + raw_body))></code></pre>
      </div>
      <div class="bg-gray-950 rounded-xl p-5 overflow-x-auto mb-4">
        <pre class="text-emerald-400 text-sm font-mono leading-relaxed"><code>// Node.js
const body = JSON.stringify({ text: 'New sign-up: jane@example.com' });
const ts   = Math.floor(Date.now() / 1000);
const sig  = 'sha256=' + require('crypto')
  .createHmac('sha256', process.env.DISQUA_WEBHOOK_SECRET)
  .update(`${ts}.${body}`).digest('hex');   // timestamp is INSIDE the signature

await fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-Disqua-Timestamp': String(ts),
    'X-Disqua-Signature': sig,
  },
  body,                     // sign and send the SAME string
});</code></pre>
      </div>
      <div class="bg-gray-950 rounded-xl p-5 overflow-x-auto mb-4">
        <pre class="text-emerald-400 text-sm font-mono leading-relaxed"><code>// PHP
$body = json_encode(['text' => 'New sign-up: jane@example.com']);
$ts   = time();
$sig  = 'sha256=' . hash_hmac('sha256', "$ts.$body", getenv('DISQUA_WEBHOOK_SECRET'));
// send both X-Disqua-Timestamp: $ts and X-Disqua-Signature: $sig</code></pre>
      </div>
      <p class="text-gray-600 mb-6 text-sm">
        Sign the exact bytes you transmit. Re-serialising the payload after signing — middleware that re-encodes
        JSON, or a framework that reorders keys — changes the body, and the signature no longer matches. That is
        the most common reason a correct-looking integration is rejected.
      </p>

      <h4 class="text-base font-semibold text-gray-900 mb-2">5. Handle the response</h4>
      <p class="text-gray-600 mb-4 text-sm">
        Success returns <code class="font-mono text-xs text-gray-900">200</code> with
        <code class="font-mono text-xs text-gray-900">{"ok":true,"data":{"processed":true}}</code>. An unknown or revoked
        token <em>also</em> returns <code class="font-mono text-xs text-gray-900">200</code>, but with
        <code class="font-mono text-xs text-gray-900">"processed":false</code> — deliberately, so the endpoint cannot
        be used to probe which tokens are valid. Check that field, not the status code, when you need to know an event
        actually landed.
      </p>
      <p class="text-gray-600 mb-6 text-sm">
        Delivery is fire-and-forget and Disqua does not de-duplicate. If your platform retries on network errors,
        include your own event ID in the text, or retry only on connection failure rather than on a 200, so a repeated
        delivery stays recognisable.
      </p>

      <div class="rounded-xl border border-gray-200 bg-gray-50 p-5 mb-6">
        <p class="text-sm text-gray-600">
          <span class="font-semibold text-gray-900">Implementing this with an AI agent?</span>
          Point it at the machine-readable capability catalog —
          <code class="font-mono text-xs text-gray-900">GET https://api.disqua.com/v1/ai/catalog</code> — which lists
          every resource type an agent can operate on, with request examples. A deeper agent-oriented reference lives at
          <a href="https://forai.disqua.com/" class="text-brand-600 hover:text-brand-700 font-medium">forai.disqua.com</a>
          (access key required).
        </p>
      </div>

      <h3 class="text-lg font-semibold text-gray-900 mb-2">Outgoing (Disqua → your service)</h3>
      <p class="text-gray-600 mb-3 text-sm">Configure a Zapier webhook URL and select events (message.new, ticket.created, ticket.resolved, etc.). Disqua POSTs event payloads automatically.</p>
      <p class="text-gray-600 text-sm">
        Full reference for this direction — event catalog, delivery headers, signature verification and retry
        behaviour — is on the
        <a href="/docs/webhooks" class="text-brand-600 hover:text-brand-700 font-medium">Outgoing webhooks</a> page.
      </p>
    </section>
  </div>
</div>





<footer class="ft">
  <div class="w">
    <div class="ft-top">
      <div class="ft-brand">
        <a href="/" class="logo" aria-label="Disqua" style="font-size:18px"><span class="logo-mark" aria-hidden="true"><b>d</b><i></i></span>disqua</a>
        <span>Team communication and customer support — unified.</span>
        <span>🇪🇺 EU hosted · GDPR-aligned</span>
      </div>
      <div class="ft-social">
        <a href="https://twitter.com/disqua" rel="noopener" aria-label="X (Twitter)"><svg width="15" height="15" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></a>
        <a href="https://github.com/disqua" rel="noopener" aria-label="GitHub"><svg width="16" height="16" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd"/></svg></a>
        <a href="https://linkedin.com/company/disqua" rel="noopener" aria-label="LinkedIn"><svg width="15" height="15" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg></a>
      </div>
    </div>
    <nav class="ft-cols" aria-label="Footer">
      
      <div>
        <h3>Product</h3>
        <ul><li><a href="/team-chat">Team chat</a></li><li><a href="/helpdesk">Helpdesk</a></li><li><a href="/ticketing-system">Ticketing system</a></li><li><a href="/knowledge-base">Knowledge base</a></li><li><a href="/ai-helpdesk">AI helpdesk</a></li><li><a href="/ai-employees">AI Employees</a></li><li><a href="/pricing">Pricing</a></li></ul>
      </div>
      
      <div>
        <h3>Solutions</h3>
        <ul><li><a href="/customer-support-software">Customer support</a></li><li><a href="/internal-communication">Internal comms</a></li><li><a href="/use-cases/startups">Startups</a></li><li><a href="/use-cases/small-business">Small business</a></li><li><a href="/use-cases/remote-teams">Remote teams</a></li><li><a href="/use-cases/saas-companies">SaaS companies</a></li></ul>
      </div>
      
      <div>
        <h3>Compare</h3>
        <ul><li><a href="/vs-slack">Disqua vs Slack</a></li><li><a href="/migrate-from-slack">Migrate from Slack</a></li><li><a href="/compare/slack-alternative">Slack alternative</a></li><li><a href="/compare/freshdesk-alternative">Freshdesk alternative</a></li><li><a href="/compare/zendesk-alternative">Zendesk alternative</a></li><li><a href="/compare/intercom-alternative">Intercom alternative</a></li><li><a href="/compare/help-scout-alternative">Help Scout alternative</a></li><li><a href="/compare/microsoft-teams-alternative">MS Teams alternative</a></li><li><a href="/compare/mattermost-alternative">Mattermost alternative</a></li><li><a href="/compare/rocket-chat-alternative">Rocket.Chat alternative</a></li><li><a href="/compare/chatwoot-alternative">Chatwoot alternative</a></li><li><a href="/compare/crisp-alternative">Crisp alternative</a></li></ul>
      </div>
      
      <div>
        <h3>Resources</h3>
        <ul><li><a href="/guides">Guides</a></li><li><a href="/blog">Blog</a></li><li><a href="/docs">Documentation</a></li><li><a href="/docs/api-reference">API reference</a></li><li><a href="/changelog">Changelog</a></li><li><a href="/roadmap">Roadmap</a></li><li><a href="https://status.disqua.com">System Status</a></li></ul>
      </div>
      
      <div>
        <h3>Company</h3>
        <ul><li><a href="/about">About</a></li><li><a href="/contact">Contact</a></li><li><a href="/security">Security</a></li><li><a href="/gdpr">GDPR & EU hosting</a></li><li><a href="mailto:careers@disqua.com">Careers</a></li></ul>
      </div>
      
      <div>
        <h3>Legal</h3>
        <ul><li><a href="/legal/terms">Terms of Service</a></li><li><a href="/legal/privacy">Privacy Policy</a></li><li><a href="/legal/dpa">DPA</a></li><li><a href="/legal/subprocessors">Sub-processors</a></li><li><a href="/legal/sla">SLA</a></li><li><a href="/legal/cookies">Cookie policy</a></li></ul>
      </div>
      
    </nav>
    <div class="ft-langs">
      <a href="/docs/connectors" hreflang="en" lang="en" aria-current="true">English</a><a href="/cs/docs/connectors" hreflang="cs" lang="cs">Čeština</a><a href="/da/docs/connectors" hreflang="da" lang="da">Dansk</a><a href="/de/docs/connectors" hreflang="de" lang="de">Deutsch</a><a href="/el/docs/connectors" hreflang="el" lang="el">Ελληνικά</a><a href="/es/docs/connectors" hreflang="es" lang="es">Español</a><a href="/fi/docs/connectors" hreflang="fi" lang="fi">Suomi</a><a href="/fr/docs/connectors" hreflang="fr" lang="fr">Français</a><a href="/hu/docs/connectors" hreflang="hu" lang="hu">Magyar</a><a href="/it/docs/connectors" hreflang="it" lang="it">Italiano</a><a href="/ja/docs/connectors" hreflang="ja" lang="ja">日本語</a><a href="/ko/docs/connectors" hreflang="ko" lang="ko">한국어</a><a href="/nl/docs/connectors" hreflang="nl" lang="nl">Nederlands</a><a href="/no/docs/connectors" hreflang="no" lang="no">Norsk</a><a href="/pl/docs/connectors" hreflang="pl" lang="pl">Polski</a><a href="/pt/docs/connectors" hreflang="pt" lang="pt">Português</a><a href="/ro/docs/connectors" hreflang="ro" lang="ro">Română</a><a href="/ru/docs/connectors" hreflang="ru" lang="ru">Русский</a><a href="/sk/docs/connectors" hreflang="sk" lang="sk">Slovenčina</a><a href="/sv/docs/connectors" hreflang="sv" lang="sv">Svenska</a><a href="/tr/docs/connectors" hreflang="tr" lang="tr">Türkçe</a><a href="/zh/docs/connectors" hreflang="zh" lang="zh">中文</a>
    </div>
    <div class="ft-bottom">
      <span>© 2026 Disqua. All rights reserved.</span>
      <span>Disqua is operated by Baby Data s.r.o. · Roháčova 188/37, 130 00 Praha 3, Czech Republic · Company ID 06956042 · VAT ID CZ06956042</span>
    </div>
  </div>
</footer>
<script src="/public/js/v2.js?v=mvj2n6x3" defer></script>


<script src="/public/js/main.js"></script>
</body>
</html>