This document describes the enterprise contact system implemented for Eve (LibreChat), which allows potential enterprise customers to submit contact forms through a multi-step process similar to Lovable's contact flow.
The system consists of:
- Frontend: Multi-step contact form with modern UI
- Backend: RESTful API endpoints for contact management
- Database: MongoDB collection for storing contact submissions
- Admin Interface: API endpoints for managing contacts (admin-only)
- Collection:
enterprisecontacts - Schema:
packages/data-schemas/src/schema/enterpriseContact.ts - Model:
api/models/EnterpriseContact.js
POST /api/enterprise-contact- Submit new contact (public)GET /api/enterprise-contact- List contacts (admin only)GET /api/enterprise-contact/:contactId- Get specific contact (admin only)PUT /api/enterprise-contact/:contactId- Update contact (admin only)DELETE /api/enterprise-contact/:contactId- Delete contact (admin only)
- ContactPage:
client/src/components/Contact/ContactPage.tsx - Route:
/contact
- First name* (required)
- Last name* (required)
- Work email* (required)
- Phone number (optional)
- Company website* (required)
- Problem to solve with Eve
- Expected number of end-users
- Current tools to replace
- Use cases (checkboxes):
- Product Prototype Development
- Internal Tool Building
- Customer Portal Creation
- MVP Development
- UI/UX Prototyping
- Custom Web Applications
- SaaS Product Development
- Other
- Compliance needs (checkboxes):
- SOC 2
- HIPAA
- GDPR
- On-prem hosting
- None / Unsure
- Timeline dropdown:
- Immediately
- Within 1 month
- Within 3 months
- Within 6 months
- More than 6 months
- Just exploring
- Additional information (free text)
- Multi-step form with progress indicator
- Form validation with required field checking
- Responsive design matching Eve's design system
- Success page after submission
- Loading states during submission
- Error handling with user-friendly messages
- Navigation integration with pricing page
- Duplicate prevention based on email address
- Data validation with Mongoose schema validation
- Pagination for admin contact listing
- Search functionality across name, email, and company
- Status tracking (new, contacted, qualified, closed)
- Audit trail with timestamps
- UUID generation for contact IDs
- Admin-only endpoints for contact management
- JWT authentication required for admin operations
- Input sanitization with express-mongo-sanitize
- Email validation with regex patterns
- Rate limiting (inherited from main app)
contactId: Unique UUID identifierfirstName: Contact's first namelastName: Contact's last nameworkEmail: Business email addressphoneNumber: Phone number (optional)companyWebsite: Company website URL
problemToSolve: Description of problem to solveendUsersCount: Expected number of userscurrentTools: Tools they want to replaceuseCases: Array of selected use casescomplianceNeeds: Array of compliance requirementstimeline: Implementation timelineadditionalInfo: Additional notes
status: Contact status (new, contacted, qualified, closed)contactedAt: Date when status changed to contactednotes: Internal notes (admin only)createdAt: Submission timestampupdatedAt: Last modification timestamp
- "Contact Sales" button in Enterprise tier navigates to
/contact - Seamless flow from pricing to contact form
- Token balance errors include upgrade prompts
- Links to pricing page for Pro upgrades
- Contact page accessible at
/contact - Back to chat functionality
- Standalone layout (no sidebar)
GET /api/enterprise-contact?page=1&limit=20&status=new&search=companyPUT /api/enterprise-contact/:contactId
{
"status": "contacted",
"notes": "Initial call scheduled for next week"
}- Filter by status:
?status=new - Search across fields:
?search=acme - Pagination:
?page=2&limit=10 - Sorting:
?sortBy=createdAt&sortOrder=desc
packages/data-schemas/src/schema/enterpriseContact.ts # Schema definition
api/models/EnterpriseContact.js # Model and methods
api/server/controllers/EnterpriseContactController.js # Request handlers
api/server/routes/enterpriseContact.js # Route definitions
client/src/components/Contact/ContactPage.tsx # Frontend component
No additional environment variables required. Uses existing MongoDB connection and JWT authentication.
- Uses existing project dependencies
- No additional packages required
- Leverages LibreChat's design system and routing
- Email notifications when new contacts are submitted
- CRM integration (Salesforce, HubSpot, etc.)
- Lead scoring based on company size and use cases
- Automated follow-up email sequences
- Analytics dashboard for contact metrics
- File upload capability for RFPs or requirements
- Calendar integration for scheduling demos
- Webhook support for external integrations
Consider building a dedicated admin interface for:
- Contact management
- Lead qualification
- Follow-up tracking
- Reporting and analytics
- Bulk operations
- Navigate to
/contact - Fill out the multi-step form
- Submit and verify success page
- Check database for new contact record
- Test admin endpoints with proper authentication
# Submit new contact
curl -X POST http://localhost:3080/api/enterprise-contact \
-H "Content-Type: application/json" \
-d '{"firstName":"John","lastName":"Doe","workEmail":"john@example.com","companyWebsite":"example.com"}'
# List contacts (requires admin auth)
curl -X GET http://localhost:3080/api/enterprise-contact \
-H "Authorization: Bearer <admin-jwt-token>"- Contact submission rate
- Conversion from pricing page
- Response time to new contacts
- Contact status progression
- Popular use cases and compliance needs
- All contact submissions are logged
- Admin operations are logged
- Error conditions are logged with context
- Duplicate submissions are logged for analysis