Slack & Mattermost Integrations
Get real-time notifications in your team chat when work happens.
Overview
TeeckIn can send notifications to Slack or Mattermost when timer, task, and time entry events occur. This helps teams stay informed about work progress without manual status updates.
Plan Limits
Personal vs Organization Integrations
You can configure integrations in two scopes:
- Personal — set up on your own account, fires for your activity in your personal context. You manage these here.
- Organization — set up by an admin or owner on an organization, fires for activity from that organization's members. Members cannot create or modify these. See the Teams docs for details.
When an Organization Suppresses Personal Integrations
The admin of an organization you belong to can enable a policy that suppresses personal integrations for events emitted while you work under that organization. When this happens, you'll see a yellow banner on your integrations page listing which organization is suppressing them.
Important: the suppression is scoped to that organization only. Your personal integrations still fire for:
- Events in your personal context (not associated with any org).
- Events in other organizations you belong to that have not enabled this policy.
Nothing is deleted. If the admin disables the policy later, your integrations resume firing for that organization automatically.
Getting a Webhook URL
Slack
- Go to api.slack.com/apps
- Click "Create New App" and choose "From scratch"
- Name it "TeeckIn" and select your workspace
- Go to "Incoming Webhooks" in the sidebar
- Toggle "Activate Incoming Webhooks" to On
- Click "Add New Webhook to Workspace"
- Select the channel to receive notifications
- Copy the webhook URL (starts with
https://hooks.slack.com/services/...)
Mattermost
- Go to your Mattermost server settings
- Navigate to Integrations → Incoming Webhooks
- Click "Add Incoming Webhook"
- Select a channel and give it a name like "TeeckIn"
- Copy the webhook URL
Keep Your Webhook URL Private
Setting Up an Integration
- Go to Settings → Integrations
- Click "Add Integration"
- Enter a name (e.g., "Client Updates")
- Choose platform (Slack or Mattermost)
- Paste your webhook URL
- Select which events to notify:
- Timer Started — when a timer begins
- Timer Stopped — when a timer ends (includes duration)
- Task Started — when a checklist task is marked "ongoing"
- Task Paused — when a checklist task is paused
- Task Completed — when a checklist task is done
- Task Dismissed — when a checklist task is dismissed (no longer needed)
- Task Deleted — when a checklist task is deleted
- Task Assigned — when a task is assigned to a team member (org only)
- Time Entry Logged — when a time entry is added manually (without the timer)
- Time Entry Edited — when the start or end time of an entry is changed (shows the duration before and after)
- Time Entry Removed — when a time entry is deleted
Enabling "Task Started" also enriches "Timer Started" notifications with the current task context (e.g., "Started timer on Project Alpha — Working on: Fix login bug").
- Choose a filter:
- All topics — notifies for any topic
- Specific topics — only selected topics
- Specific categories — all topics in selected categories
- Click "Create Integration"
Tip
Delivery History
Each integration tracks its recent delivery attempts. Click the clock icon on an integration card to view the delivery history.
The history shows:
- Delivered — message sent successfully
- Pending — message queued, will retry shortly
- Failed — message could not be delivered after 5 attempts
For failed deliveries, the error message helps diagnose issues like invalid webhook URLs or network problems. TeeckIn automatically retries failed deliveries up to 5 times with 5-minute intervals between attempts.
Message Format
TeeckIn sends messages with context about who did what and on which topic:
By default, messages are posted as “TeeckIn Bot” with the TeeckIn clock avatar. You can customize both per integration: set a bot name and a public HTTPS avatar image URL in the integration form (Slack and Mattermost only). Leave the fields empty to keep the defaults.
Optionally, Timer Stopped messages can include the total billable time not yet invoiced (a “Not billed yet” field). The total follows the integration's filter: with specific topics or categories selected it sums across all of them, and with “All topics” it covers your whole workspace. Since an integration is typically a client's channel, this reads as “how much work is waiting to be invoiced for this client” every time a timer stops there. It counts completed billable entries not linked to an invoice (cancelled invoices free their time up again), and it's off by default — enable “Include unbilled total when a timer stops” in the integration form.
Notification times
Batching
To avoid message spam, TeeckIn batches events within a configurable window (default: 10 seconds). Multiple events in that window are combined into a single message.
You can adjust the batch window from 5 to 60 seconds when creating or editing an integration. Longer windows mean fewer messages but less real-time updates.
AI Agent Events
By default, integrations notify for both human and AI agent activity. If you prefer to only see human activity, uncheck "Include AI agent events" when configuring the integration.
When AI agents trigger events, messages show their identity (e.g., "Claude" or your custom agent name) with an "AI Agent" badge for clear attribution.
Troubleshooting
Messages not appearing
- Check the delivery history (clock icon) for errors
- Verify your webhook URL is correct using the test button
- Check that the integration is enabled (toggle is on)
- Confirm the event type is selected (e.g., timer_start)
- Make sure the topic matches your filter settings
Webhook URL changed
If you regenerate your webhook URL, edit the integration in Settings → Integrations and paste the new URL. The old URL will stop working.
Rate limiting
Slack limits incoming webhooks to ~1 message/second. TeeckIn's batching respects this limit. If you see delayed messages during high activity, this is expected behavior.