Webhook project error

Project webhooks don’t trigger the webservice.

The error in the logs is:

Error while handling message 1914c320-8b2a-40d5-b680-a55579c4383e, reason_poisoned=User does not exist [user id: 0], topic_poisoned=project.updated, handler_poisoned=project.updated.webhook.listener, subscriber_poisoned=gochannel.GoChannel, payload={“project”:{“id”:7,“title”:“aaabbbcccdddccczzz”,“description”:“”,“identifier”:“”,“hex_color”:“”,“parent_project_id”:4,“owner”:{“id”:1,“name”:“–redacted–”,“username”:“–redacted–”,“created”:“2025-01-24T09:14:40Z”,“updated”:“2025-01-24T19:55:50Z”},“is_archived”:false,“background_information”:null,“background_blur_hash”:“”,“is_favorite”:false,“subscription”:{“id”:4,“entity”:“project”,“entity_id”:7,“created”:“2025-01-29T17:16:31Z”},“position”:458752,“views”:[{“id”:25,“title”:“List”,“project_id”:7,“view_kind”:“list”,“filter”:“done = false”,“position”:100,“bucket_configuration_mode”:“none”,“bucket_configuration”:,“default_bucket_id”:0,“done_bucket_id”:0,“updated”:“2025-01-29T17:15:01Z”,“created”:“2025-01-29T17:15:01Z”},{“id”:26,“title”:“Gantt”,“project_id”:7,“view_kind”:“gantt”,“filter”:“”,“position”:200,“bucket_configuration_mode”:“none”,“bucket_configuration”:,“default_bucket_id”:0,“done_bucket_id”:0,“updated”:“2025-01-29T17:15:01Z”,“created”:“2025-01-29T17:15:01Z”},{“id”:27,“title”:“Table”,“project_id”:7,“view_kind”:“table”,“filter”:“”,“position”:300,“bucket_configuration_mode”:“none”,“bucket_configuration”:,“default_bucket_id”:0,“done_bucket_id”:0,“updated”:“2025-01-29T17:15:01Z”,“created”:“2025-01-29T17:15:01Z”},{“id”:28,“title”:“Kanban”,“project_id”:7,“view_kind”:“kanban”,“filter”:“”,“position”:400,“bucket_configuration_mode”:“manual”,“bucket_configuration”:,“default_bucket_id”:0,“done_bucket_id”:0,“updated”:“2025-01-29T17:15:01Z”,“created”:“2025-01-29T17:15:01Z”}],“created”:“2025-01-29T17:15:01Z”,“updated”:“2025-01-29T17:22:43.266407849Z”},“doer”:{“id”:1,“name”:“–redacted–”,“username”:“–redacted–”,“email”:“–redacted–”,“created”:“0001-01-01T00:00:00Z”,“updated”:“0001-01-01T00:00:00Z”}}

Other webhooks work fine.

Version: v0.24.6
Docker Container

Does this work with the latest unstable build or on the demo?

Let me upgrade to the unstable version now.

Same error in
Version: v0.24.1-794-4532cdfa00

In unstable I’m unable to add attachments to tasks in the UI.
I had to roll back.
Do you want me to create a new issue or are you aware?

What error did you see?

I’m aware of an error where the dropzone does not appear under certain circumstances, but uploading via the upload button works.

I’ll look into the issue about the webhook.

1 Like

As I rolled back I can’t tell exactly anymore, but I saw an error message box appear in the bottom left saying something like You can’t upload files to this task.

Can you reproduce it on the demo? Without the error message or steps to reproduce it’ll be hard to fix.

Where can I see errors in the demo? Sorry, I’ve not used it before.
The message does not reach the webservice (N8N webhook).

It seems like your attempt to reproduce it was successful: Sentry

I’ll take a look.

1 Like

I’ve just pushed a potential fix for this in 4887f7fe60, please check with the next unstable build (should be ready for deployment in ~45min, also on try).

Hi. I’m facing the same issue, with regards to webhooks not working.
Error:

