SecuritySecurity Whitepaper

Security Whitepaper

Version 1.0 | December 2025

This document provides a comprehensive overview of Ledly’s security architecture, practices, and compliance considerations for higher education institutions evaluating our lead management platform.


Executive Summary

Ledly is a lead management platform purpose-built for higher education institutions. We understand that colleges and universities handle sensitive prospective student information that requires the highest levels of protection. This whitepaper details our comprehensive approach to security, covering infrastructure, data protection, access controls, and compliance considerations.

Key Security Highlights

AreaImplementation
InfrastructureHosted on Railway with automated scaling and redundancy
EncryptionTLS 1.3 in transit, AES-256 at rest
AuthenticationJWT-based with OAuth 2.0 for integrations
Access ControlRole-based access control (RBAC) with organization isolation
ComplianceFERPA-aware practices, GDPR considerations
API SecurityRate limiting, input validation, HMAC-SHA256 webhook signatures

For questions about this whitepaper or to request additional security documentation, contact [email protected].


Security Architecture

Infrastructure Overview

Ledly operates on a modern, cloud-native infrastructure designed for reliability, scalability, and security.

Hosting Platform

Ledly is hosted on Railway, a Platform-as-a-Service (PaaS) provider that offers:

  • Automated deployments with zero-downtime updates
  • Horizontal scaling to handle traffic spikes during enrollment periods
  • Geographic redundancy for high availability
  • Managed infrastructure with security patches applied automatically
  • Private networking between application services
  • DDoS protection at the infrastructure level

Database Infrastructure

ComponentTechnologySecurity Features
Primary DatabasePostgreSQLEncrypted connections, automated backups
Backup Retention30 daysPoint-in-time recovery capability
Connection SecurityTLS requiredNo unencrypted database connections
Access ControlRole-basedPrinciple of least privilege
⚠️

Database access is restricted to application services only. Direct database access is not available to customers or Ledly staff without explicit authorization and audit logging.

Network Security

Transport Layer Security

All data transmitted to and from Ledly is encrypted using industry-standard protocols:

  • TLS 1.3 for all HTTPS connections (TLS 1.2 supported for legacy clients)
  • HSTS (HTTP Strict Transport Security) enforced with 1-year max-age
  • Forward secrecy using ephemeral key exchanges
  • Strong cipher suites with weak ciphers disabled
Supported Cipher Suites:
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256

API Security Layers

Request Flow:
Client → TLS Termination → WAF → Rate Limiter → Authentication → Authorization → Application
LayerProtection
TLS TerminationEncryption, certificate validation
WAFSQL injection, XSS, common attack patterns
Rate LimiterBrute force protection, abuse prevention
AuthenticationIdentity verification
AuthorizationPermission enforcement

Data Encryption

Encryption at Rest

All data stored by Ledly is encrypted at rest:

Data TypeEncryption MethodKey Management
DatabaseAES-256Managed by infrastructure provider
File uploadsAES-256Unique keys per organization
BackupsAES-256Separate backup encryption keys
LogsAES-256Rotated encryption keys

Encryption in Transit

ConnectionProtocolMinimum Version
Browser to LedlyHTTPS/TLSTLS 1.2
API connectionsHTTPS/TLSTLS 1.2
CRM integrationsHTTPS/TLSTLS 1.2
Webhook deliveriesHTTPSTLS 1.2
Internal servicesmTLSTLS 1.3

Ledly does not support unencrypted HTTP connections. All HTTP requests are automatically redirected to HTTPS.


Authentication and Authorization

JWT-Based Authentication

Ledly uses JSON Web Tokens (JWT) for user authentication, providing secure, stateless session management.

Token Architecture

JWT Structure:
{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "user_id",
    "org": "organization_id",
    "role": "user_role",
    "iat": 1703577600,
    "exp": 1703664000
  },
  "signature": "HMAC-SHA256(header.payload, secret)"
}

Token Security Measures

MeasureImplementation
ExpirationTokens expire after 24 hours
RefreshSecure token refresh mechanism
RevocationImmediate invalidation on logout
SigningHMAC-SHA256 with rotating secrets
StoragehttpOnly cookies recommended

Role-Based Access Control (RBAC)

Ledly implements granular role-based access control to ensure users only access data and functions appropriate to their responsibilities.

