INTEGRATIONS

Plug MonitorHQ into what you already use

Every change we detect can be pushed straight to your own systems the moment it happens - 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.

Example payload

{
  "event": "change_detected",
  "entity_name": "ACME PTY LTD",
  "acn": "123456789",
  "abn": null,
  "events": [
    {
      "title": "Document Lodged",
      "description": "Change of registered address",
      "event_type": "document_lodged",
      "effective_date": "2026-08-16",
      "source": "asic",
      "metadata": null
    }
  ],
  "detected_at": "2026-08-16T04:12:00+00:00"
}

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.

Sign 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.

View API Documentation