Velop GiftNote
Velop GiftNote lets shoppers attach a personal voice, video, or uploaded media message to a WooCommerce order. Merchants can print a QR card from the order admin panel so recipients can scan and view the message.
The plugin stores the Velop message ID on WooCommerce order item metadata and communicates with the Velop API through WordPress AJAX handlers. The Velop API key is stored server-side and is never exposed to the storefront.
External services
Velop GiftNote connects to the Velop service at https://api.velop.media. This service is required to create upload URLs, store uploaded GiftNote media, generate QR viewer links, render recipient pages, report GiftNote usage, and sync message status for the merchant portal.
When a shopper creates a GiftNote, the plugin sends the merchant API key, pending order reference, sender name when provided, media type, MIME type, and file size to Velop. The shopper’s media file is then uploaded to the Velop service using the upload URL returned by the API.
When the upload is confirmed, the plugin sends the Velop message ID, upload path, and duration when available. After checkout, it syncs the final order ID, order number/reference, order status, and billing or shipping name when the GiftNote sender name was left blank. If an order is cancelled, the plugin sends the Velop message ID so the related GiftNote can be cancelled.
Velop terms: https://velop.media/terms
Velop privacy policy: https://velop.media/privacy
Source and build process
The storefront widget JavaScript is bundled in assets/widget.js so the plugin does not load executable code from a third-party CDN by default.
The human-readable source for that generated file is included in the plugin package at source/widget/src, with the related widget build files at source/widget/package.json and source/widget/vite.config.js.
Build process:
- Run
npm installfrom the Velop project root. - Run
npm --workspace @velop/widget run buildto generate the widget bundle. - Run
node apps/portal/scripts/package-plugin.jsto copy the built widget intoassets/widget.jsand include the readable widget source in the release ZIP.
