| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Employees (hr) • Discuss (mail) |
| Lines of code | 783 |
| Technical Name |
slack_attendance_integration |
| License | LGPL-3 |
| Website | https://github.com/anmol6213 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Employees (hr) • Discuss (mail) |
| Lines of code | 783 |
| Technical Name |
slack_attendance_integration |
| License | LGPL-3 |
| Website | https://github.com/anmol6213 |
HR Attendance Module
Slack Attendance
Integration
Let your team check-in, check-out and manage breaks directly from Slack — synced live to Odoo HR Attendance. Zero friction. Zero extra apps.
Resumed (25 min > 5 min — counted)
/logout
Logged out | Net 8h 15m [done] ✓
THE PROBLEM
Attendance tracking shouldn't be a second job
Switching apps, forgetting to log in, manual HR entries — it adds up to wasted time and inaccurate data.
Before
Open browser → find Odoo → click Attendance → click Check In → go back to Slack
After
Type /login in Slack. Done. Odoo attendance updated instantly.
SLASH COMMANDS
Four commands. That's all your team needs.
/login
Records attendance in Odoo. Grace minutes applied automatically.
/logout
Closes record. Net working hours calculated instantly.
/break
Starts timed break. Short breaks under threshold not deducted.
/resume
Returns from break. Duration saved to Odoo attendance record.
EXPLORE
Features & Screenshots
Login Grace Minutes
Type /login at 9:03 AM with 5-min grace? Odoo records 8:58 AM. No more penalising employees for being seconds late.
Minimum Break Threshold
Breaks under the minimum are saved but not deducted. A quick coffee doesn't penalise your team.
Net Working Hours
Net = Total − Counted Breaks — live in Odoo Attendance list & form view.
HMAC-SHA256 Verified
Every Slack request verified before any DB action. 5-minute replay window blocks stale requests.
Per-Employee Timezone
Times shown in each employee's own timezone from HR record. No hardcoded IST. Works globally.
Missed Logout Alerts
Forgot /logout? Automatic Slack DM reminder via scheduled cron. No more open records.
Odoo — Configuration & Data
Bot Token, Signing Secret, Webhook URL, grace minutes & summary settings — all in one place.
Slack User ID field on HR employee form. Paste member ID to link Slack to Odoo attendance.
List view extended with Net Working Hours column for instant daily overview.
Full break list, net hours & AI summary all on a single attendance record.
Slack — Commands & Bot Replies
Employee types /login. AttendBot confirms check-in time with grace minutes applied.
/break starts timer. /resume ends it — bot shows duration and whether it was counted.
/logout shows total hours, break time & net working hours. Clean end-of-day confirmation.
Personalised daily DM by Claude AI — employee's actual hours, streak & target.
SETUP
Live in 5 steps.
Install Module
Add to addons path, restart Odoo, install from Apps menu
Create Slack App
Add 4 slash commands at api.slack.com/apps
Configure
Paste Bot Token, Signing Secret & Webhook URL in Odoo
Link Employees
Add Slack User ID to each HR employee record
Done!
Team uses /login from Slack — Odoo updates instantly
SCREENSHOTS
See it in action
From Odoo settings to Slack conversations — every screen you'll interact with.
Odoo — Configuration & Data
Bot Token, Signing Secret, Webhook URL, grace minutes, break threshold & summary settings — all in one place.
Slack User ID field on the HR employee form. Paste the member ID to link Slack to Odoo attendance.
Standard list view extended with Net Working Hours column for instant daily overview.
Full break list, net hours, and AI summary all visible on a single attendance record.
Slack — Commands & Bot Replies
Employee types /login. AttendBot confirms check-in time with grace minutes applied.
/break starts timer. /resume ends it — bot shows duration and whether it was counted.
On /logout, bot shows total hours, break time, and net working hours. Clean end-of-day confirmation.
Personalised daily DM generated by Claude AI — employee's actual hours, streak & target. Sent at configured time.
CONFIGURATION
All settings in one place.
| Setting | Default | Description |
|---|---|---|
| Login Grace Minutes | 5 |
Subtract N minutes from actual check-in time |
| Min Break Minutes | 5 |
Breaks below this saved but not deducted |
| Min Working Hours | 8.0 |
Daily target for summaries & alerts |
| Send Daily Summary | True |
End-of-day Slack DM to each employee |
| Summary Time | 18:00 |
Hour (24h) when the daily cron fires |
| Enable AI Summaries | False |
Use Claude AI for personalised messages |
| Anthropic API Key | — |
sk-ant- key — admins only |
Built with ❤ by Anmol Patil • LGPL-3 License • Odoo 19.0
For support: your-email@example.com
Slack Attendance Integration
Track employee attendance directly from Slack — no separate app, no browser required. Employees use simple slash commands to check in, check out, and manage breaks, all synced automatically with Odoo's HR Attendance module.
Features
Slack Slash Commands
| Command | Action |
|---|---|
| /login | Check in — records attendance in Odoo |
| /logout | Check out — closes attendance record |
| /break | Start a break |
| /resume | End a break and return to work |
Smart Login Grace Time
Configure a grace window (e.g. 5 minutes) so that an employee who types /login at 10:00 AM is recorded as checking in at 9:55 AM. This removes the pressure of racing the clock.
Break Threshold
Short interruptions (bathroom, coffee) that fall below the configured minimum break duration are saved but not deducted from working hours. Only meaningful breaks count.
Net Working Hours
Every attendance record shows:
Net Working Hours = Total Hours − Counted Break Time
AI-Powered Daily Summary (optional)
When enabled with an Anthropic API key, each employee receives a personalised Slack DM at end-of-day. The message references their actual hours, streak, and target — not a generic template.
Daily Attendance Alert
Employees who forgot to /logout receive an automatic reminder DM.
Installation
Requirements
- Odoo 17.0 or 18.0
- Python packages: certifi, pytz (both included in standard Odoo)
- A Slack workspace with a configured App (slash commands + bot token)
Steps
Copy the slack_attendance_integration folder into your Odoo addons path.
Restart the Odoo server.
In Odoo, go to Apps → search for Slack Attendance → click Install.
Navigate to Attendances → Configuration → Slack Settings.
Fill in:
- Slack Signing Secret — from your Slack app's Basic Information page
- Bot Token — starts with xoxb-
- Incoming Webhook URL — from Incoming Webhooks in your Slack app
Set the Webhook URL in your Slack app's slash commands to:
https://<your-odoo-domain>/slack/attendance
For each employee, open their HR record and add their Slack User ID (found in Slack → profile → Copy member ID).
Slack App Configuration
Create a new Slack app at https://api.slack.com/apps and configure:
Slash Commands
Create four commands, all pointing to the same URL:
| Command | Usage hint |
|---|---|
| /login | Check in to office |
| /logout | Check out from office |
| /break | Start a break |
| /resume | Resume work after a break |
Required Bot Token Scopes
- chat:write — to send DMs to employees
- commands — to respond to slash commands
AI Summary Setup (optional)
- Get an API key from https://console.anthropic.com
- In Slack Settings, enable AI Summaries and paste the key.
- The daily cron job will now send personalised messages instead of the default template.
Note
The API key is visible only to Odoo System Administrators. Summaries are generated once per day and cached on the attendance record.
Configuration Reference
| Field | Description |
|---|---|
| Login Grace Minutes | Subtract N minutes from actual login time |
| Minimum Break Minutes | Breaks shorter than this are not counted |
| Minimum Working Hours | Target hours for daily summary comparison |
| Send Daily Summary | Enable end-of-day Slack DM |
| Summary Time | Hour (24h format) when the cron fires |
| Enable AI Summaries | Use Claude AI for personalised messages |
| Anthropic API Key | Your sk-ant- key (admin-only) |
Security
- Every request from Slack is verified using HMAC-SHA256 with your Signing Secret before any database action is performed.
- Replay attacks are blocked — requests older than 5 minutes are rejected.
- SSL connections use the certifi CA bundle (no certificate verification bypass).
- The Anthropic API key is stored in an admin-only field group.
Changelog
17.0.1.0.0 (2024)
- Initial release
- Login / logout / break / resume slash commands
- Grace minutes and minimum break threshold
- Net working hours computation
- Daily Slack summary via cron
- AI-powered personalised summaries (Claude)
- HMAC-SHA256 Slack signature verification
- certifi-based SSL — no CERT_NONE
- Employee timezone support (no hardcoded IST)
Support
- GitHub: https://github.com/anmol6213/slack_attendance_integration
- Issues: https://github.com/anmol6213/slack_attendance_integration/issues
Please log in to comment on this module