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

  1. Go to Settings > Integrations
  2. Enter your webhook URL in the Webhook URL field
  3. 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
  • url points to the Changeflow version page

New Links (type: "link"):

  • Detected when monitoring sources for new links (e.g., news sites, blogs)
  • url points to the actual linked page (article, blog post, etc.)
  • diff_url points 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:

  1. Create a webhook trigger in Zapier/Make
  2. Add a Slack action to post a message
  3. Map the webhook fields to your Slack message:
    • Title: {{title}}
    • Text: {{description}}
    • Link: {{url}}

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

  1. In Zapier, create a new Zap
  2. Choose "Webhooks by Zapier" as the trigger
  3. Select "Catch Hook"
  4. Copy the webhook URL provided
  5. Paste it into Changeflow's webhook settings
  6. Test the connection
  7. Add actions (Slack, Email, Google Sheets, etc.)

Troubleshooting

Webhook Not Receiving Data

  1. Check the URL: Ensure it's correct and publicly accessible
  2. Test with webhook.site: Use a test URL to verify Changeflow is sending data
  3. Check firewall rules: Your server must accept POST requests from external sources
  4. 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: