Slack & Mattermost Integrations - Docs | TeeckIn

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

Free plans can create 1 integration. Pro plans allow up to 10 integrations, and Team plans allow up to 25.

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

  1. Go to api.slack.com/apps
  2. Click "Create New App" and choose "From scratch"
  3. Name it "TeeckIn" and select your workspace
  4. Go to "Incoming Webhooks" in the sidebar
  5. Toggle "Activate Incoming Webhooks" to On
  6. Click "Add New Webhook to Workspace"
  7. Select the channel to receive notifications
  8. Copy the webhook URL (starts with https://hooks.slack.com/services/...)

Mattermost

  1. Go to your Mattermost server settings
  2. Navigate to Integrations → Incoming Webhooks
  3. Click "Add Incoming Webhook"
  4. Select a channel and give it a name like "TeeckIn"
  5. Copy the webhook URL

Keep Your Webhook URL Private

Webhook URLs allow anyone with the URL to post to your channel. Never share them publicly or commit them to version control. TeeckIn encrypts webhook URLs at rest.

Setting Up an Integration

  1. Go to Settings → Integrations
  2. Click "Add Integration"
  3. Enter a name (e.g., "Client Updates")
  4. Choose platform (Slack or Mattermost)
  5. Paste your webhook URL
  6. 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").

  7. Choose a filter:
    • All topics — notifies for any topic
    • Specific topics — only selected topics
    • Specific categories — all topics in selected categories
  8. Click "Create Integration"

Tip

You can test your integration using the play button on the integration card. This sends a test message to verify your webhook URL works.

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.

Timer Started|Project Alpha
Jordan started working on Project Alpha
Task Completed|Fix login bug
Claude (AI Agent) completed "Fix login bug" in 12m on Project Alpha

Notification times

Time entry notifications include a When field with the entry's start and end times, shown in your account timezone with the zone labelled (e.g., "May 18, 02:00 PM – 04:15 PM (EDT)"). TeeckIn detects your timezone automatically; change it under Billing → Settings → Business → Regional. Entries fall back to UTC until a timezone is set.

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.

Was this helpful?