Skip to main content
← Back to plugins
GoedGepickt Fulfillment

GoedGepickt Fulfillment

Integrate Vendure with the GoedGepickt order picking platform.

Version2.2.0
Compatibility>=2.2.0
CategoryShipping
Downloads89 monthly
Last updatedFeb 5, 2026

Official documentation here

Plugin for integrating Vendure with GoedGepickt.

Getting started

Vendure's responsibilities vs GoedGepickt's responsibilities:

  • Vendure is your catalog. If you want a new product, add it in Vendure
  • GoedGepickt manages all things stock related. StockLevel, size and weight are all managed in GoedGepickt.
  1. Add this to your plugin in vendure-config.ts:
Ts
  1. Run a database migration to add the new fields and entities to your database.
  2. Add this plugin to your Admin UI and compile.
Ts

Read more about Admin UI compilation in the Vendure docs

  1. Start the server and navigate to Settings > Goedgepickt. Make sure you have the SetGoedGepicktConfig permission.
  2. Here you can configure your apiKey and webshopUuid per channel.
  3. Click test to check your credentials.

When you save the credentials, the plugin will make sure the configured vendureHost is set as webhook for order and stock updates. The plugin will never delete webhooks, so if you ever change your url, you should manually delete the old webhook via GoedGepickt.

  1. Full sync can be run manually via the Admin ui or via a GET request to endpoint/goedgepickt/fullsync/<webhook-secret>/. A full sync is processed in the worker and can take a few hours to finish

Pickup points / drop off points

This plugin uses custom fields on an order as pickup location address. You can set a pickup points on an order with this mutation, the plugin will then send the address to Goedgepickt:

Graphql

Monitoring and Alerting

You should monitor your server logs for the message Failed to process job sync-order with severity WARNING. This means an order was not pushed to GoedGepickt. Depending on your job queue implementation this will be retried.

In Google Cloud, we create an alert for the following log query:

severity>=WARNING "Failed to process job sync-order"
Changelog
  • Upgraded to Vendure 3.5.3
  • Fix object null is not iterable at GoedgepicktService.splitHouseNumberAndAddition for empty house number string
  • Documentation update
  • Updated official documentation URL
  • Allow empty UUID and ApiKey in Goedgepickt config on Channel.
  • Improved error logging when incoming webhooks fail
  • Don't try to transition to Delivered when the order is in PaymentAuthorized state
  • Upgrade to Vendure to 3.3.2
  • Try/catch around event handling, to prevent node process crash on error
  • Fix for numeric SKU's
  • Set correct main and types paths in package.json, now that we don't export files from outside the root anymore.
  • Process incoming stock and order webhooks via the job queue, to prevent webhook disabling in GoedGepickt
  • Process stock updates via the job queue, so that it is retried when GoedGepickt returns a Too Many Attempts error
  • Don't use GoedGepickt as fulfilment handler anymore, instead directly move to Shipped or Delivered on incoming status change.
  • Update image when the image on GoedGepickt is a placeholder
  • Check for undefined or null, to prevent stock updates with 0 being ignored
  • Prevent empty update SQL statement
  • Update stock in batches of 500
  • Setting allocated to 0 on incoming stock updates and full sync
  • Removed validating of webhook signature. Fetching stock and order status directly from GoedGepickt on incoming webhook instead.
  • Moved GG config to Channel Custom Fields, instead of custom UI component.
  • Breaking: DB migration needed
  • Breaking: You need to save GoedGepickt credentials on a channel now: Settings > Channel > GoedGepickt custom fields
  • Only sync product image on creation, not on update, after complaints from GoedGepickt about too many updates.
  • Update Vendure to 3.1.1
  • orderPlacedAt field should not be mandatory to push to Picqer
  • Allow setting custom order state in GoedGepickt
  • Update compatibility range (#480)
  • Updated Vendure to 2.2.6
  • Push jobs to queue with promise.all(), so that the fullsync webhook finishes faster, and all jobs are in queue.
  • Query by SKU fix for MySQL. sku = :sku instead of productVariant.sku = :sku
  • Log rate limit exceeded as info statements and retry.
  • Fix related to stock not updating when a variant with the same SKU has been deleted before.
  • Correctly transition to Delivered from Shipped
  • Updated vendure to 2.1.1