Integrations
Integrations & Delivery
Connect FinTrakker alerts to your existing compliance workflow. Six delivery channels to fit how your team works.
Email Alerts
Branded, formatted email alerts sent directly to your inbox. Each alert includes the entity name, state, license type, license number, change description, and a direct link to the source portal. Configure digest frequency from your account settings.
- ✓ Immediate alert on change detection
- ✓ Daily or weekly digest option
- ✓ Per-product branded template
- ✓ Severity level prominently displayed
- ✓ Direct link to source portal
- ✓ Unsubscribe controls included
Webhooks
HTTPS POST to your endpoint. Each delivery includes a JSON payload with the full alert data and an HMAC-SHA256 signature in the
X-Firmhound-Signature header for verification. Retry logic handles transient failures.- ✓ HTTPS endpoints only (SSRF protected)
- ✓ HMAC-SHA256 signature on every request
- ✓ 3 retry attempts with exponential backoff
- ✓
alert.createdevent type - ✓ Register via API or account settings
- ✓ Available on Professional and Enterprise
RSS Feed
Public RSS 2.0 feed of the 20 most recent alerts. No authentication required. Subscribe in any RSS reader, connect to Zapier, or parse with any standard XML library. Includes severity metadata in the feed items.
- ✓ No auth required — fully public
- ✓ Standard RSS 2.0 format
- ✓ 20 most recent alerts
- ✓ Severity metadata in item elements
- ✓ Works with any RSS reader
https://firmhound.com/feed/fintrakker
CSV Export
Download filtered alert history as CSV via the API endpoint
GET /alerts/export. Apply date range, state, and alert type filters before exporting. Ideal for compliance documentation, board reports, and audit records. Available on Professional and Enterprise plans.- ✓ Full filter support (date, state, type)
- ✓ Includes all alert fields
- ✓ UTF-8 encoded, RFC 4180 compliant
- ✓ Available via API or dashboard
- ✓ Professional and Enterprise plans
Zapier / Make
Native Zapier and Make (Integromat) connectors are in development. These will enable no-code automations from FinTrakker alerts to Slack, Microsoft Teams, Jira, ServiceNow, PagerDuty, and hundreds of other tools without writing code.
- ✓ Zapier native app
- ✓ Make (Integromat) native app
- ✓ Slack, Teams, Jira triggers
- ✓ No code required
In the meantime, use webhooks to connect to Zapier or Make via their webhook trigger modules.
Direct API
Full RESTful JSON API with JWT authentication. Query alerts, export data, manage webhooks, and integrate FinTrakker into any custom workflow or compliance management system. See the API documentation for all endpoints and code samples.
- ✓ RESTful JSON API
- ✓ JWT authentication
- ✓ 100 req/min (Starter), 1,000/min (Pro)
- ✓ Full alert query and filter support
- ✓ Webhook management endpoints
Webhook Reference
Webhook delivery specification
Every webhook delivery is a signed HTTPS POST with JSON body and the X-Firmhound-Signature header. Verify the signature on every request before processing the payload.
Payload structure
{
"event": "alert.created",
"data": {
"id": "alt_7f4a2c8e",
"product_id": "fintrakker",
"title": "TX Money Transmitter License — Renewal Due in 7 Days",
"description": "Your Texas MTL (TX-DOB-MT-2024-00481) expires Apr 26, 2026.",
"severity": "critical",
"published_at": "2026-04-19T07:17:00Z",
"source_url": "https://www.dob.texas.gov/licensing",
"metadata": {
"state": "TX",
"license_type": "Money Transmitter",
"license_number": "TX-DOB-MT-2024-00481",
"nmls_id": "4481209",
"expires_at": "2026-04-26T00:00:00Z",
"days_until_expiry": 7
}
}
}
Delivery specifications
- ✓ HTTPS endpoints only. HTTP URLs are rejected. Private IP addresses (10.x, 172.16.x, 192.168.x, 127.x) are blocked.
- ✓ Timeout: 10 seconds. If your endpoint does not respond within 10 seconds, the delivery is marked as failed and retried.
- ✓ Retry policy: 3 attempts with exponential backoff (5 min, 30 min, 2 hr). After 3 failures the webhook is paused and you are notified.
- ✓ The
X-Firmhound-Signatureheader contains a timestamp and HMAC-SHA256 digest to prevent replay attacks.
Signature verification (Python)
import hmac
import hashlib
import time
WEBHOOK_SECRET = "your_webhook_secret" # From your webhook settings
def verify_signature(payload_body: bytes, signature_header: str) -> bool:
"""Verify HMAC-SHA256 webhook signature from Firmhound."""
if not signature_header:
return False
# Header format: "t=TIMESTAMP,v1=SIGNATURE"
parts = dict(p.split("=", 1) for p in signature_header.split(","))
timestamp = parts.get("t", "")
sig = parts.get("v1", "")
# Reject if timestamp is more than 5 minutes old
if abs(time.time() - int(timestamp)) > 300:
return False
# Compute expected signature
signed_payload = f"{timestamp}.{payload_body.decode()}"
expected = hmac.new(
WEBHOOK_SECRET.encode(),
signed_payload.encode(),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, sig)
# Flask example
from flask import Flask, request, abort
app = Flask(__name__)
@app.route("/webhook/fintrakker", methods=["POST"])
def handle_webhook():
sig = request.headers.get("X-Firmhound-Signature", "")
if not verify_signature(request.get_data(), sig):
abort(401)
data = request.get_json()
alert = data["data"]
print(f"Alert received: [{alert['severity'].upper()}] {alert['title']}")
return "", 200