Skip to content

Discord Integration

Connecting PulseRoster to Your Discord Server

PulseRoster integrates with Discord for authentication, role synchronization, and bot commands.


Linking Discord Server

Setup Steps

  1. Go to Settings > Discord
  2. Enter your Discord Guild ID
  3. Add the PulseRoster bot to your server
  4. Configure role mappings

Finding Your Guild ID

  1. Enable Developer Mode in Discord (Settings > Advanced)
  2. Right-click your server name
  3. Click Copy Server ID

Adding the Bot

  1. Click the Add Bot link in settings
  2. Select your Discord server
  3. Grant required permissions
  4. Complete authorization

Required Bot Permissions

Permission Purpose
Manage Roles Add/remove roles from members, including the on-duty role
View Channels Access server information
Read Messages Process commands
Send Messages Respond to commands
Embed Links Post the duty panel and command replies

Role Mapping

Map PulseRoster entities to Discord roles.

Mappable Entities

Entity Type Description
Ranks Department ranks
Subdivisions Specialized units
Certifications Member qualifications
Community Roles Title/badge roles

Setting Up Mappings

  1. Go to Settings > Discord
  2. Under each entity type, click Add Mapping
  3. Select the PulseRoster entity
  4. Select the Discord role
  5. Save

Example Mappings

PulseRoster Discord Role
Sergeant (Rank) @LSPD Sergeant
SWAT (Subdivision) @SWAT Unit
FTO (Certification) @Field Training Officer

Automatic Sync

When enabled, PulseRoster automatically syncs roles.

Sync Triggers

Event Action
Promotion Add new rank role, remove old
Demotion Add new rank role, remove old
Department Transfer Remove old department roles, add new ones
Termination Remove all mapped roles
Certification awarded Add certification role
Certification revoked Remove certification role
Subdivision joined Add subdivision role
Subdivision left Remove subdivision role

Enabling Auto-Sync

  1. Go to Settings > Discord
  2. Enable Automatic Role Sync
  3. Save


Discord Notifications

Send automatic notifications to Discord channels when events occur in PulseRoster.

Tier limits

Discord notifications are available on every plan, capped by plan: Free can configure up to 3 event types, Standard up to 15, and Professional all event types.

Setting Up Notifications

  1. Go to Settings > Notifications
  2. Click Sync Channels to load your Discord channels
  3. Configure events individually, or use a category's Apply to All to set one channel for every event in that category:
Setting Description
Event Type What triggers the notification
Channel Discord channel to send to
Role Mention Optional role to ping
Department Filter Limit to specific departments

Available Events

Event Description
Member Joined New member added to community
Member Left Member removed or terminated
Promotion Member rank increased
Demotion Member rank decreased
Department Transfer Member transferred between departments
LOA Requested Member submits an LOA request
LOA Approved LOA request approved (leave begins)
LOA Denied LOA request denied
LOA Returned Member returns from leave
Disciplinary Issued Disciplinary action issued
Disciplinary Appeal Member submits an appeal
Disciplinary Resolved Disciplinary action resolved/closed
Certification Awarded Certification granted
Certification Revoked Certification revoked
Commendation Award given
Transfer Requested Member requests a department transfer
Transfer Source Approved Source department approves the request
Transfer Denied Transfer request denied

Notification Format

Notifications are sent as rich embeds with:

  • Member name and avatar
  • Event details
  • Timestamp
  • Link to view in PulseRoster

Manual Sync

Force a complete role synchronization.

Full Sync

  1. Go to Settings > Discord
  2. Click Sync All Roles
  3. Wait for completion

This will:

  • Check all members
  • Add missing roles
  • Remove incorrect roles
  • Report any errors

Individual Sync

Sync a single member:

  1. Go to member profile
  2. Click Sync Discord Roles
  3. Roles update immediately

Discord Bot Commands

If your community uses the PulseRoster Discord bot, members can run these slash commands directly in your Discord server. Replies are only visible to the person who ran the command, so they never clutter a channel.

Available Commands

Command Description
/roster [department] Your roster, grouped by department, with rank and callsign
/lookup <member> A member's profile: status, rank, callsign, badge, certifications
/activity Your logged hours this period and progress toward your requirement
/loa <start> <end> <reason> Submit a leave of absence request
/duty on\|off\|status Clock on and off duty; see Duty Clock below

Members must link their Discord account

The bot identifies people by their linked Discord account. A member who has not connected Discord to their PulseRoster profile cannot use these commands; the bot replies with a link to connect it. Members link their account under Settings on their own profile.


Duty Clock

