Different "Webhook Start Events" trigger multiple process instances

Hi Camuda-Team,

We have deployed two simple BPMN flows within a single process application on Camunda SaaS 8.8.0-alpha4 (and tried also on Camunda 8.7 self managed):

image

Each BPMN flow has a Webhook Start Event with a unique Webhook ID.

  1. WebHookStartExample1 => webhook ID “Start1”
    image

  2. WebHookStartExample2 => webhook ID “Start2”
    image

Whether we call the endpoint “Start1” or “Start2”, Camunda always starts process instances for both process definitions!

I cannot see how something could have been configured incorrectly, and I cannot imagine that this is the expected behaviour!

Thanks for your support!
Bernd

Hi Bernd,

Thank you for the detailed report with screenshots and version information. This behavior is definitely not expected - each webhook start event with a unique webhook ID should only trigger its associated process definition.

Based on the official documentation, each HTTP Webhook connector with a unique Webhook ID should generate a distinct endpoint URL, and only calls to that specific URL should start the corresponding process instance.

Troubleshooting Steps

Let’s try to identify the root cause:

  1. Verify Webhook URLs: After deploying both processes, check the actual webhook URLs generated:

    • In Web Modeler, select each webhook start event
    • In the properties panel, verify that each shows a different webhook URL
    • Make sure you’re calling the correct URLs for each test
  2. Check Process Deployment:

    • Ensure both processes are properly deployed and active
    • Verify that the process IDs are different
    • Try redeploying both processes to ensure clean deployment state
  3. Webhook ID Verification:

    • Double-check that “Start1” and “Start2” are indeed different
    • Ensure there are no hidden characters or spaces
  4. Test Isolation:

    • Try deploying only one process at a time to see if the issue persists
    • Test with completely different webhook IDs (e.g., “webhook-test-1”, “webhook-test-2”)

Potential Bug Report

Since this behavior is not documented and contradicts the expected functionality, this appears to be a bug that should be reported. If the troubleshooting steps above don’t resolve the issue, I recommend filing a bug report at the Camunda GitHub repository.

When reporting, please include:

  • :white_check_mark: Camunda versions (8.7 self-managed, 8.8.0-alpha4 SaaS) - already provided
  • :white_check_mark: Clear reproduction steps - already provided
  • :white_check_mark: Expected vs actual behavior - already provided
  • The actual webhook URLs being called
  • BPMN files if possible

Could you try the troubleshooting steps above and let me know the results? This will help determine if it’s a configuration issue or confirm it as a bug that needs to be escalated.

Best regards,
Zee

created bug Different Webhook Start Events trigger same / multiple process instances · Issue #37048 · camunda/camunda · GitHub

#IMPORTANT UPDATE:

This happens, if the process definition of the second bpmn flow was created by “duplicating” the first bpmn flow.

Excellent discovery, Bernd! :dart:

This explains the issue perfectly. When you duplicate a BPMN process in Camunda Modeler, the hidden connector properties (including internal webhook identifiers) are also copied. Even though you changed the visible “Webhook ID” to “Start1” and “Start2”, there are likely hidden properties in the connector configuration that remained identical.

Root Cause

According to the connector templates documentation, inbound webhook connectors include hidden properties like inbound.context that may not be automatically regenerated when duplicating elements. This causes both webhook connectors to share the same internal identifiers, making them trigger both processes.

Solutions

Option 1: Clean Recreation (Recommended)

  1. Delete the duplicated process completely
  2. Create a new process from scratch (don’t duplicate)
  3. Add a fresh webhook start event with “Start2” as the Webhook ID
  4. Redeploy both processes

Option 2: Fix the Duplicated Process

  1. Delete the webhook start event from the duplicated process
  2. Add a completely new webhook start event (don’t copy/paste)
  3. Configure it with “Start2” as the Webhook ID
  4. Redeploy both processes

Option 3: Check BPMN XML (Advanced)

If you’re comfortable with XML, you can inspect the BPMN files and look for duplicate inbound.context or other hidden webhook properties that need to be made unique.

Prevention for Future

  • Always create new processes from scratch when you need different webhook endpoints
  • If you must duplicate, always replace (not just rename) any connector elements with fresh ones

This is a common gotcha with connector duplication. Thank you for sharing this insight - it will help other users avoid the same issue!

Could you try one of the solutions above and confirm it resolves the problem?

Best regards,
Zee

I was going to ask you to post both BPMN files to check for this.

A Webhook is a special type of Message Received Start event. If you start from “Process 1” and save as “Process 2” then the Message that they are looking for are the same one.

Hi @GotnOGuts,

Thanks for your reply! I have also seen this behaviour.
In my opinion, this is OK as long as the webhook ID is not changed.

However, I would have expected changing the webhook ID to clearly separate the initial webhook/process and the updated webhook/process, resulting in only one process instance being created:

  • based on initial process definition for initial webhook or
  • based on updated process definition on updated webhook

You’re absolutely right, Bernd! That’s exactly the expected behavior - changing the webhook ID should create separate, independent webhook endpoints.

@GotnOGuts makes a great point about the underlying mechanism. Webhook start events are indeed a special type of Message Start Event, and when you duplicate a process, the message name (which is often hidden) gets copied along with other properties.

The Core Issue

Even when you change the visible “Webhook ID” from “Start1” to “Start2”, the underlying message name that both processes are listening for likely remains the same. This causes both processes to respond to either webhook call.

Verification Steps

To confirm this theory, could you:

  1. Check the message names:

    • Select each webhook start event
    • In the properties panel, look for a “Message” or “Message Name” field
    • See if both processes show the same message name
  2. Share the BPMN files: As @GotnOGuts suggested, if you can share both BPMN XML files (or just the start event portions), we can identify the exact duplicate properties.

Expected Fix

The solution should be to ensure each webhook start event has:

  • :white_check_mark: Unique Webhook ID (you already did this)
  • :white_check_mark: Unique Message Name (likely the missing piece)
  • :white_check_mark: Any other unique internal identifiers

This is definitely a UX issue - changing the Webhook ID should automatically generate unique underlying identifiers to prevent exactly this confusion.

Would you be able to check the message names or share the BPMN files so we can pinpoint the exact duplicate property?

Best regards,
Zee

Hi @zee-bot,

thanks for the hint:

The messageEventDefinition is the same for both bpmn files:

<bpmn:messageEventDefinition id=“MessageEventDefinition_0p9uzk0” messageRef=“Message_0vq3esz” />

This is not visible in the WebModeler UI and it is not changed, when the webhook ID is changed.
Hence, the user has to export the BPMN file, change the message definition and import the file again.

Thanks!
Bernd

Bernd,
If the messageRef is the same between the two, even if the id is different, I would expect the same behaviour.

Think of it like yelling “Hey Bernd” down the hallway … Sometimes you get one person responding, sometimes you get more…

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.