> ## Documentation Index
> Fetch the complete documentation index at: https://docs.technified.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Features

> How each sync feature behaves in game.

This page explains what each feature does once enabled. Toggle them in the [configuration](/roblox-integration/configuration).

## Bidirectional sync

Moderation flows in both directions.

<Tabs>
  <Tab title="Dashboard to game">
    When you ban or mute someone in the dashboard, they are checked on their next join. Banned players are kicked, muted players have a mute applied, and the record shows up in your admin system's own ban and mute views.
  </Tab>

  <Tab title="Game to dashboard">
    When a moderator bans or mutes in game, the plugin detects it, syncs it to Technified, and it appears in **Roblox > Moderation** where you can manage it.
  </Tab>
</Tabs>

The plugin prevents infinite loops: actions that came from the API are marked so they are not synced back, and the same in-game action only syncs once even when several hooks see it.

## Permission sync

When a staff member joins, the plugin looks up their Technified permissions, maps the level to a rank in your admin system, and applies it. Permissions are cached for 5 minutes to reduce API calls, and `tsync` forces a refresh.

Technified ranks are added alongside your existing config rather than replacing it. Ranks you configured yourself are never modified.

## Ban sync

On server start, the plugin fetches all active bans and loads them into your admin system's ban list, including bans on players who are not online. Only bans that apply to this game are loaded, meaning global bans and bans scoped to this Place ID.

When a player joins, their ban status is checked and they are kicked if banned:

```
Reason: Exploiting
Expires: 2024-03-20 15:00:00
Banned by: AdminName

Get information about how to appeal at the Games Communication server.
```

Banning in game parses the duration and reason and syncs the ban to the dashboard.

## Mute sync

On server start, active mutes are fetched and loaded the same way. Joining players are muted if needed, enforced through TextChatService so their messages are not delivered. Muting in game parses the duration and reason and syncs the mute to the dashboard.

## Shield sync

Opt-in protection using the global [Technified Shield](/shield/overview) list. When `SYNC_SHIELD` is on, each joining player is checked against the Shield list and kicked with the Shield reason if flagged. Shield checks run independently of per-guild ban sync.

```lua theme={null}
SYNC_SHIELD = true,
```

## Session tracking

When a staff member at or above `SESSION_MIN_LEVEL` joins, a session starts and is logged to **Roblox > Staff Activity**. When they leave, the session ends and the duration is calculated. Each session records the staff Roblox username and ID, the game and Place ID, and start and end times.

## Action logging

With `LOG_ACTIONS` on, commands run by staff are logged to Technified.

| Category   | Commands                                                                                 |
| ---------- | ---------------------------------------------------------------------------------------- |
| Moderation | kick, ban, unban, mute, unmute, warn, shutdown and their variants                        |
| Admin      | Every other command that requires a staff rank, including ones added by your own plugins |

Each log entry records who ran it, the command, the target, the reason, the raw command text, the Place and Universe IDs, and a timestamp. Logs appear under **Logs > Audit Logs** with a filter for Roblox actions.

## Server manager

The plugin sends a heartbeat to Technified every 10 seconds with the current player list and server details. Commands you issue from **Roblox > Server Manager** ride back on the heartbeat response, so dashboard actions land within one heartbeat.

| Command   | Effect                                     |
| --------- | ------------------------------------------ |
| Kick      | Removes the player with your reason        |
| Ban       | Bans, kicks, and records the ban           |
| Mute      | Mutes the player in game                   |
| Message   | Sends a private notification to one player |
| Broadcast | Shows a message to everyone in the server  |
| Teleport  | Sends a player to another place            |
| Shutdown  | Announces, then closes the server          |

Every command is acknowledged back to the dashboard with its result, so failures like "Player not in server" are visible to you.

<Note>
  Messages and broadcasts are passed through Roblox's text filter before being displayed, as required by the Roblox Terms of Use.
</Note>

## Game registration

On startup the plugin registers your game with Technified, sending its Place ID, Universe ID, name, creator ID, plugin version, and server job ID. The dashboard then shows which games are connected and can filter moderation by game.

## Reliability

<AccordionGroup>
  <Accordion title="Automatic cleanup" icon="broom">
    When a player leaves, their session is ended and logged, the permission cache is cleared, and state is freed, so there are no memory leaks during long uptimes.
  </Accordion>

  <Accordion title="Error handling" icon="shield-check">
    If the API is unavailable, the game keeps running normally and errors are counted for `tstatus`. Staff are never demoted on a failed permission lookup. Players leaving mid-operation are handled safely, and malformed responses fall back to defaults.
  </Accordion>
</AccordionGroup>