Available Roles

RoleDescriptionCapabilities
OwnerOrganization ownerFull access, billing, user management
AdminAdministratorConfiguration, all lead operations, integrations
UserStandard userView and manage leads, limited settings
ViewerRead-only accessView leads and analytics only
VendorExternal lead vendorSubmit leads via API, view own submissions

Permission Matrix

ActionOwnerAdminUserViewerVendor
View leadsYesYesYesYesOwn only
Create leadsYesYesYesNoYes
Edit leadsYesYesYesNoNo
Delete leadsYesYesNoNoNo
Configure integrationsYesYesNoNoNo
Manage usersYesLimitedNoNoNo
Access billingYesNoNoNoNo
View analyticsYesYesYesYesOwn only
Configure webhooksYesYesNoNoNo

OAuth 2.0 for CRM Integrations

Ledly uses OAuth 2.0 to securely connect with CRM systems like HubSpot and Microsoft Dynamics.

Integration Security Model

Authorization Request

User initiates CRM connection from Ledly dashboard

Secure Redirect

User is redirected to CRM provider’s authorization page

User grants Ledly specific permissions on their CRM

Token Exchange

Authorization code exchanged for access and refresh tokens

Secure Storage

Tokens encrypted and stored with organization isolation

Automatic Refresh

Refresh tokens used to maintain connection without user intervention

CRM Integration Security

IntegrationOAuth VersionToken StorageScope Requested
HubSpotOAuth 2.0Encrypted, per-orgcontacts, forms
Microsoft DynamicsOAuth 2.0Encrypted, per-orgleads, contacts
SalesforceOAuth 2.0Encrypted, per-orgapi, refresh_token

Ledly requests only the minimum permissions necessary for lead synchronization. We do not request or store CRM credentials directly.


Data Protection

Personally Identifiable Information (PII) Handling

Ledly processes prospective student information that may include PII. We implement strict controls around this data:

PII Data Categories

CategoryExamplesSensitivity Level
Contact InformationName, email, phoneStandard
Demographic DataAddress, city, state, ZIPStandard
Educational InterestProgram of interest, start dateLow
Marketing AttributionUTM parameters, sourceLow
Custom FieldsVaries by institutionInstitution-defined

PII Protection Measures

MeasureImplementation
Access LoggingAll PII access is logged with user ID and timestamp
EncryptionPII encrypted at rest and in transit
MinimizationOnly required fields are collected
Retention LimitsConfigurable data retention policies
Export ControlsBulk exports require elevated permissions
AnonymizationAnalytics use anonymized/aggregated data

Data Retention Policies

Ledly provides configurable data retention to meet institutional policies and regulatory requirements.

Default Retention Periods

Data TypeDefault RetentionConfigurable
Lead data3 yearsYes (1-7 years)
Analytics2 yearsYes (1-5 years)
Audit logs1 yearNo (minimum)
Webhook logs30 daysNo
API request logs90 daysNo

Data Deletion

⚠️

When leads are deleted, they are soft-deleted for 30 days (recoverable), then permanently removed from all systems including backups within 90 days.

Multi-Tenant Data Isolation

Ledly is a multi-tenant platform serving multiple higher education institutions. We implement strict data isolation:

Isolation Architecture

Organization A          Organization B
     |                       |
     v                       v
[API Gateway with Org Validation]
     |                       |
     v                       v
[Org A Data Partition]  [Org B Data Partition]
     |                       |
     v                       v
[Org A Encryption Key]  [Org B Encryption Key]

Isolation Guarantees

LayerIsolation Method
ApplicationOrganization ID validated on every request
DatabaseRow-level security with organization filtering
EncryptionPer-organization encryption keys
BackupsLogical isolation with encrypted storage
LoggingOrganization-scoped log access

Cross-organization data access is architecturally impossible. There is no administrative override that allows viewing another organization’s data.


API Security

Rate Limiting

Ledly implements rate limiting to prevent abuse and ensure fair resource allocation.

Rate Limit Tiers

Endpoint CategoryLimitWindowBurst Allowed
Authentication10 requestsPer minuteNo
Lead Ingestion100 requestsPer minuteYes (150)
Lead Queries200 requestsPer minuteYes (300)
Bulk Operations10 requestsPer minuteNo
Analytics60 requestsPer minuteYes (90)

