Skip to main content
Security & Trust

How we protect your agency's data.

Brokers run their book on Velora. That means full names, plan IDs, renewal dates, premium dollars, call recordings, and reply transcripts. Below is exactly what we do with that data, who else touches it, and the honest list of what's certified vs. what's still in flight.

Tenant isolation by construction
No route reads the user header directly. Every query filters on agency_id. There is no global admin path that crosses tenant boundaries.
No claim before audit
We do not claim SOC 2, HIPAA, or specific encryption standards before a third party verifies them. Anything labeled in-flight is in-flight.
Append-only audit trail
Every dispatch, every reply, every opt-out lives in an immutable event log. Replayable per contact. Compliance-grade by design.
Control posture

Encryption

  • TLS 1.3 in transitShipped

    All HTTPS endpoints terminate on TLS 1.3 via Vercel's edge network. HTTP requests are 308-redirected to HTTPS.

  • Encryption at rest (database)Shipped

    Neon Postgres encrypts at rest with AES-256. Database snapshots inherit the same key envelope.

  • Encryption at rest (object storage)Shipped

    Vercel Blob (audio uploads) is AES-256 by default. Files are scoped per-agency and require a signed URL.

  • Secrets in environmentShipped

    API keys, webhook secrets, and database URLs are stored in Vercel's encrypted environment, never committed to the repo.

  • Secret rotation runbookIn flight

    Rotation of Twilio, Resend, Retell, Anthropic, and Slybroadcast credentials is currently manual; we're automating quarterly rotation.

Control posture

Access control + tenancy

  • Multi-tenant scopingShipped

    Every authenticated route resolves an agency through requireAgency(); no route reads the user header directly. 31 routes migrated in April 2026.

  • Per-agency data isolationShipped

    All CRM tables (companies, deals, activities, notes, clients, brokers) carry agency_id columns with composite indexes; queries filter on agency_id by construction.

  • Session validationShipped

    Sessions validate against the database on every request; the middleware fails closed on a database error unless an explicit fallback flag is set.

  • Password hashingShipped

    bcryptjs with transparent legacy-hash upgrade on login. No plaintext passwords. No reversible hashes.

  • Production cookie hardeningShipped

    Session cookies use the __Host- prefix, Secure, HttpOnly, and SameSite=Lax in production.

  • Multi-factor authenticationIn flight

    TOTP-based MFA is on the roadmap for the next 90 days. SSO via Okta / Google Workspace / Azure AD is planned for the Platform tier.

Control posture

Audit + observability

  • Append-only event logShipped

    Every dispatch (email, SMS, voice, voice-drop), reply, opt-out, and webhook delivery is recorded in an immutable events table — replayable per contact.

  • Per-route capture pipelineShipped

    Errors flow through a single dispatch() chokepoint in src/lib/errors/capture.ts; wiring Sentry / Axiom is a one-function swap.

  • Webhook signature verificationShipped

    Resend (Standard Webhooks), Twilio (validateRequest), Retell (HMAC-SHA256), and Slybroadcast (shared secret) all verify signatures before processing.

  • Request IDsShipped

    Middleware stamps every request with a 12-hex request ID, propagated downstream and echoed on the response for tracing.

  • Audit log UIShipped

    Admin > Audit Log surfaces the events table with filters by aggregate, kind, and date.

Control posture

Compliance posture

  • Pre-send compliance gateShipped

    Every outbound send routes through a single gate function (lib/compliance/pre-send-gate.ts) that layers internal suppression → state-rule engine → producer license + carrier appointment → federal/state DNC + RND + litigator scrub → EBR + PEWC consent ledger. Direct calls to a channel adapter that bypass the gate are bug-flagged in code review.

  • Producer license + carrier appointment registryShipped

    Per-agency registry of producers, NPN, state licenses (line of authority + expiry), and carrier appointments. The gate denies sends attributed to a producer who lacks an active license in the recipient state, or carrier-specific outreach without a matching appointment.

  • Consent ledger + audit-exportShipped

    Append-only consent_records table with verbatim disclosure text, FCC-one-to-one seller_named, signature method, and source URL/IP. /api/compliance/audit-export bundles consent + sends + gate decisions + suppression entries for any contact + date range — class-action subpoena ready in under 5 minutes.

  • External scrub interfacesIn flight

    Vendor-agnostic adapters for federal DNC, state DNC, Reassigned Number Database, and Blacklist Alliance litigator scrub all wired into the gate today. Provider implementations return 'skip' until a vendor + creds land — DNC.com, Blacklist Alliance, and Contact Center Compliance are the candidates.

  • TCPA state-rule engineShipped

    Per-state JSON config covering quiet hours (8am–8pm local default; FL FTSA-strict 8am–8pm; WA / TX HB 4082; MD; OK), recording two-party consent, AI-voice disclosure (TX SB 140, CA AB 2905, FL FTSA), and per-state DNC requirements. Gate consults this matrix on every voice/SMS/RVM send.

  • STOP / HELP handlingShipped

    Inbound STOP, UNSUBSCRIBE, REMOVE, QUIT, CANCEL, END are honored within seconds; future sends to that contact are blocked across all channels and a suppression_list row is written immediately.

  • One-click List-UnsubscribeShipped

    RFC 8058 List-Unsubscribe-Post header on every email; one-click unsub honored within Yahoogle's 2-day requirement.

  • 10DLC A2P registrationShipped

    Brand and campaign registration for SMS via Twilio. Walked through during onboarding.

  • DMARC monitoringShipped

    Per-domain DMARC reports parsed; deliverability dashboard surfaces alignment failures + per-domain reputation.

  • SOC 2 Type IIIn flight

    Audit period scoped for late 2026. We will not claim SOC 2 on this page or in the product until the report is in hand.

  • HIPAA modePlanned

    Velora Marketing does not currently process Protected Health Information. A HIPAA-aware mode for agencies that handle PHI is on the roadmap; we will require a signed BAA before enabling it.

  • GDPR / CCPA / DSAR workflowIn flight

    DSAR endpoints exist server-side. Public-facing DSAR submission flow + cookie consent banner are next.

