Signal Webhook
Send custom signal events to Atisbo from any tool that supports HTTP POST
Signal Webhook
Use the Signal Webhook to send product signals from any tool that can send data over HTTP — Zapier, Make, n8n, internal scripts, or any system your team already uses.
This endpoint is for feedback, notes, transcripts, and operational events that should appear in Triage. Metric values use Metric Webhooks or Custom API under Metrics & Analytics instead.
Prerequisites
- An active Atisbo account
- Access to the tool you want to send data from (Zapier, Make, an internal system, etc.)
Setup
- In Atisbo, go to Settings → Sources
- Find the Signal Webhook card and click Connect
- You'll see an example of the data format Atisbo accepts. Click Create endpoint
- Copy the webhook URL and shared secret that appear — this is your custom signal endpoint
Your webhook URL and shared secret are private. Treat them like API credentials.
Endpoint Model
Signal Webhook creates one endpoint for custom signal intake. Several systems can send to the same endpoint in parallel; use fields like source, source_url and signal_origin to preserve where each event came from.
If you need separate named endpoints for pushed metric values, create Metric Webhooks in Settings → Sources. If Atisbo should pull metric history from your system instead, connect Custom API in Metrics & Analytics.
Endpoints that understand a specific payload
The same port also accepts four payload shapes it can parse without you mapping any fields. Your agent creates these — ask it, and it returns the URL and secret to paste into the other system.
| Source | What it sends | Notes |
|---|---|---|
| Figma | Designer comments on design files | Registered as a Figma webhook via their API |
| Hotjar | NPS, CSAT and open-ended survey responses | Needs a Hotjar API key |
| Apple Notes | Field notes captured on iPhone or Mac | Driven by an Apple Shortcut you run |
| Amplitude alerts | Anomaly alerts when a key metric moves unexpectedly | Operational context, not customer voice |
These differ from the generic endpoint in one way only: they know the shape of what arrives, so you do not describe it. Everything after that — classification, grouping, priority — is identical.
Amplitude alerts are not the same thing as Amplitude metrics. Alerts are events that arrive here and become operational signals. Metric time series are pulled by the Amplitude metric provider under Metrics & Analytics, and never enter Triage.
What Data to Send
Minimum: just the text
{
"text": "Users are complaining that the checkout button disappears on mobile Safari"
}
With full context (recommended)
{
"text": "Users are complaining that the checkout button disappears on mobile Safari",
"source": "intercom",
"source_url": "https://app.intercom.com/conversations/123",
"occurred_at": "2026-05-27T18:30:00Z",
"actor_name": "Jane Smith",
"signal_origin": "customer"
}
Available Fields
| Field | Required | What it's for |
|---|---|---|
text | Yes | The signal content — the complaint, idea, or feedback |
source | No | Where it came from (e.g., "intercom", "freshdesk", "internal") |
source_url | No | Link to the original item for reference |
occurred_at | No | When the signal happened in the original source. Use ISO 8601 when possible; epoch seconds or milliseconds also work. |
actor_name | No | Name of the person who reported the problem |
signal_origin | No | Type: customer, internal, or operational. Defaults to customer |
Zapier Example
- In Zapier, create a new Zap
- Trigger: Choose your source (e.g., "New Ticket in Freshdesk")
- Action: Select Webhooks by Zapier → POST
- URL: Paste your Atisbo webhook URL
- Payload Type: JSON
- Data: Map the fields from your trigger:
text→ the ticket contentsource→"freshdesk"actor_name→ the customer's name
Make (Integromat) Example
- In Make, create a new Scenario
- Add your trigger (e.g., "Watch New Rows" in Google Sheets)
- Add an HTTP → Make a request module
- URL: Your Atisbo webhook URL
- Method: POST
- Body type: JSON
- Map the fields
What Happens After You Send Data
- Atisbo receives the text and processes it automatically
- It gets classified as a
problem,idea,question, orunclassified - If similar signals already exist, it gets grouped into an existing Claim
- If it's a new topic, a new Claim is created
- It appears in your Triage inbox for you to decide what to do
Best Practices
- Include context: The
source_urlfield lets you jump back to the original item when you need more detail - Be specific in the text: "Checkout button doesn't load on iOS 17 Safari" is better than "Mobile bug"
- Use
signal_origincorrectly: if it's customer feedback, usecustomer. If it's a team observation, useinternal - Don't send the same thing twice: if your agent already connected the tool directly, don't also pipe it through a webhook. Duplicate evidence inflates how urgent a problem looks, which is the one number you want to be able to trust