Rate Limit Headers

HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1703577660

When rate limited:

HTTP/1.1 429 Too Many Requests
Retry-After: 60
 
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please retry after 60 seconds.",
    "retry_after": 60
  }
}

Input Validation

All API inputs are validated before processing to prevent injection attacks and data corruption.

Validation Layers

LayerValidation TypePurpose
Schema ValidationJSON SchemaStructure enforcement
Type ValidationTypeScript/ZodType safety
Business RulesCustom validatorsDomain logic
SanitizationInput cleaningXSS prevention

Validated Fields

FieldValidation Rules
EmailRFC 5322 format, domain verification
PhoneE.164 format normalization
URLsValid URL format, HTTPS for webhooks
NamesAlphanumeric, reasonable length limits
Custom fieldsType-specific validation

CORS Policies

Cross-Origin Resource Sharing (CORS) is configured to allow only authorized origins.

CORS Configuration:
{
  "origin": ["https://app.ledly.io", "https://*.ledly.io"],
  "methods": ["GET", "POST", "PUT", "DELETE", "PATCH"],
  "allowedHeaders": ["Authorization", "Content-Type", "Authorization"],
  "credentials": true,
  "maxAge": 86400
}
⚠️

API requests from unauthorized origins are rejected. For embedded forms, use server-side integration or contact support for custom CORS configuration.

Webhook Signature Verification

All outgoing webhooks are signed using HMAC-SHA256 to ensure authenticity and integrity.

Signature Generation

Signature = HMAC-SHA256(timestamp + "." + payload, webhook_secret)

Verification Headers

HeaderPurpose
X-Ledly-SignatureHMAC-SHA256 signature
X-Ledly-TimestampUnix timestamp of request
X-Ledly-Webhook-IdWebhook configuration ID
X-Ledly-Delivery-IdUnique delivery attempt ID

Replay Attack Prevention

  • Timestamp must be within 5 minutes of current time
  • Each delivery ID is unique and can be used for idempotency
  • Signature includes timestamp to prevent reuse

Compliance Considerations

FERPA Awareness

The Family Educational Rights and Privacy Act (FERPA) governs the handling of student education records. While Ledly processes prospective student inquiries (typically before enrollment), we design our platform with FERPA principles in mind.

FERPA-Aligned Practices

PrincipleLedly Implementation
Access ControlRole-based access limits who can view lead data
Audit LoggingAll data access is logged and auditable
Data MinimizationCollect only necessary information
Consent AwarenessSupport for consent tracking fields
Vendor OversightSubprocessor agreements available

Ledly can execute a Data Processing Addendum (DPA) that addresses FERPA requirements upon request.

Education Records Considerations

Data TypeFERPA StatusLedly Handling
Pre-enrollment inquiriesGenerally not coveredStandard protection
Applicant dataMay be coveredEnhanced controls available
Enrolled student dataCoveredNot typically processed by Ledly

GDPR Considerations

For institutions with prospective students from the European Union, Ledly supports GDPR compliance requirements.

Lawful Basis Support

BasisLedly Support
ConsentConsent tracking fields, withdrawal support
Legitimate InterestDocumentation templates available
ContractApplicant processing support

Data Subject Rights

Ledly provides tools to support data subject rights:

RightImplementation
Right to AccessExport all data for an individual via API or dashboard
Right to RectificationEdit lead data at any time
Right to ErasureDelete leads with full removal from backups
Right to PortabilityExport data in machine-readable JSON format

Data Transfer Mechanisms

MechanismStatus
Standard Contractual Clauses (SCCs)Available on request
Data Processing AddendumAvailable on request
Subprocessor ListPublished and maintained

Additional Frameworks

FrameworkStatus
SOC 2 Type IIPlanned
ISO 27001Under consideration
CCPACompliant practices
State Privacy LawsMonitored and addressed

Incident Response

Monitoring and Logging

Ledly maintains comprehensive monitoring and logging to detect and respond to security incidents.

Monitoring Coverage

SystemMonitoring TypeAlert Threshold
ApplicationError rates, latency1% error rate
DatabaseQuery performance, connections80% capacity
APIRequest rates, authentication failures5 failures/minute
InfrastructureCPU, memory, disk85% utilization

Log Retention