ERROR ▶ 1f183 Error while handling message b5fc8b97-b307-468b-9a06-f8988a7b3289, reason_poisoned=User does not exist [user id: 0
], topic_poisoned=project.updated, handler_poisoned=project.updated.webhook.listener, subscriber_poisoned=gochannel.GoChannel, payload={
...
}

I’m on Vikunja v0.24.6

Does it work with an unstable build?

Don’t know.

Also, in my env (Vikunja installed via Cloudron), i don’t have the freedom to switch over to unstable builds. They only release packages based on stable builds.


@kolaente

Update:

The concerned (faulty) event seems to be project.updated.

Then you’ll need to wait for the next release.

When is that expected?

When it’s done - some time in the next few weeks. There are still a few
things to iron out.

I’m getting this error as well on a fresh Vikunja unstable Docker container. Version info from “About” below:

  • Frontend version: dev
  • API version: v0.24.1-1437-adc1ecae

When a webhook is triggered by an event, I get this error: Could not load project for webhook 10: User does not exist [user id: 0]

I’m not familiar with Go, but could the issue be from commit b230bb9?

if err != nil && !user.IsErrUserDoesNotExist(err) {
-	return err
+	return nil, 0, err
}

The changes in the commit should not cause that error.

Can you enable database debug logs and paste the queries from right before the error message here?

1 Like

I updated my Docker compose to show all debug logs.

services:
  vikunja:
    image: vikunja/vikunja:unstable
    environment:
      VIKUNJA_LOG_LEVEL: DEBUG
      VIKUNJA_LOG_DATABASE: stdout
      VIKUNJA_LOG_DATABASELEVEL: DEBUG
      ...
  db:
    image: mariadb:10
    ...

Below is the resulting log from editing a task when a webhook for task.updated is present. The error occurs on the 4th line from the bottom.

