Building a Real-Time Company Monitor with Pounce Webhooks
Most competitive intelligence is backwards-looking. You find out about a new competitor, a prospect's pivot, or a market shift weeks or months after it happens. Pounce webhooks flip this: you can set up webhook endpoints to be notified when entities matching your filters are indexed or updated.
This guide shows you how to build a company monitoring system.
What Pounce Webhooks Support
- entity.created — A new company matching your filters was indexed
- entity.updated — An existing company's data was updated
Webhooks can be configured to notify you about entity changes. Events are dispatched as entities are indexed from official sources.
Architecture
Implementation
Step 1: Create a Webhook Endpoint
from fastapi import FastAPI, Request
import httpx
app = FastAPI()
SLACK_WEBHOOK = "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
@app.post("/webhooks/pounce")
async def handle_pounce_webhook(request: Request):
payload = await request.json()
event_type = payload.get("event")
company = payload.get("data", {})
if event_type == "entity.created":
message = (
f"New company registered: *{company.get('canonical_name')}*\n"
f"Country: {company.get('country')}\n"
f"Registry ID: {company.get('id')}\n"
f"Purpose: {company.get('description', 'N/A')}"
)
elif event_type == "entity.updated":
message = (
f"Company updated: *{company.get('canonical_name')}*\n"
f"Changes: {payload.get('changes', {})}"
)
else:
return {"status": "ignored"}
async with httpx.AsyncClient() as client:
await client.post(SLACK_WEBHOOK, json={"text": message})
return {"status": "processed"}Step 2: Register the Webhook with Pounce
import requests
headers = {"X-API-Key": "YOUR_POUNCE_API_KEY"}
webhook = requests.post(
"https://api.pounce.ch/api/v1/v2/webhooks",
headers=headers,
json={
"url": "https://your-domain.com/webhooks/pounce",
"events": ["entity.created", "entity.updated"],
"filters": {
"country": "CH",
"q": "software OR saas OR technology"
}
}
)
print(f"Webhook ID: {webhook.json()['id']}")Step 3: Enrich on Arrival
When a new company triggers your webhook, you probably want more than registry basics. Chain the webhook with an enrichment call:
@app.post("/webhooks/pounce")
async def handle_pounce_webhook(request: Request):
payload = await request.json()
if payload.get("event") != "entity.created":
return {"status": "skipped"}
entity_id = payload["data"]["id"]
async with httpx.AsyncClient() as client:
enriched = await client.get(
f"https://api.pounce.ch/api/v1/v2/entities/{entity_id}",
headers={"X-API-Key": "YOUR_KEY"}
)
company = enriched.json()
# Now you have the full profile: categories, description, employees
await save_to_database(company)
await notify_sales_team(company)
return {"status": "enriched"}Use Cases
Competitive Intelligence
Monitor new company registrations in your market segment. Know about new entrants early — before they even have a website.
Lead Generation
Set up webhooks for your ideal customer profile: specific countries, industries, company types. New prospects arrive in your CRM automatically.
M&A Monitoring
Track companies in acquisition targets. Get alerted when a target company changes its business purpose, address, or shareholder structure.
Compliance
Monitor the registration status of companies in your supply chain or partner network. Get notified if a company is dissolved or restructured.
Why Early Discovery Matters
| Discovery Method | Typical Delay |
|---|---|
| LinkedIn announcement | 2-4 weeks |
| Crunchbase listing | 1-3 months |
| Traditional B2B databases | 3-6 months |
| Google discovery | Variable |
| Pounce webhook | When indexed |
The companies that move fastest win. Webhooks automate your monitoring — no manual research, no periodic database refreshes.
Set up your first webhook with the free tier at pounce.ch. Full webhook documentation at pounce.ch/dashboard/docs.