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 board and command replies

Department Discord Servers

Link more Discord servers alongside your main one, such as a DOT or Fire department's own server.

Linking a Server

  1. Go to Settings > Discord
  2. Under Department servers, enter a name, the server's ID and (optionally) the department it belongs to
  3. Click Link server
  4. Open the server's row and click Add the bot to invite the bot there too

What Works in a Department Server

  • Role mappings. Pick the server at the top of Role mappings. Each server has its own mappings, so a rank can give one role in your main server and another in the department's server.
  • Sync roles covers every linked server.
  • Nickname sync renames members there too, using their callsign and badge from that server's department.
  • Notifications can post to channels in any linked server after you refresh channels.
  • Bot commands (/roster, /duty, /loa and the rest) work inside the department server.

Members only get roles in a server they have joined. Members who haven't joined are skipped, not reported as errors.

Limits

Plan Extra servers
Free 1
Standard 5
Professional Unlimited

Unlinking

Open the server's row and click Unlink. Its role mappings are removed. Roles already given in that server stay, but PulseRoster stops managing them.


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 Clock on and off duty from a private panel; 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

There is one command. Members run /duty and a panel opens that only they can see, showing whether they are on or off duty and the buttons that apply:

Button What it does
Clock In Go on duty. Appears when you are off duty
Clock Out Go off duty. Your hours are logged automatically
Who's on duty Everyone currently on duty and how long they have been out

The panel updates itself in place as you use it, so there is one message to look at rather than a trail of replies.

Members in more than one department

If you serve in several departments, the panel adds a dropdown so you pick which one you are going on duty for before you clock in. Members in a single department never see it.

A shift shorter than a minute is closed without logging anything, so a mis-tap does not leave an empty entry on your record.

If your community has set up more than one activity type, the panel also lets you change what the current shift is logged as while you are on duty.

The Clock In/Out Board

You can also put a permanent board in a channel, showing who is on duty with Clock In and Clock Out buttons anyone can use:

  1. Go to the channel you want the board in
  2. Run /duty and press Post board here

The board updates itself as people come on and off duty, so the channel always shows who is currently out. Pressing a button on it opens your own private panel rather than changing what everyone else sees.

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. Posting a new board removes the previous one, so you never end up with two.

Seeing Who Is On Duty

Alongside the Who's on duty button 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

Supervisors and command staff get a Manage button on their own /duty panel. It lists who is on duty, lets you pick a member, and closes their shift once you confirm. Use it when somebody logs off without clocking out.

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.

To add hours for a member who could not reach Discord at all, use the time log form on the Time Logs page: it records the real start and end times, rather than starting a shift from the moment you press the button.

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
Board not updating The board refreshes about once a minute. If it stopped entirely, run /duty and press Post board here again; 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.