webhook trigger return 404 #21159

Closed
opened 2026-02-21 20:11:12 -05:00 by yindo · 10 comments
Owner

Originally created by @lilimingdream on GitHub (Dec 18, 2025).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.10.1

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

webhook trigger access access 404

Image

I don't know if port 5001 should be mapped, currently Docker deployment is open to the public

✔️ Expected Behavior

Webhook trigger should return 200 instead of 404

Actual Behavior

No response

Originally created by @lilimingdream on GitHub (Dec 18, 2025). ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.10.1 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce webhook trigger access access 404 <img width="756" height="295" alt="Image" src="https://github.com/user-attachments/assets/8b5be119-cf8d-4e5c-813a-31a044f48414" /> I don't know if port 5001 should be mapped, currently Docker deployment is open to the public ### ✔️ Expected Behavior Webhook trigger should return 200 instead of 404 ### ❌ Actual Behavior _No response_
yindo added the 🐞 bug label 2026-02-21 20:11:12 -05:00
yindo closed this issue 2026-02-21 20:11:12 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Dec 18, 2025):

A 404 from the webhook trigger usually means the endpoint or webhook ID isn't valid or reachable. Here’s a checklist to resolve this:

  1. Make sure the webhook URL you’re calling matches the pattern /webhook/<webhook_id> and that <webhook_id> is active in your Dify workflow. If you recently changed the workflow, re-save or re-publish it to ensure the webhook URL is generated and synced—recent fixes addressed 404s caused by unsynchronized webhook nodes (details).

  2. For Docker: Dify’s API service listens on port 5001 internally, but you don’t always need to expose 5001 directly. If you’re using the default Docker Compose setup, NGINX proxies external requests (on ports 80/443) to the API on 5001. So, you should access the webhook via your public domain (or IP) and the standard HTTP/HTTPS port, not directly on 5001 unless you’ve explicitly mapped it (docker-compose reference, nginx config).

  3. If you want to access the API directly on port 5001 (for example, for plugins or direct API calls), you must add ports: - "5001:5001" to the api service in your docker-compose.yaml and restart your containers (example).

  4. Check your Dify API and NGINX container logs for errors when you trigger the webhook. This will help you see if the request is reaching the right service and endpoint.

