Quick Start
Get a privacy-first, client-side encrypted form running in 5 minutes.
1. Create an Account
Sign up at veilforms.com/register. No credit card required for the free tier.
2. Create Your First Form
In the dashboard, click “New Form”. Enter a name and your form fields.
3. Get Your Embed Code
After creating your form, you’ll receive:
- Form ID — Unique identifier for your form
- Public Key — Used to encrypt submissions (safe to expose)
- Private Key — Used to decrypt submissions (keep secret!)
- Embed Code — Ready-to-use HTML snippet
4. Add to Your Website
Option A: Simple HTML
<!-- Add the SDK v1.0.0 with SRI for security -->
<script
src="https://veilforms.com/js/veilforms-1.0.0.min.js"
integrity="sha384-dxvu/QuhQhLna10DbAj9KnYMewa6zqats5B79Pv+Ae3ef2pfwjRLrRSJ76SEtWMp"
crossorigin="anonymous">
</script>
<!-- Initialize with your form ID and public key -->
<script>
VeilForms.init('vf-abc123', {
publicKey: 'eyJrdHkiOiJSU0EiLC...', // Your public key (base64)
encryption: true,
piiStrip: true
});
</script>
<!-- Add data-veilform to any form -->
<form data-veilform>
<label>
Name
<input type="text" name="name" required>
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<button type="submit">Send</button>
</form>
Option B: NPM Install
npm install veilforms
import VeilForms from 'veilforms';
VeilForms.init('vf-abc123', {
publicKey: process.env.VEILFORMS_PUBLIC_KEY,
encryption: true,
piiStrip: true
});
Option C: Manual Submission
// Submit data programmatically
const result = await VeilForms.submit({
name: 'Anonymous User',
feedback: 'Great product!',
rating: 5
});
console.log(result.submissionId); // vf-xyz789...
5. Handle Success/Error
// Listen for form events
document.querySelector('form').addEventListener('veilforms:success', (e) => {
console.log('Submitted!', e.detail.submissionId);
// Show success message, redirect, etc.
});
document.querySelector('form').addEventListener('veilforms:error', (e) => {
console.error('Failed:', e.detail.error);
// Show error message
});
6. View Submissions
Go to your dashboard to view submissions.
What Just Happened?
When a user submitted your form:
- PII Detection — The SDK scanned for emails, phones, SSNs, etc.
- PII Stripping — Detected PII was removed (if
piiStrip: true) - Encryption — Data was encrypted with your public key using RSA+AES
- Anonymous ID — A cryptographic submission ID was generated (no user info)
- Transmission — Only the encrypted blob was sent to our servers
- Storage — We stored the blob. We cannot decrypt it.
Next Steps
- Configuration Options — All SDK settings
- PII Detection — Customize PII handling
- Key Management — Backup and recover keys
- API Reference — Access submissions via API