Log
vikunja-1  | 2025-06-24T13:02:44Z: WEB  ▶ 10.0.0.145  GET 200 /api/v1/user 2.26303ms - Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0
vikunja-1  | 2025-06-24T13:02:49.668800443Z: INFO       ▶ [DATABASE] 11f [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE `id`=? LIMIT 1 [1050] - 1.390001ms
vikunja-1  | 2025-06-24T13:02:49.670711265Z: INFO       ▶ [DATABASE] 120 [SQL] SELECT `id`, `title`, `description`, `identifier`, `hex_color`, `owner_id`, `parent_project_id`, `is_archived`, `background_file_id`, `background_blur_hash`, `position`, `created`, `updated` FROM `projects` WHERE id=? ORDER BY position LIMIT 1 [7] - 1.426603ms
vikunja-1  | 2025-06-24T13:02:49.672636851Z: INFO       ▶ [DATABASE] 121 [SQL] SELECT `id`, `title`, `description`, `identifier`, `hex_color`, `owner_id`, `parent_project_id`, `is_archived`, `background_file_id`, `background_blur_hash`, `position`, `created`, `updated` FROM `projects` WHERE id=? ORDER BY position LIMIT 1 [7] - 1.483206ms
vikunja-1  | 2025-06-24T13:02:49.674297538Z: INFO       ▶ [DATABASE] 122 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE `id`=? LIMIT 1 [1050] - 1.212503ms
vikunja-1  | 2025-06-24T13:02:49.6760044Z: INFO ▶ [DATABASE] 123 [SQL] SELECT `id`, `task_id`, `reminder`, `created`, `relative_period`, `relative_to` FROM `task_reminders` WHERE `task_id` IN (?) ORDER BY reminder asc [1050] - 1.19168ms
vikunja-1  | 2025-06-24T13:02:49.678234486Z: INFO       ▶ [DATABASE] 124 [SQL] SELECT task_id, users.* FROM `task_assignees` INNER JOIN `users` ON task_assignees.user_id = users.id WHERE `task_id` IN (?) [1050] - 1.945074ms
vikunja-1  | 2025-06-24T13:02:49.6799217Z: INFO ▶ [DATABASE] 125 [SQL] DELETE FROM `task_reminders` WHERE (task_id = ?) [1050] - 1.136815ms
vikunja-1  | 2025-06-24T13:02:49.683542959Z: INFO       ▶ [DATABASE] 126 [SQL] UPDATE `projects` SET `updated` = ? WHERE `id`=? [2025-06-24 13:02:49 7] - 3.39585ms
vikunja-1  | 2025-06-24T13:02:49.685001156Z: INFO       ▶ [DATABASE] 127 [SQL] SELECT `entity_id`, `user_id`, `kind` FROM `favorites` WHERE (entity_id = ? AND user_id = ? AND kind = ?) LIMIT 1 [1050 1 1] - 1.144011ms
vikunja-1  | 2025-06-24T13:02:49.688483761Z: INFO       ▶ [DATABASE] 128 [SQL] UPDATE `tasks` SET `title` = ?, `description` = ?, `done` = ?, `done_at` = ?, `due_date` = ?, `project_id` = ?, `repeat_after` = ?, `repeat_mode` = ?, `priority` = ?, `start_date` = ?, `end_date` = ?, `hex_color` = ?, `percent_done` = ?, `cover_image_attachment_id` = ?, `updated` = ? WHERE `id`=? [Test Task <p>Test description</p> false <nil> <nil> 7 0 0 0 <nil> <nil>  0 0 2025-06-24 13:02:49 1050] - 3.112755ms
vikunja-1  | 2025-06-24T13:02:49.690025803Z: INFO       ▶ [DATABASE] 129 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE `id`=? LIMIT 1 [1050] - 1.294861ms
vikunja-1  | 2025-06-24T13:02:49.69167612Z: INFO        ▶ [DATABASE] 135 [SQL] UPDATE `projects` SET `updated` = ? WHERE `id`=? [2025-06-24 13:02:49 7] - 1.222569ms
vikunja-1  | 2025-06-24T13:02:49Z: WEB  ▶ 10.0.0.145  POST 200 /api/v1/tasks/1050 25.415089ms - Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0
vikunja-1  | 2025-06-24T13:02:49.694339343Z: INFO       ▶ [DATABASE] 136 [SQL] SELECT `id`, `title`, `project_id`, `view_kind`, `filter`, `position`, `bucket_configuration_mode`, `bucket_configuration`, `default_bucket_id`, `done_bucket_id`, `updated`, `created` FROM `project_views` WHERE (project_id < 0 and view_kind = ? and bucket_configuration_mode = ?) [3 1] - 2.939792ms
vikunja-1  | 2025-06-24T13:02:49.697139441Z: INFO       ▶ [DATABASE] 137 [SQL] SELECT `id`, `filters`, `title`, `description`, `owner_id`, `is_favorite`, `created`, `updated` FROM `saved_filters` WHERE `id` IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 21 27 28 29 30 31 32 33 26 34 35 36 38 39 41 42 43 44 45] - 913.283µs
vikunja-1  | 2025-06-24T13:02:49.699909148Z: INFO       ▶ [DATABASE] 138 [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 2.004218ms
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 139 Did not find filter for view 44
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 13a Did not find filter for view 48
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 13b Did not find filter for view 53
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 13c Did not find filter for view 57
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 13d Did not find filter for view 61
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 13e Did not find filter for view 65
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 13f Did not find filter for view 69
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 140 Did not find filter for view 73
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 141 Did not find filter for view 77
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 142 Did not find filter for view 81
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 143 Did not find filter for view 85
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 144 Did not find filter for view 89
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 145 Did not find filter for view 93
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 146 Did not find filter for view 97
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 147 Did not find filter for view 101
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 148 Did not find filter for view 105
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 149 Did not find filter for view 109
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 14a Did not find filter for view 113
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 14b Did not find filter for view 117
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 14c Did not find filter for view 121
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 14d Did not find filter for view 129
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 14e Did not find filter for view 133
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 14f Did not find filter for view 141
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 150 Did not find filter for view 145
vikunja-1  | 2025-06-24T13:02:49.704170112Z: INFO       ▶ [DATABASE] 151 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (((tasks.`project_id` IN (?,?) OR tasks.`project_id` IS NULL) AND (tasks.`done`=? OR tasks.`done` IS NULL) AND (tasks.`done`=? OR tasks.`done` IS NULL) AND (NOT EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id))) OR ((tasks.`project_id` IN (?,?) OR tasks.`project_id` IS NULL) AND (tasks.`done`=? OR tasks.`done` IS NULL) AND (tasks.`done`=? OR tasks.`done` IS NULL) AND (EXISTS (SELECT 1 FROM task_assignees INNER JOIN users ON users.id = user_id WHERE (tasks.id = task_id) AND username IN (?)) OR NOT EXISTS (SELECT 1 FROM task_assignees INNER JOIN users ON users.id = user_id WHERE tasks.id = task_id)))) AND id=? LIMIT 1 [7 12 false false 29 9 13 false false k4j8 1050] - 3.163436ms
vikunja-1  | 2025-06-24T13:02:49.706138923Z: INFO       ▶ [DATABASE] 152 [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 149] - 1.318181ms
vikunja-1  | 2025-06-24T13:02:49.707739772Z: INFO       ▶ [DATABASE] 153 [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 149] - 1.381493ms
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 154 Did not find filter for view 208
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 155 Did not find filter for view 212
vikunja-1  | 2025-06-24T13:02:49.709824603Z: INFO       ▶ [DATABASE] 156 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (tasks.`done`=? OR tasks.`done` IS NULL) AND (EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [false 12 1050] - 1.455042ms
vikunja-1  | 2025-06-24T13:02:49.710107451Z: INFO       ▶ [DATABASE] 157 [SQL] WITH RECURSIVE all_projects AS (
vikunja-1  |                SELECT
vikunja-1  |                    p.*
vikunja-1  |                FROM
vikunja-1  |                    projects p
vikunja-1  |                WHERE
vikunja-1  |                    p.id = ?
vikunja-1  |                UNION ALL
vikunja-1  |                SELECT
vikunja-1  |                    p.*
vikunja-1  |                FROM
vikunja-1  |                    projects p
vikunja-1  |                        INNER JOIN all_projects pc ON p.ID = pc.parent_project_id
vikunja-1  |            )
vikunja-1  |            SELECT DISTINCT * FROM all_projects [7] - 18.685014ms
vikunja-1  | 2025-06-24T13:02:49.711624542Z: INFO       ▶ [DATABASE] 158 [SQL] SELECT `id`, `target_url`, `events`, `project_id`, `secret`, `created_by_id`, `created`, `updated` FROM `webhooks` WHERE `project_id` IN (?) [7] - 963.282µs
vikunja-1  | 2025-06-24T13:02:49.712644926Z: INFO       ▶ [DATABASE] 159 [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 216] - 2.619807ms
vikunja-1  | 2025-06-24T13:02:49.713927278Z: INFO       ▶ [DATABASE] 15a [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.402563ms
vikunja-1  | 2025-06-24T13:02:49.715158322Z: INFO       ▶ [DATABASE] 15b [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE `id`=? LIMIT 1 [1050] - 838.921µs
vikunja-1  | 2025-06-24T13:02:49.715950723Z: INFO       ▶ [DATABASE] 15c [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 216] - 2.643453ms
vikunja-1  | 2025-06-24T13:02:49.717052309Z: INFO       ▶ [DATABASE] 15d [SQL] SELECT task_id, users.* FROM `task_assignees` INNER JOIN `users` ON task_assignees.user_id = users.id WHERE `task_id` IN (?) [1050] - 1.198113ms
vikunja-1  | 2025-06-24T13:02:49.717868016Z: INFO       ▶ [DATABASE] 15e [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (tasks.`done`=? OR tasks.`done` IS NULL) AND (EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [false 16 1050] - 1.528478ms
vikunja-1  | 2025-06-24T13:02:49.719023099Z: INFO       ▶ [DATABASE] 15f [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 220] - 982.847µs
vikunja-1  | 2025-06-24T13:02:49.719859029Z: INFO       ▶ [DATABASE] 160 [SQL] SELECT labels.*, label_tasks.task_id FROM `labels` LEFT JOIN `label_tasks` ON label_tasks.label_id = labels.id WHERE label_tasks.task_id IN (?) AND label_tasks.label_id IS NOT NULL GROUP BY labels.id,label_tasks.task_id ORDER BY labels.id ASC [1050] - 2.576922ms
vikunja-1  | 2025-06-24T13:02:49.720548643Z: INFO       ▶ [DATABASE] 161 [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 220] - 1.344774ms
vikunja-1  | 2025-06-24T13:02:49.721763183Z: INFO       ▶ [DATABASE] 162 [SQL] SELECT `id`, `task_id`, `file_id`, `created_by_id`, `created` FROM `task_attachments` WHERE `task_id` IN (?) [1050] - 1.664433ms
vikunja-1  | 2025-06-24T13:02:49.72274009Z: INFO        ▶ [DATABASE] 163 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (tasks.`done`=? OR tasks.`done` IS NULL) AND (EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [false 17 1050] - 1.574972ms
vikunja-1  | 2025-06-24T13:02:49.723079791Z: INFO       ▶ [DATABASE] 164 [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE id IN (?) [1] - 1.130807ms
vikunja-1  | 2025-06-24T13:02:49.7242141Z: INFO ▶ [DATABASE] 166 [SQL] SELECT `id`, `task_id`, `reminder`, `created`, `relative_period`, `relative_to` FROM `task_reminders` WHERE `task_id` IN (?) ORDER BY reminder asc [1050] - 785.007µs
vikunja-1  | 2025-06-24T13:02:49.724205846Z: INFO       ▶ [DATABASE] 165 [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 224] - 1.272553ms
vikunja-1  | 2025-06-24T13:02:49.725122005Z: INFO       ▶ [DATABASE] 167 [SQL] SELECT `entity_id`, `user_id`, `kind` FROM `favorites` WHERE user_id=? AND kind=? AND entity_id IN (?) [1 1 1050] - 710.663µs
vikunja-1  | 2025-06-24T13:02:49.725717896Z: INFO       ▶ [DATABASE] 168 [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 224] - 1.303942ms
vikunja-1  | 2025-06-24T13:02:49.726655627Z: INFO       ▶ [DATABASE] 169 [SQL] SELECT `id`, `title`, `description`, `identifier`, `hex_color`, `owner_id`, `parent_project_id`, `is_archived`, `background_file_id`, `background_blur_hash`, `position`, `created`, `updated` FROM `projects` WHERE `id` IN (?) [7] - 1.366445ms
vikunja-1  | 2025-06-24T13:02:49.728451786Z: INFO       ▶ [DATABASE] 16a [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE `task_id` IN (?) [1050] - 687.226µs
vikunja-1  | 2025-06-24T13:02:49.729621259Z: INFO       ▶ [DATABASE] 16b [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (tasks.`done`=? OR tasks.`done` IS NULL) AND (EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [false 18 1050] - 3.507473ms
vikunja-1  | 2025-06-24T13:02:49.730347537Z: INFO       ▶ [DATABASE] 16c [SQL] SELECT `id`, `name`, `username`, `password`, `email`, `status`, `avatar_provider`, `avatar_file_id`, `issuer`, `subject`, `email_reminders_enabled`, `discoverable_by_name`, `discoverable_by_email`, `overdue_tasks_reminders_enabled`, `overdue_tasks_reminders_time`, `default_project_id`, `week_start`, `language`, `timezone`, `deletion_scheduled_at`, `deletion_last_reminder_sent`, `frontend_settings`, `export_file_id`, `created`, `updated` FROM `users` WHERE `id`=? LIMIT 1 [1] - 1.187695ms
vikunja-1  | 2025-06-24T13:02:49.731401605Z: INFO       ▶ [DATABASE] 16d [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 228] - 1.584782ms
vikunja-1  | 2025-06-24T13:02:49.732740103Z: INFO       ▶ [DATABASE] 16e [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 228] - 1.102767ms
vikunja-1  | 2025-06-24T13:02:49.734850106Z: INFO       ▶ [DATABASE] 16f [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (tasks.`done`=? OR tasks.`done` IS NULL) AND (EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [false 19 1050] - 1.372845ms
vikunja-1  | 2025-06-24T13:02:49.73654561Z: INFO        ▶ [DATABASE] 170 [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 258] - 1.356408ms
vikunja-1  | 2025-06-24T13:02:49.738171357Z: INFO       ▶ [DATABASE] 171 [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 258] - 1.321369ms
vikunja-1  | 2025-06-24T13:02:49.740306124Z: INFO       ▶ [DATABASE] 172 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (tasks.`done`=? OR tasks.`done` IS NULL) AND (tasks.`project_id`<>? OR tasks.`project_id` IS NULL OR tasks.`project_id` IS NULL OR tasks.`project_id`=?) AND (tasks.`project_id`<>? OR tasks.`project_id` IS NULL OR tasks.`project_id` IS NULL OR tasks.`project_id`=?) AND (NOT EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [false 24 0 24 0 29 1050] - 1.473548ms
vikunja-1  | 2025-06-24T13:02:49.741451265Z: INFO       ▶ [DATABASE] 173 [SQL] WITH RECURSIVE all_projects as (SELECT l.* FROM projects l LEFT JOIN team_projects tl ON tl.project_id = l.id LEFT JOIN team_members tm2 ON tm2.team_id = tl.team_id LEFT JOIN users_projects ul ON ul.project_id = l.id WHERE (tm2.user_id=? OR ul.user_id=? OR l.owner_id=?) AND l.is_archived=? GROUP BY l.id
vikunja-1  | UNION ALL
vikunja-1  | SELECT p.* FROM projects p
vikunja-1  | INNER JOIN all_projects ap ON p.parent_project_id = ap.id)
vikunja-1  | SELECT DISTINCT all_projects.id, all_projects.title, all_projects.description, all_projects.identifier, all_projects.hex_color, all_projects.owner_id, CASE WHEN all_projects.parent_project_id IS NULL THEN 0 ELSE all_projects.parent_project_id END AS parent_project_id, all_projects.is_archived, all_projects.background_file_id, all_projects.background_blur_hash, all_projects.position, all_projects.created, all_projects.updated FROM all_projects
vikunja-1  | ORDER BY all_projects.position  [1 1 1 false] - 10.759742ms
vikunja-1  | 2025-06-24T13:02:49.743887781Z: INFO       ▶ [DATABASE] 174 [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 260] - 3.362884ms
vikunja-1  | 2025-06-24T13:02:49.745260144Z: INFO       ▶ [DATABASE] 175 [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 260] - 1.121594ms
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 176 Did not find filter for view 265
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 177 Did not find filter for view 269
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 178 Did not find filter for view 273
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 179 Did not find filter for view 282
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 17a Did not find filter for view 286
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 17b Did not find filter for view 320
vikunja-1  | 2025-06-24T13:02:49Z: DEBUG        ▶ 17c Did not find filter for view 349
vikunja-1  | 2025-06-24T13:02:49.747824336Z: INFO       ▶ [DATABASE] 17d [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE (EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) OR NOT EXISTS (SELECT 1 FROM label_tasks WHERE tasks.id = task_id)) AND id=? LIMIT 1 [30 1050] - 1.682791ms
vikunja-1  | 2025-06-24T13:02:49.749222262Z: INFO       ▶ [DATABASE] 17e [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 449] - 1.222345ms
vikunja-1  | 2025-06-24T13:02:49.750451106Z: INFO       ▶ [DATABASE] 17f [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 449] - 1.075681ms
vikunja-1  | 2025-06-24T13:02:49.751405604Z: INFO       ▶ [DATABASE] 180 [SQL] WITH RECURSIVE all_projects as (SELECT l.* FROM projects l LEFT JOIN team_projects tl ON tl.project_id = l.id LEFT JOIN team_members tm2 ON tm2.team_id = tl.team_id LEFT JOIN users_projects ul ON ul.project_id = l.id WHERE (tm2.user_id=? OR ul.user_id=? OR l.owner_id=?) AND l.is_archived=? GROUP BY l.id
vikunja-1  | UNION ALL
vikunja-1  | SELECT p.* FROM projects p
vikunja-1  | INNER JOIN all_projects ap ON p.parent_project_id = ap.id)
vikunja-1  | SELECT COUNT(DISTINCT all_projects.id) FROM all_projects [1 1 1 false] - 8.498606ms
vikunja-1  | 2025-06-24T13:02:49.751961575Z: INFO       ▶ [DATABASE] 181 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE tasks.`done`=? AND id=? LIMIT 1 [false 1050] - 1.124032ms
vikunja-1  | 2025-06-24T13:02:49.752509891Z: INFO       ▶ [DATABASE] 182 [SQL] SELECT count(*) FROM `favorites` WHERE user_id=? AND kind=? [1 1] - 943.597µs
vikunja-1  | 2025-06-24T13:02:49.753833815Z: INFO       ▶ [DATABASE] 183 [SQL] SELECT `bucket_id`, `task_id`, `project_view_id` FROM `task_buckets` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 453] - 1.72002ms
vikunja-1  | 2025-06-24T13:02:49.754073098Z: INFO       ▶ [DATABASE] 184 [SQL] SELECT `id`, `filters`, `title`, `description`, `owner_id`, `is_favorite`, `created`, `updated` FROM `saved_filters` WHERE (owner_id = ?) [1] - 1.276376ms
vikunja-1  | 2025-06-24T13:02:49.756288239Z: INFO       ▶ [DATABASE] 185 [SQL] SELECT `task_id`, `project_view_id`, `position` FROM `task_positions` WHERE task_id=? AND project_view_id=? LIMIT 1 [1050 453] - 2.31141ms
vikunja-1  | 2025-06-24T13:02:49.757564052Z: INFO       ▶ [DATABASE] 186 [SQL] SELECT `id`, `title`, `project_view_id`, `limit`, `position`, `created`, `updated`, `created_by_id` FROM `buckets` WHERE id IN (SELECT bucket_id FROM task_buckets WHERE task_id IN (?)) AND project_view_id IN (SELECT id FROM project_views WHERE project_id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [1050 43 7 8 50 52 13 44 11 15 49 9 16 19 12 37 48 -1 -22 -41 -44 -46] - 2.992026ms
vikunja-1  | 2025-06-24T13:02:49.758448562Z: INFO       ▶ [DATABASE] 187 [SQL] SELECT `id`, `title`, `description`, `done`, `done_at`, `due_date`, `project_id`, `repeat_after`, `repeat_mode`, `priority`, `start_date`, `end_date`, `hex_color`, `percent_done`, `index`, `uid`, `cover_image_attachment_id`, `created`, `updated`, `created_by_id` FROM `tasks` WHERE tasks.`done`=? AND EXISTS (SELECT 1 FROM label_tasks WHERE (tasks.id = task_id) AND label_id IN (?)) AND id=? LIMIT 1 [false 31 1050] - 1.687148ms
vikunja-1  | 2025-06-24T13:02:49.758867062Z: INFO       ▶ [DATABASE] 18a [SQL] SELECT `id`, `task_id`, `other_task_id`, `relation_kind`, `created_by_id`, `created` FROM `task_relations` WHERE `task_id` IN (?) [1050] - 862.406µs
vikunja-1  | 2025-06-24T13:02:49.762522823Z: INFO       ▶ [DATABASE] 18b [SQL] 
vikunja-1  | WITH RECURSIVE project_hierarchy AS (
vikunja-1  |     -- Base case: Start with the projects associated with the tasks
vikunja-1  |     SELECT
vikunja-1  |         p.id,
vikunja-1  |         p.parent_project_id,
vikunja-1  |         0 AS level,
vikunja-1  |         t.id AS task_id
vikunja-1  |     FROM tasks t
vikunja-1  |              JOIN projects p ON t.project_id = p.id
vikunja-1  |     WHERE t.id IN (1050)
vikunja-1  | 
vikunja-1  |     UNION ALL
vikunja-1  | 
vikunja-1  |     -- Recursive case: Get parent projects
vikunja-1  |     SELECT
vikunja-1  |         p.id,
vikunja-1  |         p.parent_project_id,
vikunja-1  |         ph.level + 1,
vikunja-1  |         ph.task_id
vikunja-1  |     FROM projects p
vikunja-1  |              INNER JOIN project_hierarchy ph ON p.id = ph.parent_project_id
vikunja-1  | ),
vikunja-1  | 
vikunja-1  | subscription_hierarchy AS (
vikunja-1  |     -- Check for task subscriptions
vikunja-1  |     SELECT
vikunja-1  |         s.id,
vikunja-1  |         s.entity_type,
vikunja-1  |         s.entity_id,
vikunja-1  |         s.created,
vikunja-1  |         s.user_id,
vikunja-1  |         1 AS priority,
vikunja-1  |         t.id AS task_id
vikunja-1  |     FROM subscriptions s
vikunja-1  |              JOIN tasks t ON s.entity_id = t.id
vikunja-1  |     WHERE s.entity_type = ? AND t.id IN (1050) AND s.user_id = 1
vikunja-1  | 
vikunja-1  |     UNION ALL
vikunja-1  | 
vikunja-1  |     -- Check for project subscriptions (including parent projects)
vikunja-1  |     SELECT
vikunja-1  |         s.id,
vikunja-1  |         s.entity_type,
vikunja-1  |         s.entity_id,
vikunja-1  |         s.created,
vikunja-1  |         s.user_id,
vikunja-1  |         ph.level + 2 AS priority,
vikunja-1  |         ph.task_id
vikunja-1  |     FROM subscriptions s
vikunja-1  |              INNER JOIN project_hierarchy ph ON s.entity_id = ph.id
vikunja-1  |     WHERE s.entity_type = ?
vikunja-1  | )
vikunja-1  | 
vikunja-1  | SELECT
vikunja-1  |     t.id AS original_entity_id,
vikunja-1  |     sh.id AS subscription_id,
vikunja-1  |     sh.entity_type,
vikunja-1  |     sh.entity_id,
vikunja-1  |     sh.created,
vikunja-1  |     sh.user_id,
vikunja-1  |     CASE
vikunja-1  |         WHEN sh.entity_type = ? THEN 'Task'
vikunja-1  |         WHEN sh.priority = ? THEN 'Direct Project'
vikunja-1  |         ELSE 'Parent Project'
vikunja-1  |     END
vikunja-1  |     AS subscription_level,
vikunja-1  |    users.*
vikunja-1  | FROM tasks t
vikunja-1  |     LEFT JOIN (
vikunja-1  |     SELECT *,
vikunja-1  |            ROW_NUMBER() OVER (PARTITION BY task_id, user_id ORDER BY priority) AS rn
vikunja-1  |     FROM subscription_hierarchy
vikunja-1  | ) sh ON t.id = sh.task_id AND sh.rn = 1
vikunja-1  |     LEFT JOIN users ON sh.user_id = users.id
vikunja-1  | WHERE t.id IN (1050)
vikunja-1  | ORDER BY t.id, sh.user_id [3 2 3 2] - 3.400182ms
vikunja-1  | 2025-06-24T13:02:49Z: ERROR        ▶ 18c Could not load project for webhook 333: User does not exist [user id: 0]
vikunja-1  | 2025-06-24T13:02:49.96421222Z: INFO        ▶ [DATABASE] 18d [SQL] SELECT `id`, `notifiable_id`, `notification`, `name`, `subject_id`, `read_at`, `created` FROM `notifications` WHERE (notifiable_id = ?) ORDER BY id DESC LIMIT 50 [1] - 1.53304ms
vikunja-1  | 2025-06-24T13:02:49.973914055Z: INFO       ▶ [DATABASE] 18e [SQL] SELECT count(*) FROM `notifications` WHERE (notifiable_id = ?) [1] - 1.151319ms
vikunja-1  | 2025-06-24T13:02:49Z: WEB  ▶ 10.0.0.145  GET 200 /api/v1/notifications?page=1 17.469873ms - Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0

When I looked at the database table, the webhook was correctly assigned to my user (id: 3).