A production-ready, enterprise-grade integration system that connects ERPNext with Indeed for automated job posting and application management. This app enables seamless synchronization of job openings from ERPNext to Indeed and automatically processes incoming job applications with advanced analytics and monitoring.
| Feature | Status | Description |
|---|---|---|
| π― Core Integration | β Working | XML feed, webhooks, job sync |
| π Analytics Dashboard | β Working | Real-time metrics and performance |
| π± Application Processing | β Working | Automatic Job Applicant creation |
| π§ Bulk Operations | β Working | Mass job management tools |
| π§ͺ A/B Testing | β Working | Job optimization campaigns |
| π‘οΈ Security | β Working | HMAC validation, data protection |
| π¦ Auto-Installation | β Working | Automatic HRMS dependency handling |
Current Installation Base: Successfully deployed and tested
Last Updated: September 28, 2025
Maintenance Status: Actively maintained
- π― Automated Job Posting: Jobs created in ERPNext automatically appear on Indeed
- π¨ Application Sync: Job applications from Indeed automatically create Job Applicant records
- π Multiple Integration Methods: XML Feed, Partner API, and Third-party aggregators
- β‘ Real-time Updates: Jobs sync immediately when posted or updated
- π Secure Processing: HMAC webhook validation and encrypted data handling
- π Indeed Dashboard: Real-time performance metrics and success tracking
- π Application Analytics: Deep insights into candidate sources and conversion rates
- π Bulk Job Manager: Mass operations for enterprise-scale job management
- π§ͺ A/B Test Campaigns: Scientific job posting optimization and testing
- π― Performance Monitoring: Complete audit trails and error tracking
- ποΈ Custom Fields: Enhanced Job Opening form with Indeed-specific options
- π‘οΈ Webhook Security: Military-grade security with signature validation
- π± Mobile Responsive: Works perfectly on all devices and screen sizes
- βοΈ Automatic Setup: One-command installation with dependency management
- π GDPR Compliant: Privacy controls and data protection built-in
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ERPNext System β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β Job Opening β βJob Applicantβ β Indeed Integration β β
β β DocType β β DocType β β Settings β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Indeed Integration Module β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
β β β utils.py β β api.py β β hooks.py β β β
β β β (Core Logic)β β(API Endpoints)β β (Triggers) β β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Indeed Platform β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Job Search Results π₯ Candidate Applications β
β π Job Listings π Resume Database β
β π― Targeted Ads π Analytics & Reporting β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- ERPNext v15.x or higher (Core platform)
- HRMS v1.x or higher (Required for Job Opening and Job Applicant DocTypes)
- Python 3.8+
- MariaDB/MySQL database
- Internet connectivity for Indeed API access
The Indeed app will automatically install HRMS if it's not already installed.
# Navigate to your Frappe bench
cd /path/to/your/frappe-bench
# Get the app (automatically downloads HRMS if needed)
bench get-app https://github.com/exvas/Indeed.git
# Install on your site (automatically installs HRMS first)
bench --site your-site.local install-app indeed
# Migrate and restart
bench --site your-site.local migrate
bench restartIf you need to install HRMS manually first:
# Install HRMS first
bench get-app hrms
bench --site your-site.local install-app hrms
# Then install Indeed
bench get-app https://github.com/exvas/Indeed.git
bench --site your-site.local install-app indeed
# Migrate and restart
bench --site your-site.local migrate
bench restart# If developing locally
cd /path/to/your/frappe-bench
bench get-app indeed /path/to/indeed/app
bench --site your-site.local install-app indeedAfter installation, verify that both apps are installed:
# Check installed apps
bench --site your-site.local list-apps
# You should see:
# frappe
# erpnext
# hrms β
# indeed β
Navigate to Indeed Integration Settings and configure:
- Default Company: Select your company from ERPNext
- Company Website URL: Your company's website
- HR Contact Email: Email for application notifications
Choose your preferred integration method:
- XML_FEED: Indeed crawls an XML file (recommended for most users)
- API: Direct Indeed Partner API integration (requires Indeed partnership)
- THIRD_PARTY: Integration through job board aggregators
- Webhook Secret: Set a strong password for webhook validation
- Enable Auto Posting: Toggle automatic job posting to Indeed
- Feed URL:
https://yourdomain.com/files/indeed_jobs.xml - Updates automatically when jobs are posted/modified
- Cached for performance optimization
- Webhook URL:
https://yourdomain.com/api/method/indeed.indeed.api.webhook_job_application - Validates incoming application data from Indeed
- Creates Job Applicant records automatically
- Go to HR > Job Opening
- Fill in all job details (title, description, location, salary, etc.)
- Important: Check the "Post to Indeed" checkbox
- Set job status to "Open"
- Save the job opening
- Navigate to Indeed > Indeed Job Integration
- Find your job in the list
- Check status:
- Posted: Successfully published to Indeed
- Failed: Needs attention (check error logs)
- Pending: Processing in queue
- Bulk Operations: Use Indeed > Bulk Job Manager for mass operations
- Analytics: View performance in Indeed > Indeed Dashboard
- A/B Testing: Create test campaigns in Indeed > AB Test Campaign
Applications from Indeed automatically:
- Create Job Applicant records in ERPNext
- Download candidate resumes (if available)
- Process screening question responses
- Send email notifications to HR team
- Link to original job opening
To view applications:
- Go to HR > Job Applicant
- Filter by Source = "Indeed"
- Review and process applications normally
graph TD
A[Job Opening Created] --> B[Generate XML Feed]
B --> C[Indeed Crawls Feed]
C --> D[Job Appears on Indeed]
D --> E[Applications via Webhook]
E --> F[Job Applicant Created]
Pros:
- Simple to set up
- No API rate limits
- Works with standard Indeed accounts
- Reliable and stable
Cons:
- Not real-time (depends on Indeed crawl frequency)
- Limited customization options
graph TD
A[Job Opening Created] --> B[GraphQL API Call]
B --> C[Real-time Posting]
C --> D[Immediate Indeed Listing]
D --> E[Enhanced Analytics]
Pros:
- Real-time posting
- Enhanced analytics and reporting
- Better job targeting options
- Premium placement features
Cons:
- Requires Indeed partnership
- API rate limits apply
- More complex setup
graph TD
A[Job Opening Created] --> B[Aggregator API]
B --> C[Multi-Board Posting]
C --> D[Indeed + Other Boards]
D --> E[Centralized Analytics]
Pros:
- Posts to multiple job boards
- Single integration point
- Often includes additional services
- Comprehensive reporting
Cons:
- Additional costs
- Dependency on third-party service
- Potential data format limitations
Comprehensive analytics including:
- Posting Performance: Success rates, error tracking
- Application Metrics: Application volume, conversion rates
- Job Analytics: Most popular jobs, location performance
- Time-based Reports: Trends over time, peak application periods
Mass operations for:
- Bulk Posting: Post multiple jobs simultaneously
- Status Updates: Change multiple job statuses
- Bulk Editing: Update job details across multiple postings
- Export/Import: CSV operations for large job sets
Detailed insights into:
- Source Attribution: Track application sources
- Candidate Quality: Scoring and filtering
- Response Times: Application processing metrics
- Geographic Distribution: Candidate location analysis
Optimize job performance by testing:
- Job Titles: Different title variations
- Descriptions: Content optimization
- Requirements: Qualification variations
- Benefits: Compensation and perk emphasis
- Webhook Validation: HMAC signature verification
- HTTPS Enforcement: Secure data transmission
- Data Encryption: Sensitive information protection
- Access Control: Role-based permissions
- GDPR Compliance: Candidate data protection
- Data Retention: Configurable retention policies
- Audit Trails: Complete activity logging
- Privacy Controls: Candidate data anonymization
Symptoms: Job created but not visible on Indeed Solutions:
- Check "Post to Indeed" checkbox is enabled
- Verify job status is "Open"
- Check Indeed Job Integration record for errors
- Validate XML feed at
/files/indeed_jobs.xml - Ensure all required fields are completed
Symptoms: Indeed applications not appearing in ERPNext Solutions:
- Verify webhook URL configuration with Indeed
- Check webhook secret matches Indeed settings
- Review Error Log for webhook processing failures
- Test webhook endpoint manually
- Ensure Job Opening exists and is active
Symptoms: Installation fails with "DocType Job Opening not found" or similar Solutions:
- Ensure HRMS is installed:
bench --site site.local list-apps - Install HRMS manually:
bench get-app hrms && bench --site site.local install-app hrms - Reinstall Indeed after HRMS:
bench --site site.local install-app indeed - Check app order in sites/apps.txt (hrms should come before indeed)
- Migrate after installation:
bench --site site.local migrate
Symptoms: Feed not updating or showing errors Solutions:
- Check file permissions on
sites/assets/files/ - Verify background job processing
- Manual regeneration:
bench execute indeed.indeed.utils.generate_xml_feed - Check site URL configuration
- Validate XML format and encoding
Symptoms: Slow job posting or application processing Solutions:
- Enable Redis caching
- Optimize database indexes
- Configure CDN for XML feed
- Monitor server resources
- Review background job queue
# Check integration settings
bench --site your-site.local execute "import frappe; print(frappe.get_single('Indeed Integration Settings').as_dict())"
# Validate XML feed
curl https://your-site.com/files/indeed_jobs.xml
# Test webhook endpoint
bench --site your-site.local execute "from indeed.indeed.api import webhook_job_application; print('Webhook function loaded')"- Error Log: System > Error Log (filter by "Indeed")
- Background Jobs: System > RQ Job (monitor processing)
- Integration Records: Indeed > Indeed Job Integration
- Application Logs: Check webhook processing logs
- URL:
/api/method/indeed.indeed.api.webhook_job_application - Method: POST
- Authentication: HMAC signature validation
- Content-Type: application/json
Request Format:
{
"job": {
"id": "indeed_job_id",
"title": "Software Engineer",
"company": "Company Name"
},
"candidate": {
"email": "candidate@example.com",
"name": "John Doe",
"phone": "+1234567890",
"resume_url": "https://indeed.com/resume/123"
},
"application": {
"date": "2025-09-28T10:30:00Z",
"cover_letter": "Application cover letter text",
"screening_answers": []
}
}- URL:
/api/method/indeed.indeed.api.generate_xml_feed_manual - Method: GET
- Authentication: User session required
- URL:
/api/method/indeed.indeed.api.test_indeed_integration - Method: POST
- Authentication: User session required
- Set strong webhook_secret in Indeed Integration Settings
- Enable HTTPS for production domain
- Configure rate limiting for webhook endpoints
- Set up firewall rules for API endpoints
- Enable two-factor authentication for admin users
- Enable Redis caching for XML feed
- Set up CDN for job XML feed delivery
- Monitor database performance for high job volumes
- Configure backup strategy for job data
- Optimize database indexes for job queries
- Set up error alerting for failed integrations
- Monitor webhook response times
- Track job posting success rates
- Set up log rotation for Indeed integration logs
- Configure uptime monitoring for webhook endpoints
- Ensure GDPR compliance for applicant data
- Set data retention policies
- Configure audit trails for job postings
- Review Indeed's terms of service compliance
- Set up data anonymization procedures
- π Automatic Dependency Management: Installs HRMS automatically if not present
- β‘ Real-time Integration: Jobs sync immediately when posted
- π‘οΈ Secure Webhook Processing: HMAC signature validation for applications
- π Advanced Analytics: Comprehensive dashboards and performance metrics
- π§ Bulk Operations: Mass job management and A/B testing capabilities
- π Error Monitoring: Complete audit trails and error tracking
- β Thoroughly Tested: All major features validated and working
- β SQL Error Free: All database queries optimized and error-free
- β Performance Optimized: Efficient XML generation and caching
- β GDPR Compliant: Data protection and privacy controls built-in
- β Scalable Architecture: Handles high-volume job posting and applications
- π Documentation: This comprehensive README covers all features
- π Error Logs: System > Error Log for detailed error information
- π¬ Community: ERPNext Community Forum for general questions
- π GitHub Issues: Report bugs and request features
We welcome contributions! Here's how to get started:
-
Fork the repository
git clone https://github.com/exvas/Indeed.git cd Indeed -
Create a feature branch
git checkout -b feature/your-amazing-feature
-
Make your changes
- Follow existing code patterns
- Add tests for new functionality
- Update documentation as needed
-
Test your changes
# Install in development mode bench get-app . --branch your-branch bench --site development.local install-app indeed bench --site development.local set-config developer_mode 1
-
Submit your contribution
git commit -m 'Add amazing feature: detailed description' git push origin feature/your-amazing-featureThen open a Pull Request with a clear description.
- Code Quality: Follow PEP 8 for Python code
- Documentation: Update README.md for user-facing changes
- Testing: Test all new features thoroughly
- Security: Validate all inputs and use secure practices
- π Multi-Board Integration: Support for LinkedIn, Glassdoor, etc.
- π€ AI Job Optimization: Smart job description optimization
- π± Mobile App: Mobile management interface
- π Advanced Sync: Bi-directional job status synchronization
- π Enhanced Analytics: Predictive analytics and insights
- v1.0.0: Core integration with XML feed and webhook support
- v1.1.0: Advanced analytics and bulk operations
- v1.2.0: A/B testing and performance optimization
- v1.3.0: Automatic dependency management and enhanced security
MIT License - Feel free to use, modify, and distribute.
- π¨βπ» Name: Sammish Thundiyil
- π§ Email: sammish.thundiyil@gmail.com
- π GitHub: @exvas
- π¦ Repository: https://github.com/exvas/Indeed
- π Issues: https://github.com/exvas/Indeed/issues
- π Wiki: https://github.com/exvas/Indeed/wiki
Special thanks to:
- ERPNext Community for the amazing framework
- Frappe Technologies for ERPNext and HRMS
- Indeed for their integration-friendly platform
- Contributors who help improve this integration
π Made with β€οΈ for the ERPNext Community π
Ready to supercharge your recruitment process?
β Star this repo β’ π Report Issues β’ π‘ Request Features