Webhooks allow you to receive real-time notifications when Changeflow detects changes. Instead of relying on email, you can push change data directly to your own systems, automation tools, or third-party services like Zapier, Make, or n8n.
What is a Webhook?
A webhook is an HTTP callback - when something happens in Changeflow (like a change being detected), we send a POST request to a URL you specify. Your server or automation tool receives the data and can take action immediately.
Common uses for webhooks:
- Push notifications to Slack, Teams, or Discord
- Update a database or dashboard
- Trigger automated workflows
- Send alerts to custom systems
- Integrate with CRM or project management tools
Setting Up a Webhook
Step 1: Get Your Webhook URL
First, you need a URL that can receive HTTP POST requests. This could be:
- Zapier: Create a Zap with "Webhooks by Zapier" as the trigger
- Make (Integromat): Use a "Webhook" module as the trigger
- n8n: Add a "Webhook" node
- Your own server: An endpoint you've built to receive webhooks
- Testing: Use webhook.site to test and inspect payloads
Step 2: Configure in Changeflow
- Go to Settings > Integrations
- Enter your webhook URL in the Webhook URL field
- Click Save Webhook
Changeflow will send a test payload to verify your URL works. If successful, your webhook is active.
Webhook Payload
When a change is detected, Changeflow sends a JSON array containing one or more items. This is most commonly used for new link detection, where multiple links may be discovered at once:
[
{
"type": "link",
"title": "OpenAI Announces GPT-5 with Revolutionary Reasoning",
"description": "OpenAI has unveiled GPT-5, featuring breakthrough reasoning capabilities and multimodal understanding that surpasses previous models.",
"thumbnail": "https://techcrunch.com/images/gpt5-announcement.jpg",
"diff_image": "https://cdn.changeflow.com/diffs/abc123-789.png",
"diff_url": "https://changeflow.com/tracks/abc123/versions/789",
"url": "https://techcrunch.com/2025/01/15/openai-gpt5-announcement",
"track_id": "abc123",
"version_id": 789,
"change_id": "l_101",
"source_name": "TechCrunch",
"source_url": "https://techcrunch.com/category/artificial-intelligence",
"timestamp": "2025-01-15T14:30:00Z"
},
{
"type": "link",
"title": "Google DeepMind Releases Gemini 3.0",
"description": "Google's latest AI model brings significant improvements to code generation and scientific reasoning tasks.",
"thumbnail": "https://techcrunch.com/images/gemini-3.jpg",
"diff_image": "https://cdn.changeflow.com/diffs/abc123-789.png",
"diff_url": "https://changeflow.com/tracks/abc123/versions/789",
"url": "https://techcrunch.com/2025/01/15/google-gemini-3-release",
"track_id": "abc123",
"version_id": 789,
"change_id": "l_102",
"source_name": "TechCrunch",
"source_url": "https://techcrunch.com/category/artificial-intelligence",
"timestamp": "2025-01-15T14:25:00Z"
},
{
"type": "link",
"title": "Anthropic Expands Claude's Context Window to 1M Tokens",
"description": "Claude can now process entire codebases and lengthy documents in a single conversation.",
"thumbnail": "https://techcrunch.com/images/claude-update.jpg",
"diff_image": "https://cdn.changeflow.com/diffs/abc123-789.png",
"diff_url": "https://changeflow.com/tracks/abc123/versions/789",
"url": "https://techcrunch.com/2025/01/15/anthropic-claude-1m-context",
"track_id": "abc123",
"version_id": 789,
"change_id": "l_103",
"source_name": "TechCrunch",
"source_url": "https://techcrunch.com/category/artificial-intelligence",
"timestamp": "2025-01-15T14:20:00Z"
}
]
For page change detection, the payload includes diff images:
[
{
"type": "change",
"title": "Competitor Pricing Update",
"description": "Enterprise plan increased from $99 to $149/month",
"thumbnail": "https://cdn.changeflow.com/screenshots/abc123.png",
"diff_image": "https://cdn.changeflow.com/diffs/abc123.png",
"diff_url": "https://changeflow.com/tracks/def456/versions/456",
"url": "https://changeflow.com/tracks/def456/versions/456",
"track_id": "def456",
"version_id": 456,
"change_id": "v_456",
"source_name": "Competitor Pricing Page",
"source_url": "https://competitor.com/pricing",
"timestamp": "2025-01-15T14:30:00Z"
}
]
Payload Fields
| Field | Description |
|---|---|
type |
Either change (page change) or link (new link detected) |
title |
Short summary of the change or link |
description |
Summary of what changed |
thumbnail |
URL to a thumbnail image of the change |
diff_image |
URL to the highlighted diff image showing where changes occurred |
diff_url |
Link to view the change in Changeflow |
url |
For changes: same as diff_url. For links: the actual link URL |
track_id |
Unique identifier for the source being monitored |
version_id |
Numeric ID of the version containing this change |
change_id |
Unique identifier for this change (v_ prefix for versions, l_ prefix for links) |
source_name |
Name of the monitored source |
source_url |
URL of the page being monitored |
timestamp |
ISO 8601 timestamp of when the change was detected |
Change Types
Page Changes (type: "change"):
- Detected when content on a monitored page changes
- Includes diff images showing what changed
-
urlpoints to the Changeflow version page
New Links (type: "link"):
- Detected when monitoring sources for new links (e.g., news sites, blogs)
-
urlpoints to the actual linked page (article, blog post, etc.) -
diff_urlpoints to the Changeflow version page
Webhook Delivery
Timing
Webhooks are sent immediately after a change is processed. For most changes, this is within a few seconds of detection.
Retries
If your endpoint doesn't respond with a success status (HTTP 2xx or 3xx), Changeflow will retry the webhook up to 3 times with increasing delays.
Timeout
Webhook requests have a 60-second timeout. Ensure your endpoint responds promptly - you can always process the data asynchronously after acknowledging receipt.
Integration Examples
Slack Notification
Using Zapier or Make, you can easily push changes to Slack:
- Create a webhook trigger in Zapier/Make
- Add a Slack action to post a message
- Map the webhook fields to your Slack message:
- Title:
{{title}} - Text:
{{description}} - Link:
{{url}}
- Title:
Custom Dashboard
If you're building a custom dashboard:
// Express.js example
app.post('/webhook/changeflow', (req, res) => {
// Acknowledge immediately
res.status(200).send('OK');
// Process changes
const changes = req.body;
changes.forEach(change => {
console.log(`Change detected: ${change.title}`);
// Save to database, send notifications, etc.
});
});
Zapier Integration
- In Zapier, create a new Zap
- Choose "Webhooks by Zapier" as the trigger
- Select "Catch Hook"
- Copy the webhook URL provided
- Paste it into Changeflow's webhook settings
- Test the connection
- Add actions (Slack, Email, Google Sheets, etc.)
Troubleshooting
Webhook Not Receiving Data
- Check the URL: Ensure it's correct and publicly accessible
- Test with webhook.site: Use a test URL to verify Changeflow is sending data
- Check firewall rules: Your server must accept POST requests from external sources
- Verify HTTPS: Your endpoint should use HTTPS
Missing Webhooks
- Webhooks are only sent for new changes, not historical data
- Ensure your source is actively being monitored and detecting changes
- Check that the source isn't paused
Invalid Payload Errors
If your automation tool rejects the payload:
- Ensure it accepts JSON arrays (not just objects)
- Check that your tool can handle null values for optional fields
Plan Requirements
Webhooks are available on Business plans and above. If you don't see the webhook option in your integrations page, you may need to upgrade your plan.
Getting Help
If you're having trouble with webhooks:
- Email: [email protected]
- Testing: Use webhook.site to inspect payloads
- Integration help: We can assist with setting up specific integrations