The duty clock lets members go on and off duty from Discord. The time between clocking in and clocking out is logged to their activity hours automatically, so there is nothing to fill in afterwards.

Included on every plan

The duty clock is part of activity tracking and is available on every plan, including Free.

Turning It On

  1. Go to Settings → Activity
  2. Scroll to Discord Duty Clock
  3. Tick Enable the duty clock and save

It is off by default. Nothing changes for your members until you enable it.

Clocking In and Out

Command What it does
/duty on [department] Go on duty. Uses your primary department unless you name another
/duty off Go off duty. Your hours are logged automatically
/duty status [department] See everyone currently on duty and how long they have been out

Members who serve in only one department never need the department option.

The Clock In/Out Panel

Instead of typing commands, you can put a permanent panel with Clock In and Clock Out buttons in a channel:

  1. Go to the channel you want the panel in
  2. Run /duty panel

The panel updates itself as people come on and off duty, so the channel always shows who is currently out. You need to be the community owner or hold the Manage Integrations staff permission to post one, and the bot needs permission to send messages and embeds in that channel.

Seeing Who Is On Duty

Alongside /duty status in Discord, your Time Logs page shows a live on-duty board with each person's department and how long they have been out, counting up in real time. Community staff see everyone, supervisors see their own departments, and members see their own shift.

Supervisor Controls

Command What it does
/duty forceoff <member> Clock someone out who logged off without doing it themselves
/duty onbehalf <member> [department] Start a shift for someone who cannot reach Discord

Supervisors can also clock someone out from the on-duty board on the Time Logs page. Hours from either action are always recorded as unverified and flagged for review, since nobody witnessed the shift directly.

Settings

Setting What it controls
Enable the duty clock Turns the whole feature on or off
Auto-verify Discord shifts Whether clock-out hours count as verified without supervisor review. Off by default
Maximum shift length How long a shift can run before it is closed automatically. Default 12 hours
Activity type for duty shifts Which activity type the hours are logged under. Default Patrol
On-duty Discord role An optional role applied while someone is on duty, so it shows in the member list

Forgotten Clock-Outs

If someone forgets to clock out, their shift is closed automatically once it passes your maximum shift length. They are credited only up to that limit, the hours are logged as unverified, and the entry is flagged for review. A forgotten clock-out therefore neither runs up hours nobody earned nor throws away a real shift.

The On-Duty Role

If you nominate a Discord role under Settings → Activity, the bot adds it when someone clocks in and removes it when they clock out, so who is out is visible at a glance in your member list.

For this to work the bot needs the Manage Roles permission, and the bot's own role must sit above the on-duty role in your server's role list. If the role does not appear, that hierarchy is almost always the reason. The role is cosmetic; if Discord rejects the change, the shift is still recorded correctly.


Troubleshooting

Roles Not Syncing

  1. Verify bot is in server: Check server member list
  2. Check bot permissions: Needs "Manage Roles"
  3. Check role hierarchy: Bot role must be above roles it manages
  4. Try manual sync: Use the sync button in settings

Common Issues

Issue Solution
"Missing Permissions" Move bot role higher in hierarchy
"Role not found" Verify role still exists in Discord
"User not found" Member may have left Discord server
"Rate limited" Wait a few minutes and try again

Duty Clock Issues

Issue Solution
"Link your Discord account first" The member has not connected Discord to their PulseRoster profile. They can do it under Settings on their own profile
"Duty clock is off" Enable it under Settings → Activity
"This server is not connected" The Discord server is not linked to your community. Connect it under Settings → Discord
"Which department?" The member serves in several departments and none is marked primary. Add the department to the command, or set a primary department
Commands do not appear Newly added commands can take up to an hour to show in every server. Try fully restarting your Discord client
On-duty role not applied The bot's own role must sit above the on-duty role, and the bot needs Manage Roles
Panel not updating The panel refreshes about once a minute. If it stopped entirely, re-run /duty panel; the old message may have been deleted

Bot Role Hierarchy

The PulseRoster bot can only manage roles below its own role. Ensure:

  1. Go to Discord Server Settings > Roles
  2. Drag the PulseRoster bot role above all roles it needs to manage
  3. Save changes

Multiple Discord Mappings

You can map multiple PulseRoster entities to the same Discord role.

Example

Map both "Sergeant" and "Senior Officer" ranks to the same "@Senior" Discord role.

Behavior

  • Role added when member has any mapped entity
  • Role removed only when member has no mapped entities

Quick Reference

Discord URLs

Page URL
Discord Settings /c/[slug]/settings/discord

Required Permissions

Action Permission
Configure Discord community.settings
Manual sync community.settings

Need help? Join our Discord Community for support.