Skip to main content

Signals — Inbound Data from the World

A Signal is any inbound event: a webhook payload from your CRM, an RSS article, a ClearCue intent event, a GitHub issue, a Linear task update, a Jira ticket, or a manual entry. Signals are the raw material that triggers automation — connect them to experiments and projects via Trigger Rules.

Scenario: An engineering team receives signals from three GitHub repositories, their Linear board, and a Jira project. New high-priority issues automatically trigger the "Incident Response" experiment. A B2B sales team also receives ClearCue intent data and automatically triggers "Enterprise Outreach" when buyer score exceeds 80.

Signal sources

Connector How it works
Webhook POST to /api/signals/webhook with an HMAC-SHA256 signature. Any system that can send an HTTP request can send a signal.
GitHub (OAuth) Connect via OAuth and create per-repository subscriptions. Each subscription auto-registers a GitHub webhook and receives signals for issues, pull requests, pushes, workflow runs, and releases. Filter by event type, label, or branch. Multiple repos supported simultaneously.
Linear (OAuth) Connect via OAuth and subscribe to one or more Linear teams. Signals are generated for issue created/updated, comment added, and project events. Filter by resource type and action.
Jira (OAuth) Connect via Atlassian OAuth (3LO). Subscriptions register dynamic Jira webhooks scoped to a project key. Signals are generated for issue created, updated, deleted, and comment events. Webhooks are automatically refreshed before the 30-day Atlassian expiry.
RSS Provide a feed URL. FleetQ polls it every 15 minutes and creates one signal per new item. Duplicate detection prevents the same item from being ingested twice.
Manual Create signals directly via the API (POST /api/v1/signals) or from the Entity Browser in the app.
ClearCue Native integration with ClearCue's intent data platform. HMAC-verified webhook maps company/person data into a signal with a FIRE model composite score.
Alert connectors Dedicated webhook endpoints for Sentry, Datadog, and PagerDuty. Each connector validates the provider's signing scheme and maps alert payloads (title, severity, runbook URL) into structured signals. Feed production alerts directly into your incident response experiment.
IMAP mailbox Poll an IMAP inbox on a schedule. New messages become signals with parsed headers, sender, subject, and body. Useful for support-ticket ingestion and contact-form replies. Configure via imap_mailbox MCP tool.
HTTP monitor Periodically probes an HTTP endpoint and emits a signal whenever the response changes (status code, latency, body diff). Acts as a lightweight uptime + change detector.
Slack (inbound) Slash command or @-mention in Slack creates a signal. Useful for "/triage" style commands that launch an experiment from chat.
Generic integration webhook Fallback endpoint at /api/integrations/webhook/{slug} for any service not listed above. HMAC-verified, per-slug binding.

Alert connector routes

Production incident tooling ships pre-configured endpoints. Point your provider at these URLs and add the binding secret in Signal Sources → Bindings.

Provider Endpoint
Sentry POST /api/signals/sentry
Datadog POST /api/signals/datadog
(X-Datadog-Webhook-Secret header)
PagerDuty POST /api/signals/pagerduty

OAuth connector subscriptions

GitHub, Linear, and Jira support OAuth-based connections. After connecting an account via Integrations, create one or more subscriptions at Signal Sources → Subscriptions. Each subscription auto-registers a webhook at the provider and receives a unique callback URL.

Driver Required env vars Filter options
GitHub GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET
Repository, event types, labels, branches
Linear LINEAR_CLIENT_ID
LINEAR_CLIENT_SECRET
Team ID, resource types, filter actions
Jira JIRA_CLIENT_ID
JIRA_CLIENT_SECRET
Project key, webhook event types
Each subscription has its own unique webhook URL — /api/signals/subscription/{uuid}. The opaque UUIDv7 provides security for providers (like Jira) that don't sign webhook payloads. HMAC secrets are encrypted at rest with the team's per-team key.
Jira webhook expiry: Atlassian dynamic webhooks expire after 30 days. FleetQ automatically deregisters and re-registers expiring subscriptions via a weekly background job — no manual action required.

Sending a webhook signal

Configure a webhook secret in FleetQ (Signal Sources → Bindings), then sign your requests:

bash
# Generate signature: HMAC-SHA256 of raw request body, using your webhook secret
SIGNATURE=$(echo -n '{"title":"New Enterprise Lead","source":"salesforce","content":{"company":"Acme Corp","score":92}}' | openssl dgst -sha256 -hmac "YOUR_SECRET" -binary | base64)

curl -X POST https://mimir.nikix.ru/api/signals/webhook \
  -H "X-Signature: sha256=${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d '{"title":"New Enterprise Lead","source":"salesforce","content":{"company":"Acme Corp","score":92}}'
Store your webhook secret in FleetQ's Credentials vault. It's encrypted at rest with a per-team key.

Signal stacking — FIRE model score

When ClearCue signals arrive, FleetQ calculates a composite intent score using the FIRE model. Repeated signals from the same company stack — each additional signal increases the score with a stacking bonus.

Factor Weight What it measures
Fit 25% How well the company matches your ICP
Intent 40% Buying signals — content consumed, searches, demo requests
Engagement 25% Interaction with your brand (emails opened, site visits)
Relationship 10% Existing connections (warm intro, past customer)

Score tags: Hot (≥80), Warm (60–79), Lukewarm (40–59), Cold (<40). Exponential decay (λ=0.05) reduces scores for inactive companies over time.