API keys are hashed
Plain merchant API keys are shown once and stored only as HMAC-SHA256 hashes.

Security
Velop is designed so recipients get a simple scan-to-play flow while merchant data and media remain tenant-scoped. For operational fixes, see QR gift message troubleshooting.
Plain merchant API keys are shown once and stored only as HMAC-SHA256 hashes.
Media files are private by default and served through short-lived signed URLs.
Every message, scan event, billing event, and rollup is scoped to merchant ID.
Messages expire by retention policy and storage lifecycle cleanup removes media.
Direct writes are denied for message, scan, billing, and analytics collections.
Public pages resolve only active, unexpired tokens and return expired states otherwise.
Operational controls
GiftNote links are designed for physical fulfilment workflows: customers create a message, store teams print a QR card, and recipients open a private viewer without installing an app. The same workflow is covered in the message lifecycle docs.
Viewer pages resolve only active tokens, so a printed card can open the intended message while expired or invalid tokens return a controlled state.
Uploaded voice, video, and file messages are served through short-lived signed URLs instead of permanent public storage paths.
Messages follow the merchant retention window, giving recipients time to scan while keeping long-term media storage controlled.