dify icon indicating copy to clipboard operation
dify copied to clipboard

Webhook cannot receive content

Open AAEE86 opened this issue 1 month ago • 5 comments

Self Checks

  • [x] I have read the Contributing Guide and Language Policy.
  • [x] This is only for bug report, if you would like to ask a question, please head to Discussions.
  • [x] I have searched for existing issues search for existing 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.0

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

·Webhook cannot receive any content under non-debug URL. ·The webhook under the debug url can receive the content.

Image

✔️ Expected Behavior

Webhook receive content normally.

❌ Actual Behavior

Webhook cannot receive any content under non-debug URL.

AAEE86 avatar Nov 13 '25 09:11 AAEE86

The difference in webhook behavior between debug and non-debug URLs comes from how Dify handles workflow deployment and trigger status. In production (non-debug) mode, the webhook will only process content if there is a deployed workflow with an enabled AppTrigger for the webhook. If the workflow is not deployed, the trigger is disabled, or there is a configuration mismatch between the draft and deployed workflow, the webhook will not receive content and may return an empty payload. In debug mode, these checks are skipped, which is why content is received there.

To resolve this, make sure your workflow is deployed (not just in draft), the AppTrigger for the webhook is enabled, and the deployed workflow matches your draft configuration. Also, check that the HTTP method and content-type of your webhook requests match the deployed workflow's node configuration. If any of these are out of sync, production webhooks will not process incoming content as expected.
Reference

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

dosubot[bot] avatar Nov 13 '25 09:11 dosubot[bot]

The difference in webhook behavior between debug and non-debug URLs comes from how Dify handles workflow deployment and trigger status. In production (non-debug) mode, the webhook will only process content if there is a deployed workflow with an enabled AppTrigger for the webhook. If the workflow is not deployed, the trigger is disabled, or there is a configuration mismatch between the draft and deployed workflow, the webhook will not receive content and may return an empty payload. In debug mode, these checks are skipped, which is why content is received there.

To resolve this, make sure your workflow is deployed (not just in draft), the AppTrigger for the webhook is enabled, 和 the deployed workflow matches your draft configuration. Also, check that the HTTP method and content-type of your webhook requests match the deployed workflow's node configuration. If any of these are out of sync, production webhooks will not process incoming content as expected. 引用

To reply, just mention @dosu

How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

This issue occurs when the workflow has been published.

AAEE86 avatar Nov 13 '25 09:11 AAEE86

Please check the logs in the worker container, as the webhook URL operates on this container, while the debug URL operates on the api container.

hjlarry avatar Nov 13 '25 13:11 hjlarry

Please check the logs in the worker container, as the webhook URL operates on this container, while the debug URL operates on the api container.

I newly deployed the newly released version 1.10, and this issue still exists. Here are the worker logs; no errors or exceptions were found. You may need to deploy and test it yourself.

/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

/entrypoint.sh: line 7: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)

Running migrations

2025-11-14 00:55:24.296 INFO [MainThread] [utils.py:164] - NumExpr defaulting to 4 threads.

Preparing database migration...

Database migration skipped

Starting Celery worker with queues: dataset,priority_dataset,priority_pipeline,pipeline,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,workflow,schedule_poller,schedule_executor,triggered_workflow_dispatcher,trigger_refresh_executor

gRPC patched with gevent.

psycopg2 patched with gevent.

2025-11-14 00:55:38.883 INFO [MainThread] [utils.py:164] - NumExpr defaulting to 4 threads.

/app/api/.venv/lib/python3.12/site-packages/celery/platforms.py:841: SecurityWarning: You're running the worker with superuser privileges: this is

absolutely not recommended!



Please specify a different user using the --uid option.



User information: uid=0 euid=0 gid=0 egid=0



  warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(

 

 -------------- celery@98e7cfea5a50 v5.5.3 (immunity)

--- ***** ----- 

-- ******* ---- Linux-6.12.18-trim-x86_64-with-glibc2.36 2025-11-14 00:55:42

- *** --- * --- 

- ** ---------- [config]

- ** ---------- .> app:         app_factory:0x7fdd5179c290

- ** ---------- .> transport:   redis://:**@redis:6379/1

- ** ---------- .> results:     redis://:**@redis:6379/1

- *** --- * --- .> concurrency: 1 (gevent)

-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)

