Vendure GoedGepickt plugin
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.
- Add this to your plugin in
vendure-config.ts:
import { GoedgepicktPlugin } from '@pinelab/vendure-plugin-goedgepickt';
plugins: [
GoedgepicktPlugin.init({
vendureHost: 'https://your-vendure-server.io/',
setWebhook: true // Automatically set webhooks in Goedgepickt or not
// You can optionally set orders 'on_hold' in Goedgepickt if you'd like
determineOrderStatus: (ctx, order) => {
if (order.state === 'PaymentAuthorized') {
return 'on_hold' as const;
} else {
return 'open' as const; // This is the default
}
}
}),
...
]
- Run a database migration to add the new fields and entities to your database.
- Start the server and go to
Settings>Channels, open the channel you want to configure and select the GoedGepickt tab. Make sure you have theSetGoedGepicktConfigpermission. - Here you can configure your
apiKeyandwebshopUuidper channel.
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.
- The plugin registers two scheduled tasks. Make sure you have
DefaultSchedulerPluginconfigured in your Vendure config:- Stock sync runs every night at 2:00 UTC and pulls stock levels from GoedGepickt into Vendure.
- Product push runs every Monday at 6:00 UTC and pushes all Vendure products to GoedGepickt.
- Orders can be manually (re-)pushed to GoedGepickt via the Push to Goedgepickt action in the order detail page's action bar dropdown.
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:
mutation {
setOrderCustomFields(
input: {
customFields: {
pickupLocationNumber: "1234"
pickupLocationCarrier: "1"
pickupLocationName: "Local shop"
pickupLocationStreet: "Shopstreet"
pickupLocationHouseNumber: "13"
pickupLocationZipcode: "8888HG"
pickupLocationCity: "Leeuwarden"
pickupLocationCountry: "nl"
}
}
) {
... on Order {
id
code
}
... on NoActiveOrderError {
errorCode
message
}
}
}
Stock locations
This plugin only works with a single stock location in Vendure. It will not work correctly when you have multiple stock locations configured. GoedGepickt should manage stock for all your locations, and Vendure should only have a single stock location that reflects the total stock managed by GoedGepickt.
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"