Log TypeRetentionPurpose
Security events1 yearIncident investigation
Access logs90 daysAudit trail
Application logs30 daysDebugging
Performance metrics90 daysCapacity planning

Breach Notification Procedures

Ledly maintains a documented incident response plan with defined notification procedures.

Incident Classification

SeverityDefinitionResponse Time
CriticalActive data breach, system compromiseImmediate
HighPotential data exposure, vulnerability exploited4 hours
MediumSuspicious activity, minor vulnerability24 hours
LowPolicy violation, minor security issue72 hours

Notification Timeline

Detection

Incident identified through monitoring or report

Assessment (Within 4 hours)

Security team assesses scope and impact

Containment (Immediate)

Threat contained, evidence preserved

Notification (Within 72 hours)

Affected organizations notified per DPA terms and legal requirements

Remediation

Root cause addressed, systems hardened

Post-Incident Review

Lessons learned documented, procedures updated

⚠️

In the event of a confirmed data breach affecting your organization, you will be notified via email to your designated security contact within 72 hours of confirmation.


Vendor Security

Third-Party Integrations

Ledly integrates with various third-party services to provide CRM synchronization and webhook delivery.

Integration Security Requirements

IntegrationAuthenticationData Transmitted
HubSpotOAuth 2.0Lead data for sync
Microsoft DynamicsOAuth 2.0Lead data for sync
SalesforceOAuth 2.0Lead data for sync
Custom WebhooksHMAC-SHA256 signaturesLead events

Integration Data Flow

Ledly → Encrypted Connection (TLS 1.2+) → CRM/Webhook Endpoint

   OAuth Token or
   HMAC Signature

   Lead Data (PII)

Subprocessor Management

Ledly maintains a list of subprocessors that may handle customer data.

Current Subprocessors

SubprocessorPurposeData ProcessedLocation
RailwayInfrastructure hostingAll application dataUSA
PostgreSQL (Managed)DatabaseAll stored dataUSA
PostmarkTransactional emailEmail addressesUSA
SentryError monitoringError context (no PII)USA

Subprocessor Changes

Enterprise customers can request custom subprocessor notification preferences.


Security Practices

Secure Development Lifecycle

Ledly follows secure development practices throughout the software development lifecycle.

Development Security

PhaseSecurity Practice
DesignThreat modeling, security requirements
DevelopmentSecure coding standards, linting
Code ReviewMandatory peer review, security checklist
TestingSAST, DAST, dependency scanning
DeploymentAutomated pipelines, no manual deployments
OperationsMonitoring, incident response

Dependency Management

Third-party dependencies are monitored for vulnerabilities:

ToolPurposeFrequency
DependabotAutomated dependency updatesDaily
npm auditNode.js vulnerability scanningEvery build
SnykDeep dependency analysisWeekly

Vulnerability Response

SeverityResponse TimeAction
Critical24 hoursImmediate patch or mitigation
High7 daysPrioritized fix
Medium30 daysScheduled update
LowNext releaseBundled with updates

Code Review Practices

All code changes require review before deployment:

Pull Request

Developer creates PR with changes

Automated Checks

Linting, tests, security scans run automatically

Peer Review

At least one team member reviews code

Security Review

Security-sensitive changes flagged for security team

Approval

PR approved and merged to main branch

Deployment

Automated deployment with rollback capability


Security Contact

For security-related inquiries, vulnerability reports, or to request additional documentation:

PurposeContact
Security questions[email protected]
Vulnerability reports[email protected]
DPA requests[email protected]
General support[email protected]

Vulnerability Disclosure

If you discover a security vulnerability in Ledly:

  1. Email [email protected] with details
  2. Include steps to reproduce if possible
  3. Allow reasonable time for remediation before public disclosure
  4. We commit to acknowledging reports within 48 hours

Ledly does not currently operate a formal bug bounty program, but we appreciate responsible disclosure and will acknowledge researchers who report valid vulnerabilities.


Document History

VersionDateChanges
1.0December 2025Initial publication

Request Additional Information

For enterprise customers, additional documentation is available upon request:

  • Penetration test reports (under NDA)
  • SOC 2 readiness assessment
  • Custom security questionnaire completion
  • Technical architecture diagrams
  • Data flow documentation

Contact [email protected] to request access.