How TAMradar delivers updates
TAMradar supports two ways to receive radar findings:- Webhooks (push) — TAMradar POSTs events to your
webhook_urlin real-time. Setwebhook_urlwhen creating a radar to enable this. - Polling (pull) — Fetch findings on demand via
GET /v1/updates. Works for all radars, including those created without awebhook_url.
Payload Libraries by Category
Company Payloads
- Company Mentions
- Company Social Posts
- Company Social Posts (CXO)
- Company Social Engagements
- Company Job Openings
- Company New Hires
- Company Promotions
- Company Reviews
Contact Payloads
Industry Payloads
Setting Up Webhook Delivery (optional)
If you want real-time push delivery, set up an HTTPS endpoint:- Create an HTTPS endpoint on your server that can receive POST requests
- Pass
webhook_urlwhen creating your radar - Ensure your endpoint returns a 2xx status code to acknowledge receipt
No webhook? Skipwebhook_urlentirely to create a poll-only radar. Findings are always available viaGET /v1/updatesregardless.
Webhook Payload Format
All webhook payloads follow this structure:Base Fields
| Field | Type | Required | Description |
|---|---|---|---|
| update_id | string | Yes | Unique identifier for this webhook update |
| update_type | string | Yes | Type of update (see Update Types below) |
| record_id | string | No | Unique identifier for the detected record |
| radar_type | string | Yes | Type of radar that generated the event |
| discovered_at | string | Yes | ISO timestamp (UTC) when the update was detected |
Update Types
| Update Type | Description |
|---|---|
radar_finding | New data detected by a radar (default) |
radar_failure | Radar setup or billing failure (may include refund metadata) |
radar_created | Async bulk item was created successfully |
bulk_completed | Async bulk request finished processing all items |
Per-item bulk webhook events
Before the finalbulk_completed, each item delivers its own webhook as it finishes:
radar_created— item was created successfully. Includescode: 201,message: "Radar created successfully",completed_at, and a fulldatablock matching the single-radar creation response.radar_failure— item failed validation, conflict, or billing. Includescompleted_at,code,errors[], andmessagematching the sync API error shape. Also emitsdiscovered_at(same value ascompleted_at) for backwards compatibility — prefercompleted_atgoing forward.
radar_created example:
radar_failure example:
Bulk update_id semantics
For bulk_completed events, two ID levels can appear and they serve different purposes:
- Top-level
update_id: idempotency key for the wholebulk_completedwebhook event. - Per-item
radars[].update_id: correlation key for each item’s earlierradar_createdorradar_failureevent.
- Deduplicate
bulk_completedretries by top-levelupdate_id. - Correlate each
radars[]item back to its individual item event withradars[].update_id.
bulk_completed payloads use a batch envelope with completed_at, summary, and radars[]. Each entry in radars[] is the verbatim payload from that item’s per-item webhook:
Radar Types
| Radar Type | Description |
|---|---|
company_mentions | Social media and article mentions of your company |
company_social_posts | Company’s own social media activity |
company_social_posts_cxo | Social media posts from company executives |
company_social_engagements | Social media engagements (likes, comments) on company posts |
company_job_openings | New job postings from tracked companies |
company_new_hires | New employee detections |
company_promotions | Employee promotions and role changes |
company_reviews | Customer reviews across platforms |
contact_job_changes | Individual contact career changes (departures, promotions, role changes) |
contact_social_posts | Social media posts from tracked contacts |
contact_social_engagements | Social media engagements (likes, comments) by tracked contacts |
industry_mentions | Industry-wide mentions and news articles |
industry_funding_rounds | Funding rounds across companies in your industry |
industry_job_openings | Job openings across companies in your industry |
industry_new_companies | New companies emerging in your industry |
Radar Failure Notifications
When a radar fails setup or is deactivated due to billing, you’ll receive aradar_failure notification:
radar_failure shape is used with a different code and refund value:
Failure Reasons
Identify the failure type fromcode and message. The errors[].reason field contains the machine-readable reason key.
code | errors[].reason | Description |
|---|---|---|
400 | missing_prerequisites | Required accounts or data sources not found |
400 | setup_failure | General setup failure during radar initialization |
400 | source_inaccessible | Target source (e.g. LinkedIn profile, domain) is inaccessible or private |
402 | insufficient_funds | Radar deactivated — balance too low to cover the charge |
Best Practices for Webhook Handling
- Respond Quickly: Return a 2xx status code immediately, then process asynchronously
- Implement Retry Logic: Be prepared to handle the same event multiple times
- Verify Signatures: Check webhook signatures to validate authenticity (documentation coming soon)
- Track Failure Events: Monitor
radar_failureto handle billing/setup problems quickly - Handle Null Fields: Some fields like
record_idmay be null for certain event types