If you follow these steps and still get a 404, double-check the exact webhook URL and that the workflow node is published and active. Let me know if you need help checking your Docker or workflow config.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 18, 2025): <!-- Answer --> A 404 from the webhook trigger usually means the endpoint or webhook ID isn't valid or reachable. Here’s a checklist to resolve this: 1. Make sure the webhook URL you’re calling matches the pattern `/webhook/<webhook_id>` and that `<webhook_id>` is active in your Dify workflow. If you recently changed the workflow, re-save or re-publish it to ensure the webhook URL is generated and synced—recent fixes addressed 404s caused by unsynchronized webhook nodes ([details](https://github.com/langgenius/dify/pull/28686)). 2. For Docker: Dify’s API service listens on port 5001 internally, but you don’t always need to expose 5001 directly. If you’re using the default Docker Compose setup, NGINX proxies external requests (on ports 80/443) to the API on 5001. So, you should access the webhook via your public domain (or IP) and the standard HTTP/HTTPS port, not directly on 5001 unless you’ve explicitly mapped it ([docker-compose reference](https://github.com/langgenius/dify/blob/fbbff7f5c253aafc545eb5c9657f3cd6bedcd1c7/docker/docker-compose.yaml#L40-L1100), [nginx config](https://github.com/langgenius/dify/blob/fbbff7f5c253aafc545eb5c9657f3cd6bedcd1c7/docker/nginx/conf.d/default.conf.template#L3-L58)). 3. If you want to access the API directly on port 5001 (for example, for plugins or direct API calls), you must add `ports: - "5001:5001"` to the `api` service in your `docker-compose.yaml` and restart your containers ([example](https://github.com/langgenius/dify-official-plugins/issues/1816)). 4. Check your Dify API and NGINX container logs for errors when you trigger the webhook. This will help you see if the request is reaching the right service and endpoint. If you follow these steps and still get a 404, double-check the exact webhook URL and that the workflow node is published and active. Let me know if you need help checking your Docker or workflow config. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/d571286e-c2ea-4ce7-85ab-e94bd1784132?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=A%20404%20from%20the%20webhook%20trigger%20usually%20means%20the%20endpoint%20or%20webhook%20ID%20isn%27t%20valid%20or%20reachable.%20Here%E2%80%99s%20a%20checklist%20to%20resolve%20this%3A%0A%0A1.%20Make%20sure%20the%20webhook%20URL%20you%E2%80%99re%20calling%20matches%20the%20pattern%20%60/webhook/%3Cwebhook_id%3E%60%20and%20that%20%60%3Cwebhook_id%3E%60%20is%20active%20in%20your%20Dify%20workflow.%20If%20you%20recently%20changed%20the%20workflow%2C%20re-save%20or%20re-publish%20it%20to%20ensure%20the%20webhook%20URL%20is%20generated%20and%20synced%E2%80%94recent%20fixes%20addressed%20404s%20caused%20by%20unsynchronized%20webhook%20nodes%20%28%5Bdetails%5D%28https%3A//github.com/langgenius/dify/pull/28686%29%29.%0A%0A2.%20For%20Docker%3A%20Dify%E2%80%99s%20API%20service%20listens%20on%20port%205001%20internally%2C%20but%20you%20don%E2%80%99t%20always%20need%20to%20expose%205001%20directly.%20If%20you%E2%80%99re%20using%20the%20default%20Docker%20Compose%20setup%2C%20NGINX%20proxies%20external%20requests%20%28on%20ports%2080/443%29%20to%20the%20API%20on%205001.%20So%2C%20you%20should%20access%20the%20webhook%20via%20your%20public%20domain%20%28or%20IP%29%20and%20the%20standard%20HTTP/HTTPS%20port%2C%20not%20directly%20on%205001%20unless%20you%E2%80%99ve%20explicitly%20mapped%20it%20%28%5Bdocker-compose%20reference%5D%28https%3A//github.com/langgenius/dify/blob/fbbff7f5c253aafc545eb5c9657f3cd6bedcd1c7/docker/docker-compose.yaml%23L40-L1100%29%2C%20%5Bnginx%20config%5D%28https%3A//github.com/langgenius/dify/blob/fbbff7f5c253aafc545eb5c9657f3cd6bedcd1c7/docker/nginx/conf.d/default.conf.template%23L3-L58%29%29.%0A%0A3.%20If%20you%20want%20to%20access%20the%20API%20directly%20on%20port%205001%20%28for%20example%2C%20for%20plugins%20or%20direct%20API%20calls%29%2C%20you%20must%20add%20%60ports%3A%20-%20%225001%3A5001%22%60%20to%20the%20%60api%60%20service%20in%20your%20%60docker-compose.yaml%60%20and%20restart%20your%20containers%20%28%5Bexample%5D%28https%3A//github.com/langgenius/dify-official-plugins/issues/1816%29%29.%0A%0A4.%20Check%20your%20Dify%20API%20and%20NGINX%20container%20logs%20for%20errors%20when%20you%20trigger%20the%20webhook.%20This%20will%20help%20you%20see%20if%20the%20request%20is%20reaching%20the%20right%20service%20and%20endpoint.%0A%0AIf%20you%20follow%20these%20steps%20and%20still%20get%20a%20404%2C%20double-check%20the%20exact%20webhook%20URL%20and%20that%20the%20workflow%20node%20is%20published%20and%20active.%20Let%20me%20know%20if%20you%20need%20help%20checking%20your%20Docker%20or%20workflow%20config.)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29909)
Author
Owner

@lilimingdream commented on GitHub (Dec 18, 2025):

I directly resolved the domain name to Nginx port 80/443,At the same time, I confirm that the webhook URL is the same

Image Image

this is log Nginx @dosu.

