-
Notifications
You must be signed in to change notification settings - Fork 0
Publishing Guide
Guide to publishing your Home Assistant integration to HACS (Home Assistant Community Store).
HACS is the Home Assistant Community Store - the primary distribution channel for custom integrations.
Benefits:
- Easy installation for users (one-click install)
- Automatic updates
- Larger audience reach
- Integration validation
- Community trust
Before submitting to HACS:
Minimum: Bronze tier (see Quality Scale Guide)
- ✅ Config flow implemented
- ✅ Automated tests
- ✅ Linting passes
- ✅ Proper manifest.json
Recommended: Silver/Gold tier for better user experience
- ✅ Public GitHub repository
- ✅ Proper LICENSE file (MIT, Apache 2.0, GPL-3.0, etc.)
- ✅ README.md with clear documentation
- ✅ Semantic versioning (tags/releases)
- ✅ Working integration (not broken)
README.md must include:
- What the integration does
- How to install (via HACS)
- How to configure
- Troubleshooting section
- Link to issue tracker
Your repository should look like this:
your-integration/
├── custom_components/
│ └── your_integration/
│ ├── __init__.py
│ ├── manifest.json
│ ├── config_flow.py
│ ├── coordinator.py
│ ├── const.py
│ ├── sensor.py
│ ├── strings.json
│ └── translations/
│ └── en.json
├── .github/
│ └── workflows/
│ └── validate.yml
├── tests/
│ └── ... (your tests)
├── README.md
├── LICENSE
├── hacs.json
└── .gitignore
Key points:
- Integration code MUST be in
custom_components/your_integration/ - NO other directories at root (like
config/,www/, etc.) - HACS will install the entire
custom_componentsdirectory
Create hacs.json in repository root:
{
"name": "Your Integration",
"content_in_root": false,
"homeassistant": "2024.4.0",
"render_readme": true,
"country": ["US"]
}Fields:
-
name: Display name in HACS -
content_in_root: Alwaysfalse(content is in custom_components/) -
homeassistant: Minimum HA version required -
render_readme: Show README in HACS -
country: ISO country codes (optional, for region-specific integrations)
Use MAJOR.MINOR.PATCH format:
- MAJOR: Breaking changes (config schema changes, removed features)
- MINOR: New features (backward-compatible)
- PATCH: Bug fixes (backward-compatible)
Examples:
-
1.0.0- Initial release -
1.1.0- Add new sensor platform -
1.1.1- Fix temperature sensor bug -
2.0.0- Change config flow (breaking)
REQUIRED: Update version in manifest.json:
{
"domain": "your_integration",
"name": "Your Integration",
"version": "1.1.0",
...
}HACS requires this field! Without it, submission will be rejected.
# Tag the release
git tag v1.0.0
git push origin v1.0.0
# Or create release via GitHub UI:
# Releases → Draft new release → Create tag → PublishRelease notes should include:
- What's new
- Bug fixes
- Breaking changes (if any)
- Upgrade instructions (if needed)
Before submitting, validate your integration:
Add to .github/workflows/validate.yml:
name: Validate
on:
push:
pull_request:
schedule:
- cron: "0 0 * * *"
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: HACS validation
uses: hacs/action@main
with:
category: integrationThis validates:
- ✅ Repository structure
- ✅ hacs.json format
- ✅ manifest.json version field
- ✅ Required files exist
# Check structure
ls custom_components/your_integration/manifest.json # Should exist
# Verify manifest has version
grep "version" custom_components/your_integration/manifest.json
# Verify hacs.json is valid JSON
python -m json.tool hacs.json
# Verify README exists
ls README.md- Create public GitHub repository
- Add LICENSE file
- Create comprehensive README.md
- Add hacs.json
- Update manifest.json with version
- Create v1.0.0 release
- Ensure HACS validation passes
Visit: https://github.com/hacs/default/blob/master/README.md
Follow instructions to:
- Fork the
hacs/defaultrepository - Add your repository to the appropriate JSON file
- Create pull request
PR format:
Add integration: Your Integration
Repository: https://github.com/username/your-integration
Type: integration
Category: integration
Review process:
- HACS maintainers will review your PR
- Validation checks must pass
- May request changes
- Usually takes 1-7 days
Common rejection reasons:
- Missing
versionin manifest.json - Invalid hacs.json format
- Broken integration
- Missing documentation
- License issues
- Duplicate/similar existing integration
Once merged:
- ✅ Integration appears in HACS
- ✅ Users can install via HACS UI
- ✅ Updates are automatic
- Make changes
-
Update manifest.json version:
"version": "1.1.0"
- Commit and push
-
Create new release:
git tag v1.1.0 git push origin v1.1.0
- Users get update notification in HACS
No need to submit PR again! HACS automatically detects new releases.
README.md should include:
# Your Integration
## Installation
### HACS (Recommended)
1. Open HACS
2. Go to Integrations
3. Search for "Your Integration"
4. Click Install
### Manual
1. Copy `custom_components/your_integration` to `<config>/custom_components/`
2. Restart Home Assistant
## Configuration
1. Go to Settings → Devices & Services
2. Click Add Integration
3. Search for "Your Integration"
4. Follow setup wizard
## Features
- List features
- Be specific
## Troubleshooting
Common issues and solutions
## Support
- [Report Issues](https://github.com/username/repo/issues)
- [Discussions](https://github.com/username/repo/discussions)Maintain CHANGELOG.md:
# Changelog
## [1.1.0] - 2026-02-07
### Added
- New humidity sensor
### Fixed
- Temperature sensor precision
## [1.0.0] - 2026-02-01
- Initial releaseIf introducing breaking changes:
- Bump MAJOR version (e.g., 1.9.0 → 2.0.0)
- Document migration in README and release notes
- Provide migration guide if config schema changes
- Consider deprecation period (warn in 1.9.0, break in 2.0.0)
Cause: Integration not in custom_components/
Fix:
# Move files to correct location
mkdir -p custom_components/your_integration
mv *.py custom_components/your_integration/Cause: No version field
Fix:
{
"domain": "your_integration",
"version": "1.0.0",
...
}Cause: No GitHub releases created
Fix:
git tag v1.0.0
git push origin v1.0.0After publishing:
- Monitor issues and provide support
- Release updates regularly
- Engage with users in Discussions
- Consider submitting to HA Core (if applicable)
- Development Guide - Build your integration
- Quality Scale Guide - Improve quality
- Testing Guide - Write tests
- Troubleshooting - Fix common issues