vintrconnect (database)
vintrconnect reads stock levels straight from an external MySQL or PostgreSQL database — directly, or through an SSH tunnel when the database is private. It matches your products by EAN or product ID and updates stock in one warehouse.
1. Create the integration
Go to Settings → Integrations and add vintrconnect (database) under the Stock section. Choose a display name and a connection mode:
- Direct — the database host is publicly reachable.
- SSH tunnel — the connection is routed through a public bastion host, so the database itself can stay private.
2. Database connection
Enter engine (MySQL / PostgreSQL), host, port, database name, user and password.
For TLS choose require (encrypt only) or verify-full (encrypt + validate the
certificate, with an optional CA).
3. SSH tunnel (optional)
If you picked tunnel mode, enter the bastion host, port and SSH user, then
generate a key pair. Add the shown public key to the bastion user's
~/.ssh/authorized_keys.
4. Map the columns
Pick the table, choose match by (EAN or product ID), then point Vintrhall at
the key column (the match value) and the quantity column. Optionally add a filter
(a WHERE condition) to narrow rows. Use Check match to preview how many
products will be matched.
5. Target warehouse and sync
Select the warehouse that receives the stock (this cannot be changed later — make a separate integration for another warehouse). Save, then run a manual sync or enable scheduled sync.
If your database has multiple rows per product (e.g. a multistore setup with per-shop rows), add a filter so each product resolves to a single row — otherwise conflicting rows are skipped.
Security
- Read-only: vintrconnect runs
SELECTonly, never writes to your database. - SSH uses key-based auth only; passwords and keys are stored encrypted.
- The bastion host is validated against private/internal addresses (anti-SSRF).
Notes
- Stock quantities only — no products or orders are imported.
- Sync frequency depends on your plan; bin placements from scanning are unaffected.