@lilimingdream commented on GitHub (Dec 18, 2025): I directly resolved the domain name to Nginx port 80/443,At the same time, I confirm that the webhook URL is the same <img width="1369" height="287" alt="Image" src="https://github.com/user-attachments/assets/caf4f5ab-ce32-4c4a-a8df-5c6a8c0fa1e6" /> <img width="1156" height="187" alt="Image" src="https://github.com/user-attachments/assets/283c01ca-54b1-4490-aeb0-f67eb202e5dd" /> this is log Nginx [@dosu](https://go.dosu.dev/dosubot).
Author
Owner

@dosubot[bot] commented on GitHub (Dec 18, 2025):

Your NGINX and Docker setup looks correct, but a 404 on /triggers/webhook almost always means the webhook trigger is not active or not found in the backend. Here’s what to check next:

  1. Make sure the webhook URL you’re calling matches the /triggers/webhook/<webhook_id> pattern exactly as shown in the Dify UI. If possible, paste the full URL here so we can confirm it matches the expected format.
  2. In the Dify UI, confirm that the workflow containing the webhook node is published (not just in draft) and that the webhook trigger is enabled. If you recently changed the node to a webhook, you must re-publish or synchronize the workflow and wait for backend processing before using the webhook URL—otherwise, the endpoint will return 404 until the backend syncs the new trigger (details).
  3. Check the logs in your worker container (not just the API container) right after triggering the webhook. In production, webhook requests are handled by the worker container, and any errors or missing triggers will be logged there (details).
  4. Make sure your database schema is up to date, especially the workflow_webhook_triggers table, as missing or outdated tables can cause 404 errors (details).

If you’ve confirmed all of the above and still get a 404, please share the exact webhook URL and any relevant logs from the worker container. This will help pinpoint whether the trigger is missing, disabled, or if there’s a backend sync issue.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 18, 2025): <!-- Answer --> Your NGINX and Docker setup looks correct, but a 404 on `/triggers/webhook` almost always means the webhook trigger is not active or not found in the backend. Here’s what to check next: 1. Make sure the webhook URL you’re calling matches the `/triggers/webhook/<webhook_id>` pattern exactly as shown in the Dify UI. If possible, paste the full URL here so we can confirm it matches the expected format. 2. In the Dify UI, confirm that the workflow containing the webhook node is published (not just in draft) and that the webhook trigger is enabled. If you recently changed the node to a webhook, you must re-publish or synchronize the workflow and wait for backend processing before using the webhook URL—otherwise, the endpoint will return 404 until the backend syncs the new trigger ([details](https://github.com/langgenius/dify/issues/28685#issuecomment-3579783866)). 3. Check the logs in your worker container (not just the API container) right after triggering the webhook. In production, webhook requests are handled by the worker container, and any errors or missing triggers will be logged there ([details](https://github.com/langgenius/dify/issues/28171)). 4. Make sure your database schema is up to date, especially the `workflow_webhook_triggers` table, as missing or outdated tables can cause 404 errors ([details](https://github.com/langgenius/dify/issues/28685#issuecomment-3579783866)). If you’ve confirmed all of the above and still get a 404, please share the exact webhook URL and any relevant logs from the worker container. This will help pinpoint whether the trigger is missing, disabled, or if there’s a backend sync issue. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/cdd68b64-4da8-4e4f-9da1-5d053146c933?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=Your%20NGINX%20and%20Docker%20setup%20looks%20correct%2C%20but%20a%20404%20on%20%60/triggers/webhook%60%20almost%20always%20means%20the%20webhook%20trigger%20is%20not%20active%20or%20not%20found%20in%20the%20backend.%20Here%E2%80%99s%20what%20to%20check%20next%3A%0A%0A1.%20Make%20sure%20the%20webhook%20URL%20you%E2%80%99re%20calling%20matches%20the%20%60/triggers/webhook/%3Cwebhook_id%3E%60%20pattern%20exactly%20as%20shown%20in%20the%20Dify%20UI.%20If%20possible%2C%20paste%20the%20full%20URL%20here%20so%20we%20can%20confirm%20it%20matches%20the%20expected%20format.%0A2.%20In%20the%20Dify%20UI%2C%20confirm%20that%20the%20workflow%20containing%20the%20webhook%20node%20is%20published%20%28not%20just%20in%20draft%29%20and%20that%20the%20webhook%20trigger%20is%20enabled.%20If%20you%20recently%20changed%20the%20node%20to%20a%20webhook%2C%20you%20must%20re-publish%20or%20synchronize%20the%20workflow%20and%20wait%20for%20backend%20processing%20before%20using%20the%20webhook%20URL%E2%80%94otherwise%2C%20the%20endpoint%20will%20return%20404%20until%20the%20backend%20syncs%20the%20new%20trigger%20%28%5Bdetails%5D%28https%3A//github.com/langgenius/dify/issues/28685%23issuecomment-3579783866%29%29.%0A3.%20Check%20the%20logs%20in%20your%20worker%20container%20%28not%20just%20the%20API%20container%29%20right%20after%20triggering%20the%20webhook.%20In%20production%2C%20webhook%20requests%20are%20handled%20by%20the%20worker%20container%2C%20and%20any%20errors%20or%20missing%20triggers%20will%20be%20logged%20there%20%28%5Bdetails%5D%28https%3A//github.com/langgenius/dify/issues/28171%29%29.%0A4.%20Make%20sure%20your%20database%20schema%20is%20up%20to%20date%2C%20especially%20the%20%60workflow_webhook_triggers%60%20table%2C%20as%20missing%20or%20outdated%20tables%20can%20cause%20404%20errors%20%28%5Bdetails%5D%28https%3A//github.com/langgenius/dify/issues/28685%23issuecomment-3579783866%29%29.%0A%0AIf%20you%E2%80%99ve%20confirmed%20all%20of%20the%20above%20and%20still%20get%20a%20404%2C%20please%20share%20the%20exact%20webhook%20URL%20and%20any%20relevant%20logs%20from%20the%20worker%20container.%20This%20will%20help%20pinpoint%20whether%20the%20trigger%20is%20missing%2C%20disabled%2C%20or%20if%20there%E2%80%99s%20a%20backend%20sync%20issue.)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29909)
Author
Owner

@lilimingdream commented on GitHub (Dec 18, 2025):

this is my url https://xxxxxx/triggers/webhook/8e3dcHHPP3Pleq6C4eNZdbfW
The format is fine ,but When I visit, it will 404 I also ensure that my application has been released @dosu.

if access 5001 is No problem

@lilimingdream commented on GitHub (Dec 18, 2025): this is my url https://xxxxxx/triggers/webhook/8e3dcHHPP3Pleq6C4eNZdbfW The format is fine ,but When I visit, it will 404 I also ensure that my application has been released [@dosu](https://go.dosu.dev/dosubot). if access 5001 is No problem
Author
Owner

@dosubot[bot] commented on GitHub (Dec 18, 2025):

A 404 on your webhook URL usually means the backend can't find an active trigger for that ID. Here are the most likely causes and what to check:

  • Make sure your workflow is published (not just in draft) and the webhook trigger is enabled. If you recently changed the node to a webhook, re-publish and wait a minute for backend sync—otherwise, the endpoint will return 404 until the backend finishes processing. This is a known timing issue in Dify's architecture (details).
  • The production webhook endpoint only works if the workflow is deployed and the AppTrigger for the webhook is ENABLED. If the trigger is missing or disabled, you'll get a 404 (code reference).
  • If you duplicated workflows or reused node IDs, older Dify versions (before late Nov 2025) had a cache bug that could cause 404s due to cache key collisions. Upgrading to a version with this fix resolves it.
  • Always check the worker container logs right after triggering the webhook—errors or missing trigger messages will show up there (source).
  • Make sure you're using the correct HTTP method (usually POST, not GET) as configured in your workflow node (reference).

If all of the above look correct, try creating a new workflow with a new webhook trigger to see if the problem is specific to the current workflow or a general backend sync issue. If you still get 404, check your database's workflow_webhook_triggers table to confirm the webhook_id exists and is enabled.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Dec 18, 2025): <!-- Answer --> A 404 on your webhook URL usually means the backend can't find an active trigger for that ID. Here are the most likely causes and what to check: - Make sure your workflow is published (not just in draft) and the webhook trigger is enabled. If you recently changed the node to a webhook, re-publish and wait a minute for backend sync—otherwise, the endpoint will return 404 until the backend finishes processing. This is a known timing issue in Dify's architecture ([details](https://github.com/langgenius/dify/issues/28685)). - The production webhook endpoint only works if the workflow is deployed and the AppTrigger for the webhook is ENABLED. If the trigger is missing or disabled, you'll get a 404 ([code reference](https://github.com/langgenius/dify/blob/fbbff7f5c253aafc545eb5c9657f3cd6bedcd1c7/api/services/trigger/webhook_service.py#L48-L921)). - If you duplicated workflows or reused node IDs, older Dify versions (before late Nov 2025) had a cache bug that could cause 404s due to cache key collisions. Upgrading to a version with [this fix](https://github.com/langgenius/dify/pull/28243) resolves it. - Always check the worker container logs right after triggering the webhook—errors or missing trigger messages will show up there ([source](https://github.com/langgenius/dify/issues/28171)). - Make sure you're using the correct HTTP method (usually POST, not GET) as configured in your workflow node ([reference](https://github.com/langgenius/dify/issues/22383)). If all of the above look correct, try creating a new workflow with a new webhook trigger to see if the problem is specific to the current workflow or a general backend sync issue. If you still get 404, check your database's workflow_webhook_triggers table to confirm the webhook_id exists and is enabled. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/2a144ab9-e0ed-46f6-9ed3-870298aa430f?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=A%20404%20on%20your%20webhook%20URL%20usually%20means%20the%20backend%20can%27t%20find%20an%20active%20trigger%20for%20that%20ID.%20Here%20are%20the%20most%20likely%20causes%20and%20what%20to%20check%3A%0A%0A-%20Make%20sure%20your%20workflow%20is%20published%20%28not%20just%20in%20draft%29%20and%20the%20webhook%20trigger%20is%20enabled.%20If%20you%20recently%20changed%20the%20node%20to%20a%20webhook%2C%20re-publish%20and%20wait%20a%20minute%20for%20backend%20sync%E2%80%94otherwise%2C%20the%20endpoint%20will%20return%20404%20until%20the%20backend%20finishes%20processing.%20This%20is%20a%20known%20timing%20issue%20in%20Dify%27s%20architecture%20%28%5Bdetails%5D%28https%3A//github.com/langgenius/dify/issues/28685%29%29.%0A-%20The%20production%20webhook%20endpoint%20only%20works%20if%20the%20workflow%20is%20deployed%20and%20the%20AppTrigger%20for%20the%20webhook%20is%20ENABLED.%20If%20the%20trigger%20is%20missing%20or%20disabled%2C%20you%27ll%20get%20a%20404%20%28%5Bcode%20reference%5D%28https%3A//github.com/langgenius/dify/blob/fbbff7f5c253aafc545eb5c9657f3cd6bedcd1c7/api/services/trigger/webhook_service.py%23L48-L921%29%29.%0A-%20If%20you%20duplicated%20workflows%20or%20reused%20node%20IDs%2C%20older%20Dify%20versions%20%28before%20late%20Nov%202025%29%20had%20a%20cache%20bug%20that%20could%20cause%20404s%20due%20to%20cache%20key%20collisions.%20Upgrading%20to%20a%20version%20with%20%5Bthis%20fix%5D%28https%3A//github.com/langgenius/dify/pull/28243%29%20resolves%20it.%0A-%20Always%20check%20the%20worker%20container%20logs%20right%20after%20triggering%20the%20webhook%E2%80%94errors%20or%20missing%20trigger%20messages%20will%20show%20up%20there%20%28%5Bsource%5D%28https%3A//github.com/langgenius/dify/issues/28171%29%29.%0A-%20Make%20sure%20you%27re%20using%20the%20correct%20HTTP%20method%20%28usually%20POST%2C%20not%20GET%29%20as%20configured%20in%20your%20workflow%20node%20%28%5Breference%5D%28https%3A//github.com/langgenius/dify/issues/22383%29%29.%0A%0AIf%20all%20of%20the%20above%20look%20correct%2C%20try%20creating%20a%20new%20workflow%20with%20a%20new%20webhook%20trigger%20to%20see%20if%20the%20problem%20is%20specific%20to%20the%20current%20workflow%20or%20a%20general%20backend%20sync%20issue.%20If%20you%20still%20get%20404%2C%20check%20your%20database%27s%20workflow_webhook_triggers%20table%20to%20confirm%20the%20webhook_id%20exists%20and%20is%20enabled.)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify/issues/29909)
Author
Owner

@fatelei commented on GitHub (Dec 18, 2025):

this is my url https://dify.jlcpcb.com/triggers/webhook/8e3dcHHPP3Pleq6C4eNZdbfW The format is fine ,but When I visit, it will 404 I also ensure that my application has been released @dosu.

if access 5001 is No problem

how about curl 5001 to check the resposne is 404 or not

@fatelei commented on GitHub (Dec 18, 2025): > this is my url https://dify.jlcpcb.com/triggers/webhook/8e3dcHHPP3Pleq6C4eNZdbfW The format is fine ,but When I visit, it will 404 I also ensure that my application has been released [@dosu](https://go.dosu.dev/dosubot). > > if access 5001 is No problem how about curl 5001 to check the resposne is 404 or not
Author
Owner

@lilimingdream commented on GitHub (Dec 18, 2025):

After I updated version 1.11.1 The problem still exists

Image Image Image

After I entered the container, it was normal,But using domain name access will return a 404 @fatelei

@lilimingdream commented on GitHub (Dec 18, 2025): After I updated version 1.11.1 The problem still exists <img width="1520" height="477" alt="Image" src="https://github.com/user-attachments/assets/321efd20-6f2e-4f28-9db0-2166d4498f31" /> <img width="1466" height="301" alt="Image" src="https://github.com/user-attachments/assets/1118a2fb-c490-4b80-94d8-79fbd873a5c4" /> <img width="1200" height="299" alt="Image" src="https://github.com/user-attachments/assets/d576b0c3-2422-400b-8469-6c661d29b37b" /> After I entered the container, it was normal,But using domain name access will return a 404 @fatelei
Author
Owner

@kurokobo commented on GitHub (Dec 18, 2025):

Perhaps you should update this file to the latest one, then restart nginx container.
https://github.com/langgenius/dify/blob/main/docker/nginx/conf.d/default.conf.template

@kurokobo commented on GitHub (Dec 18, 2025): Perhaps you should update this file to the latest one, then restart nginx container. https://github.com/langgenius/dify/blob/main/docker/nginx/conf.d/default.conf.template
Author
Owner

@kurokobo commented on GitHub (Dec 18, 2025):

From the screenshot, we can see that the 404 response body contains snippets from Next.js.
Therefore, it’s likely that the request to /triggers is being routed to the web container instead of the api container. Typically, this happens due to insufficient route configuration in the Nginx config file.

@kurokobo commented on GitHub (Dec 18, 2025): From the screenshot, we can see that the 404 response body contains snippets from Next.js. Therefore, it’s likely that the request to /triggers is being routed to the web container instead of the api container. Typically, this happens due to insufficient route configuration in the Nginx config file.
Author
Owner

@lilimingdream commented on GitHub (Dec 18, 2025):

I have already solved my problem, thank you @kurokobo

@lilimingdream commented on GitHub (Dec 18, 2025): I have already solved my problem, thank you @kurokobo
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#21159