TCPA + DNC + state law

The pre-send gate, in order

Every send that leaves the platform — email, SMS, ringless voicemail, voice, LinkedIn — passes through a single gate function before any provider call. The layers below run in this order; a deny at any layer halts the send and writes a structured reason to the events table. Audit-export reconstructs every decision.

LayerWhat it checksWhy it matters
1. Internal suppressionPer-tenant DNC: STOP keywords, manual ops adds, bounces, complaints, prior litigator hits cached.Sub-millisecond local check before any provider call. Honors every prior opt-out across all channels.
2. State-rule engineQuiet hours (8am–8pm local default; FL FTSA-strict; TX HB 4082; MD; OK; WA), AI-voice disclosure (TX SB 140, CA AB 2905, FL FTSA), recording consent.Per-state divergence is the largest TCPA risk surface. State engine is JSON-config-driven; new state laws roll out as a single PR.
3. Producer license + carrier appointmentProducer must hold an active line-of-authority license in the recipient state. For carrier-specific outreach, producer must hold an active appointment with that carrier covering that state.Insurance-vertical requirement. Soliciting in a state without a license is a state insurance commissioner referral, separate from TCPA.
4. External scrubs (vendor-agnostic)Federal DNC (every 31 days per safe harbor), state DNC, Reassigned Number Database (against consent capture date), Blacklist Alliance litigator list.The four layers TCPA plaintiffs typically pierce on. Adapters return ‘skip’ until a vendor (DNC.com / Blacklist Alliance / Contact Center Compliance) is selected; gate logs skip with a structured reason.
5. EBR (Existing Business Relationship)Last transaction date + EBR window expiry per contact. EBR within 18 months allows marketing voice/SMS without explicit PEWC.The most common consent path for a broker — your renewing or quoting clients are in EBR. AMS sync (Sprint 4) refreshes this automatically.
6. PEWC consent ledgerAppend-only consent_records: verbatim disclosure text, seller_named (FCC one-to-one), signature method, source URL/IP. Revocation appends; never UPDATE, never DELETE.The single most-asked-for artifact in any class-action defense: ‘show me what they agreed to.’

Audit-export. Given a contactId and date range, /api/compliance/audit-export bundles every consent record, every gate decision (allow + deny), every send, and every suppression entry into one JSON payload. The agency can hand this to outside counsel inside of five minutes.

What we will not do. No outbound AI voice in v1 — TCPA-AI-voice analysis on every call. No shared phone-number pools across tenants. No 10DLC skip. No blanket-consent-to-marketing-partners UI (Jan 2025 FCC rule killed that). No B2B carve-out assumption in code — sole proprietors are consumers under TCPA, cell phones are TCPA-covered regardless of use, and the National DNC includes individual business numbers.

Sub-processors

Every vendor that sees customer data

Updated April 2026. We update this list whenever a vendor is added or a region changes. Customers can subscribe to changes via security@hellovelora.com.

VendorPurposeRegionPrivacy
VercelApplication hosting, edge network, blob storageus-east-1Privacy policy
NeonPostgreSQL database (primary data store)us-east-1Privacy policy
AnthropicAI inference (Claude — agency-context-aware)usPrivacy policy
ResendOutbound + transactional email + DMARC reportingusPrivacy policy
TwilioSMS (10DLC A2P), phone numbers, MMS, signature verificationusPrivacy policy
Retell AIAI voice (inbound qualification, outbound voice agent)usPrivacy policy
Slybroadcast / Drop CowboyRingless voicemail dispatchusPrivacy policy
Data residency

US-only by default

Application infrastructure, the primary database, and object storage all live in us-east-1. Customer data does not leave the United States. We do not currently support EU residency; ask if you need it before signing.

Vulnerability disclosure

If you find something, tell us

Email security@hellovelora.comwith reproduction steps. We respond within 48 hours, validate the report, patch the issue, and credit the reporter on the changelog (with permission). We don't maintain a public bug bounty program — we're too early — but we treat researchers fairly and respond fast.

Procurement-grade questions?

Send your security questionnaire to security@hellovelora.comand we'll turn it around with named owners, control evidence, and the same honest in-flight labels you see above.

Start a security review