Shopify Webhook Trigger orphaned after recreating Docker container

Describe the problem/error/question

After migrating a workflow from n8n Cloud to a self-hosted instance in Docker (same n8n_data volume), a workflow with a Shopify Trigger node (topic orders/paid) appears as active both in the UI and in the database (workflow_entity.active = 1, triggerCount = 2), and has its corresponding row in webhook_entity with the expected path. However, incoming POST requests to that path are rejected:

Received request for unknown webhook: The requested webhook "POST 257536d8-dabd-4c1a-bc22-f97d64aa082b/webhook" is not registered.

Information on your n8n setup

  • n8n version: 2.39.6
  • Database (default: SQLite): SQLite
  • n8n EXECUTIONS_PROCESS setting (default: own, main): main (without QUEUE_*/EXECUTIONS_MODE configured, single process)
  • Running n8n via (Docker, npm, n8n cloud, desktop app): Docker (docker run, without docker-compose)
  • Operating system: Ubuntu (behind Apache as reverse proxy with TLS)

Hey @Pau_Pulido, while you wait for a response, here are some things that might help:

Suggested resources

Automatically matched to your question.

Docs:

Forum:

@Bouiboui, @Viacheslav_Semenov, @mohamed3nan - you’ve helped with similar issues before, can you take a look?

Automatically suggested by n8n’s community bot. It’s a pilot - please share feedback here.

@Pau_Pulido

Have you tried deleting and re-creating the webhook?

Hi @Pau_Pulido

Yes, but let n8n recreate both records instead of manually editing webhook_entity. Unpublish the workflow, configure N8N_WEBHOOK_URL with the public HTTPS URL and N8N_PROXY_HOPS=1, restart the container, and republish it. As of n8n version 2.35, WEBHOOK_URL is deprecated.

Upon publishing, n8n should recreate the local route and the subscription in Shopify. Delete any old subscriptions that still point to n8n Cloud. If activation fails, check the container logs at that moment, as the reason for the failure will appear there.

hi Pau, how many paid orders hit that dead webhook before you noticed?

Thanks everyone for your responses, I finally managed to fix it. It turns out that even though the credentials appeared to be connected and correct, they weren’t. I’m not sure if it was due to a restart/update, but after deleting and recreating the credentials, everything works correctly again.

Anshul’s fix addresses the route. What remains is the money part: orders paid while the webhook was down.

Shopify retries a failed delivery up to eight times over four hours, and if failures persist, it removes the subscription. That is, any orders/paid from more than a few hours before the fix won’t arrive via webhook, and if the subscription was deleted, republishing the workflow recreates it but doesn’t resend anything from the dead period.

Recovery in two steps:

  1. Using the Admin API, fetch orders with financial_status=paid and updated_at from the moment of migration, and pass them through the same workflow path that the trigger would use (a Manual/Schedule trigger that calls the same subworkflow works).
  2. Make that path idempotent by order id before replaying anything: if Shopify still retries a late delivery, or if you run the recovery twice, you don’t want the same order processed twice.

And a quick check in Shopify Admin > Notifications > Webhooks: if the subscription no longer appears there, the dead period started before the last failed retry, not at migration.