Website Monitoring
Continuously re-evaluate onboarded businesses' websites and get notified of meaningful changes
The Website Agent can run in monitoring mode to continuously re-check onboarded businesses against their original snapshot. Instead of being a one-time onboarding check, the agent periodically re-scrapes the business's website and re-runs the same authenticity, legal, contact, domain, and reputation signals captured during initial verification.
When a meaningful change is detected — a new or removed legal page, updated contact details, a new social profile, a domain registrar change, etc. — AiPrise emits a WEBSITE_MONITORING_UPDATED event to the business profile's events_callback_url. The payload contains the current website section snapshot and a structured diff describing exactly what changed.
This lets you run perpetual KYB without polling, and react to changes in your customers' online presence as they happen.
When the callback fires
- Real changes only. No callback is delivered when no meaningful diff is detected against the previous snapshot. Customers will never receive a "nothing changed" ping.
- Self-contained snapshot.
website_infois the current state of the website section, not a patch. To compute "what's new", readdelta_from_previous_session.updates[*].pathand look up that path insidewebsite_info. - Idempotency / replay.
callback_event_idis the canonical id — store it to dedupe deliveries and to call AiPrise's callback-logs API for resends. - Customer correlation.
client_reference_idandclient_reference_dataare echoed back from the original profile so you can route to your internal entity without an extra lookup. - Sparse payloads. Any field with a
Nonevalue is omitted from the JSON. Code defensively with.get(...). - Headers / auth. Signing headers (HMAC signature + standard AiPrise headers) are added the same way as all other AiPrise event callbacks — nothing monitoring-specific.
Event payload
{
"business_profile_id": "bp_…",
"business_profile_event_type": "WEBSITE_MONITORING_UPDATED",
"verification_session_id": "vs_…",
"target_id": "<related_business_profile.target_id>",
"callback_event_id": "<uuid>",
"client_reference_id": "<your reference id>",
"client_reference_data": { /* whatever you originally attached */ },
"website_info": {
"input_url": "https://example.com",
"status": "COMPLETED",
"result": "PASS",
"section_id": "<uuid>",
"version": 2,
"business_name": "Acme Inc",
"report_summary": "…",
"status_reasons": [ { } ],
"warnings": [ { } ],
"report_checklist": [ { "section": "…", "result": "PASS", "message": "…" } ],
"company_profile": { },
"domain_info": { "registrar": "…", "created_on": "…" },
"webserver_info": { "ip": "…", "hosting_provider": "…" },
"website_content": { "title": "…", "description": "…", "screenshots": [], "policies": [] },
"traffic_info": { },
"contact_information": { "emails": [], "phone_numbers": [], "addresses": [] },
"industry_info": { "industry_codes": [], "industry_matches": [] },
"backlinks_information": { },
"online_review_information": { },
"external_trust_signals": [ { } ],
"social_media_profiles": [ { "platform": "…", "url": "…", "handle": "…" } ],
"network_intelligence": { },
"risk_indicators": [ { } ],
"marketplace_info": { },
"paymentflow_info": { },
"delta_from_previous_session": {
"summary": "<LLM-written, customer-readable description of what changed>",
"updates": [
{ "path": "company_profile.description", "operation": "UPDATED" },
{ "path": "contact_information.phone_numbers[0]", "operation": "ADDED" },
{ "path": "social_media_profiles[2]", "operation": "REMOVED" }
]
}
}
}Envelope fields
| Field | Type | Description |
|---|---|---|
business_profile_id | string | AiPrise business profile id the monitoring run is scoped to. |
business_profile_event_type | string | Always WEBSITE_MONITORING_UPDATED for this event. |
verification_session_id | string | The monitoring run's session id. |
target_id | string | target_id of the related business profile. |
callback_event_id | uuid | Canonical event id. Use for idempotency and to query the /callback-logs API for resends. |
client_reference_id | string | Echoed from the original profile for routing to your internal entity. |
client_reference_data | object | Echoed from the original profile — whatever metadata you originally attached. |
website_info
website_infoA full re-snapshot of the website section as of this monitoring run. Any subset of these may be present; absent fields are stripped from the JSON.
| Field | Description |
|---|---|
input_url | The website URL that was monitored. |
status | Run status (e.g., COMPLETED). |
result | Overall outcome — PASS, FAIL, UNKNOWN, etc. |
section_id | Stable id for this website section snapshot. |
version | Website section schema version. |
business_name | Detected business name. |
report_summary | High-level summary of the agent's findings. |
status_reasons | Structured reasons backing the result. |
warnings | Non-fatal warnings raised during the run. |
report_checklist | Per-section checklist: { section, result, message }. |
company_profile | AI-generated company profile (description, size, founding year, revenue, etc.). |
domain_info | Registrar, creation date, SSL validity, domain age. |
webserver_info | IP, hosting provider, server health. |
website_content | Title, description, screenshots, detected legal/policy pages. |
traffic_info | Visits, keywords, backlinks (where available). |
contact_information | Extracted emails, phone_numbers, addresses. |
industry_info | NAICS / MCC / SIC codes and industry matches. |
backlinks_information | Backlink metrics. |
online_review_information | Aggregated reviews and ratings across review sites. |
external_trust_signals | Third-party trust signals detected for the domain/business. |
social_media_profiles | Linked social profiles: { platform, url, handle }. |
network_intelligence | Network-level signals on the domain. |
risk_indicators | Risk indicators surfaced by the agent. |
marketplace_info | Marketplace presence signals. |
paymentflow_info | Payment flow signals detected on the website. |
delta_from_previous_session
delta_from_previous_sessionWhy this callback fired. Use this to drive customer-facing change summaries and to know which fields in the snapshot are new.
| Field | Type | Description |
|---|---|---|
summary | string | Customer-readable, AI-written description of what changed since the previous monitoring run. |
updates | array | Structured list of changes. Each item is { path, operation }. |
updates[].path | string | Dotted/indexed path into website_info that changed (e.g., social_media_profiles[2]). |
updates[].operation | string | One of UPDATED, ADDED, REMOVED. |
Updated 1 day ago
