Plug MonitorHQ into what you already use
Every change we detect can be pushed straight to your own systems automatically - no polling, no manual checking.
Webhooks
Add a webhook URL in your team's settings and MonitorHQ will POST a JSON payload to it the moment a change is detected on any entity you're tracking. You can also send a test delivery at any time to confirm your endpoint is wired up correctly. Each payload carries your monitoring's uuid, a delivery_id, and a history_id per event that matches the history endpoint, so you can safely ignore a delivery you have already processed.
Example payload
{
"event": "change_detected",
"uuid": "123e4567-e89b-12d3-a456-426614174000",
"entity_name": "ACME PTY LTD",
"acn": "123456789",
"abn": null,
"entity_state": {
"entity_type": "PRV",
"acn_status": "REGD",
"abn_status": null,
"gst_registered": null,
"gst_date": null,
"business_names": [],
"is_terminal": false
},
"events": [
{
"history_id": 1042,
"title": "Document Lodged",
"description": "Change of registered address",
"event_type": "document_lodged",
"effective_date": "2026-08-16",
"source": "asic",
"initial": false,
"metadata": []
}
],
"detected_at": "2026-08-16T04:12:00+00:00",
"delivery_id": 5531
}
Verifying the signature
Every request carries an X-Monitorhq-Signature header in the form t={timestamp},v1={hmac}, computed as HMAC-SHA256 of {timestamp}.{body} using your webhook secret.
[$timestamp, $hmac] = sscanf(
$_SERVER['HTTP_X_MONITORHQ_SIGNATURE'],
't=%d,v1=%s'
);
$expected = hash_hmac(
'sha256',
$timestamp . '.' . $rawBody,
$webhookSecret
);
$valid = hash_equals($expected, $hmac);
const [, timestamp, hmac] = /^t=(\d+),v1=(.+)$/.exec(
req.headers['x-monitorhq-signature']
);
const expected = crypto
.createHmac('sha256', webhookSecret)
.update(`${timestamp}.${rawBody}`)
.digest('hex');
const valid = crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(hmac)
);
import hmac, hashlib, re
match = re.match(r"t=(\d+),v1=(.+)", request.headers["X-Monitorhq-Signature"])
timestamp, signature = match.group(1), match.group(2)
expected = hmac.new(
webhook_secret.encode(),
f"{timestamp}.{raw_body}".encode(),
hashlib.sha256,
).hexdigest()
valid = hmac.compare_digest(expected, signature)
Set up your webhook
Head to Team Settings → Webhooks once you're signed in.
Connect it anywhere
A webhook is just an HTTPS request, so MonitorHQ works with anything that can receive one - including these, with no code required on your side.
Zapier
Point us at a "Catch Hook" trigger to kick off any Zap when a change is detected.
Slack
Route alerts into a channel with a Slack incoming webhook or a small relay function.
Make
Use a Make webhook trigger to build multi-step scenarios off entity changes.
n8n
Self-hosting your automation? Wire us into an n8n Webhook node instead.
Need to pull data instead?
The REST API covers account info, subscription status, ACN/ABN validation, and full read/write access to your monitored entities.