--- ***** ----- 

 -------------- [queues]

                .> app_deletion     exchange=app_deletion(direct) key=app_deletion

                .> conversation     exchange=conversation(direct) key=conversation

                .> dataset          exchange=dataset(direct) key=dataset

                .> mail             exchange=mail(direct) key=mail

                .> ops_trace        exchange=ops_trace(direct) key=ops_trace

                .> pipeline         exchange=pipeline(direct) key=pipeline

                .> plugin           exchange=plugin(direct) key=plugin

                .> priority_dataset exchange=priority_dataset(direct) key=priority_dataset

                .> priority_pipeline exchange=priority_pipeline(direct) key=priority_pipeline

                .> schedule_executor exchange=schedule_executor(direct) key=schedule_executor

                .> schedule_poller  exchange=schedule_poller(direct) key=schedule_poller

                .> trigger_refresh_executor exchange=trigger_refresh_executor(direct) key=trigger_refresh_executor

                .> triggered_workflow_dispatcher exchange=triggered_workflow_dispatcher(direct) key=triggered_workflow_dispatcher

                .> workflow         exchange=workflow(direct) key=workflow

                .> workflow_storage exchange=workflow_storage(direct) key=workflow_storage



[tasks]

  . schedule.check_upgradable_plugin_task.check_upgradable_plugin_task

  . schedule.trigger_provider_refresh_task.trigger_provider_refresh

  . schedule.workflow_schedule_task.poll_workflow_schedules

  . tasks.add_document_to_index_task.add_document_to_index_task

  . tasks.annotation.add_annotation_to_index_task.add_annotation_to_index_task

  . tasks.annotation.batch_import_annotations_task.batch_import_annotations_task

  . tasks.annotation.delete_annotation_index_task.delete_annotation_index_task

  . tasks.annotation.disable_annotation_reply_task.disable_annotation_reply_task

  . tasks.annotation.enable_annotation_reply_task.enable_annotation_reply_task

  . tasks.annotation.update_annotation_to_index_task.update_annotation_to_index_task

  . tasks.async_workflow_tasks.execute_workflow_professional

  . tasks.async_workflow_tasks.execute_workflow_sandbox

  . tasks.async_workflow_tasks.execute_workflow_team

  . tasks.batch_clean_document_task.batch_clean_document_task

  . tasks.batch_create_segment_to_index_task.batch_create_segment_to_index_task

  . tasks.clean_dataset_task.clean_dataset_task

  . tasks.clean_document_task.clean_document_task

  . tasks.clean_notion_document_task.clean_notion_document_task

  . tasks.deal_dataset_index_update_task.deal_dataset_index_update_task

  . tasks.deal_dataset_vector_index_task.deal_dataset_vector_index_task

  . tasks.delete_account_task.delete_account_task

  . tasks.delete_conversation_task.delete_conversation_related_data

  . tasks.delete_segment_from_index_task.delete_segment_from_index_task

  . tasks.disable_segment_from_index_task.disable_segment_from_index_task

  . tasks.disable_segments_from_index_task.disable_segments_from_index_task

  . tasks.document_indexing_sync_task.document_indexing_sync_task

  . tasks.document_indexing_task.document_indexing_task

  . tasks.document_indexing_task.normal_document_indexing_task

  . tasks.document_indexing_task.priority_document_indexing_task

  . tasks.document_indexing_update_task.document_indexing_update_task

  . tasks.duplicate_document_indexing_task.duplicate_document_indexing_task

  . tasks.enable_segments_to_index_task.enable_segments_to_index_task

  . tasks.mail_account_deletion_task.send_account_deletion_verification_code

  . tasks.mail_account_deletion_task.send_deletion_success_task

  . tasks.mail_change_mail_task.send_change_mail_completed_notification_task

  . tasks.mail_change_mail_task.send_change_mail_task

  . tasks.mail_email_code_login.send_email_code_login_mail_task

  . tasks.mail_inner_task.send_inner_email_task

  . tasks.mail_invite_member_task.send_invite_member_mail_task

  . tasks.mail_owner_transfer_task.send_new_owner_transfer_notify_email_task

  . tasks.mail_owner_transfer_task.send_old_owner_transfer_notify_email_task

  . tasks.mail_owner_transfer_task.send_owner_transfer_confirm_task

  . tasks.mail_register_task.send_email_register_mail_task

  . tasks.mail_register_task.send_email_register_mail_task_when_account_exist

  . tasks.mail_reset_password_task.send_reset_password_mail_task

  . tasks.mail_reset_password_task.send_reset_password_mail_task_when_account_not_exist

  . tasks.ops_trace_task.process_trace_tasks

  . tasks.process_tenant_plugin_autoupgrade_check_task.process_tenant_plugin_autoupgrade_check_task

  . tasks.rag_pipeline.priority_rag_pipeline_run_task.priority_rag_pipeline_run_task

  . tasks.rag_pipeline.rag_pipeline_run_task.rag_pipeline_run_task

  . tasks.recover_document_indexing_task.recover_document_indexing_task

  . tasks.remove_app_and_related_data_task.remove_app_and_related_data_task

  . tasks.remove_document_from_index_task.remove_document_from_index_task

  . tasks.retry_document_indexing_task.retry_document_indexing_task

  . tasks.sync_website_document_indexing_task.sync_website_document_indexing_task

  . tasks.trigger_processing_tasks.dispatch_triggered_workflows_async

  . tasks.trigger_subscription_refresh_tasks.trigger_subscription_refresh

  . tasks.workflow_execution_tasks.save_workflow_execution_task

  . tasks.workflow_node_execution_tasks.save_workflow_node_execution_task

  . tasks.workflow_schedule_tasks.run_schedule_trigger



2025-11-14 00:55:42.419 INFO [MainThread] [connection.py:22] - Connected to redis://:**@redis:6379/1

2025-11-14 00:55:42.424 INFO [MainThread] [mingle.py:40] - mingle: searching for neighbors

2025-11-14 00:55:43.442 INFO [MainThread] [mingle.py:49] - mingle: all alone

2025-11-14 00:55:43.461 INFO [Dummy-1] [pidbox.py:111] - pidbox: Connected to redis://:**@redis:6379/1.

2025-11-14 00:55:43.467 INFO [MainThread] [worker.py:176] - celery@98e7cfea5a50 ready.

2025-11-14 00:56:41.428 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[d08ffbf5-7047-4bd8-80f9-f7b396b18c0c] received

2025-11-14 00:56:41.571 INFO [Dummy-2] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[d08ffbf5-7047-4bd8-80f9-f7b396b18c0c] succeeded in 0.14187708400277188s: None

2025-11-14 00:57:41.429 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[6649b215-a857-40bd-b484-cd3c98238767] received

2025-11-14 00:57:41.469 INFO [Dummy-3] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[6649b215-a857-40bd-b484-cd3c98238767] succeeded in 0.03983317499660188s: None

2025-11-14 00:58:41.433 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[b521867b-622e-40e9-ac03-289777858dc2] received

2025-11-14 00:58:41.478 INFO [Dummy-4] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[b521867b-622e-40e9-ac03-289777858dc2] succeeded in 0.04434546000265982s: None

2025-11-14 00:59:41.430 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[9e2840a5-8c9a-4790-9109-e77a1bf4e81f] received

2025-11-14 00:59:41.470 INFO [Dummy-5] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[9e2840a5-8c9a-4790-9109-e77a1bf4e81f] succeeded in 0.03911367600085214s: None

2025-11-14 01:00:00.009 INFO [MainThread] [strategy.py:161] - Task schedule.check_upgradable_plugin_task.check_upgradable_plugin_task[fe616e2c-06ba-4ae3-8777-a99de15add77] received

2025-11-14 01:00:00.011 WARNING [Dummy-6] [log.py:232] - Start check upgradable plugin.

2025-11-14 01:00:00.018 WARNING [Dummy-6] [log.py:232] - Now seconds of day: 3570.0124502182007

2025-11-14 01:00:00.121 WARNING [Dummy-6] [log.py:232] - Total strategies: 0

2025-11-14 01:00:00.126 WARNING [Dummy-6] [log.py:232] - Checked upgradable plugin success latency: 0.11452049200306647

2025-11-14 01:00:00.156 INFO [Dummy-6] [trace.py:128] - Task schedule.check_upgradable_plugin_task.check_upgradable_plugin_task[fe616e2c-06ba-4ae3-8777-a99de15add77] succeeded in 0.14511492200108478s: None

2025-11-14 01:00:41.433 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[32b57a64-1283-4e27-80cb-10531902d014] received

2025-11-14 01:00:41.475 INFO [Dummy-7] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[32b57a64-1283-4e27-80cb-10531902d014] succeeded in 0.04046010199817829s: None

2025-11-14 01:01:41.433 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[0aff66a7-1c23-4f2c-a5e3-b4490104d505] received

2025-11-14 01:01:41.493 INFO [Dummy-8] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[0aff66a7-1c23-4f2c-a5e3-b4490104d505] succeeded in 0.05824625600507716s: None

2025-11-14 01:02:41.433 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[581ef87c-8e54-40fe-ac18-f96517424172] received

2025-11-14 01:02:41.488 INFO [Dummy-9] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[581ef87c-8e54-40fe-ac18-f96517424172] succeeded in 0.053698627998528536s: None

2025-11-14 01:02:58.023 INFO [MainThread] [strategy.py:161] - Task tasks.async_workflow_tasks.execute_workflow_team[3de4b783-4eaf-41e9-a7cf-7f2ee7a3efa5] received

2025-11-14 01:02:58.044 INFO [Dummy-10] [base.py:214] - Scheduler started

2025-11-14 01:02:58.271 INFO [Dummy-10] [trace.py:128] - Task tasks.async_workflow_tasks.execute_workflow_team[3de4b783-4eaf-41e9-a7cf-7f2ee7a3efa5] succeeded in 0.24807835499814246s: None

2025-11-14 01:03:41.429 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[5c311912-ec20-4a15-8550-1c1c90ae1a20] received

2025-11-14 01:03:41.462 INFO [Dummy-13] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[5c311912-ec20-4a15-8550-1c1c90ae1a20] succeeded in 0.032547642003919464s: None

2025-11-14 01:04:09.790 INFO [MainThread] [strategy.py:161] - Task tasks.async_workflow_tasks.execute_workflow_team[f0e7aaf3-4b69-4ba0-8c44-978fd58d0832] received

2025-11-14 01:04:09.889 INFO [Dummy-15] [trace.py:128] - Task tasks.async_workflow_tasks.execute_workflow_team[f0e7aaf3-4b69-4ba0-8c44-978fd58d0832] succeeded in 0.09799242900044192s: None

2025-11-14 01:04:41.433 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[af3194e3-3bac-43be-a8d8-24dbe458584b] received

2025-11-14 01:04:41.495 INFO [Dummy-17] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[af3194e3-3bac-43be-a8d8-24dbe458584b] succeeded in 0.06007173100078944s: None

2025-11-14 01:05:41.429 INFO [MainThread] [strategy.py:161] - Task schedule.workflow_schedule_task.poll_workflow_schedules[098dee82-324b-48e4-a7cb-ca1873376cc3] received

2025-11-14 01:05:41.457 INFO [Dummy-18] [trace.py:128] - Task schedule.workflow_schedule_task.poll_workflow_schedules[098dee82-324b-48e4-a7cb-ca1873376cc3] succeeded in 0.027586181000515353s: None

AAEE86 avatar Nov 14 '25 01:11 AAEE86

More testing is required before releasing a new version, especially for the official version.

AAEE86 avatar Nov 14 '25 01:11 AAEE86

@crazywoola Kindly merge the PR associated with this issue at the earliest convenience.

AAEE86 avatar Nov 17 '25 11:11 AAEE86