Configuration

919PHONE is configured through two Lua files and one locale file. Most server owners only need to edit config.lua and config_s.lua.

File Scope Editable
config.lua Shared - client + server Yes
config_s.lua Server only Yes
locale.json UI strings Yes
modules_editable/bridge/ Framework hooks Yes

General

Config.OpenKey = 'M'                  -- keybind to open/close the phone
Config.AllowWalkingWhileOpen = true -- allow movement while NUI is open

Phone item

Config.PhoneItem = {
    Enabled = true,
    Item    = 'phone',   -- must match your inventory item name exactly
}

Set Enabled = false to allow opening the phone without carrying an item (keybind only).

Phone prop

Controls the world prop shown during open/call animations.

Config.PhoneProp = {
    Enabled  = true,
    Model    = 'prop_npc_phone_02',
    Bone     = 28422,
    Offset   = { x = 0.0, y = 0.0, z = 0.0 },
    Rotation = { x = 0.0, y = 0.0, z = 0.0 },
}

Passcode lockout

Config.ContactShareRange       = 8.0  -- meters for nearby contact sharing
Config.PasscodeMaxAttempts     = 5    -- wrong attempts before lockout
Config.PasscodeLockoutDuration = 30   -- lockout duration in seconds

Default player settings

Applied when a character's phone is first created or fully reset by an admin.

Config.DefaultSettings = {
    theme        = 'dark',
    setupCompleted = false, -- starts first-run setup wizard on first use
    brightness   = 100,
    volume       = 75,
    texttone     = 'Tone 1',
    vibration    = true,
    silentMode   = false,
    doNotDisturb = false,
    phoneSize    = 'large',
    showCallerID = true,   -- when false, outgoing calls appear as "No Caller ID"
    blockedNumbers = {},
    healthAlerts = {
        hungerEnabled   = true,
        hungerThreshold = 25,
        thirstEnabled   = true,
        thirstThreshold = 25,
        stressEnabled   = true,
        stressThreshold = 75,
    },
}

Players can change most of these in the in-game Settings app. Values here only affect new characters and admin resets.


Media (ringtones, text tones, music)

Add audio files under web/build/ in the resource. Paths in config are relative to the resource root as served to NUI (web/build/).

Config.Ringtones = {
    { name = 'Default', file = 'ringtones/midnight.mp3' },
}

Config.Texttones = {
    { name = 'Tone 1', file = 'texttones/texttone1.mp3' },
}

Config.MusicTracks = {
    { name = 'Midnight Drive', artist = 'Artist Name', file = 'music/track.mp3', art = 'music/track.png' },
}

The art field on music tracks is optional.


Voicemail

Voicemail recordings and custom inbox greetings are uploaded to FiveManage (same API key as photos). The default greeting is bundled at web/public/default_voicemail.mp3.

Config.Voicemail = {
    MaxRecordingSeconds = 60,  -- max length of a message left by a caller
    MaxMessagesPerPhone = 50,  -- inbox cap per phone number
    RetainDays          = 30,  -- auto-delete messages older than this
}

Default settings for new characters:

voicemailGreetingUrl    = '',  -- empty = bundled default greeting
voicemailGreetingFileId = '',

Players configure their greeting in Settings → Voicemail. Callers are routed to voicemail when the callee is offline, on Do Not Disturb, does not answer within 30 seconds, or declines the call. Busy lines do not offer voicemail.

NUI microphone access is required for recording greetings and leaving messages.


Maps

Permanent map pins visible to all players in the Maps app.

Config.MapPins = {
    { label = 'Hospital', x = 295.9, y = -1446.7, icon = 'fa-hospital', color = '#ff3b30' },
}
  • x / y - GTA V world coordinates
  • icon - Font Awesome solid icon name (without fa- prefix in config values shown above use full fa name like fa-hospital)
  • color - hex color for the pin marker

Players can also save personal pins; those persist per character in the database.


Health alerts

Config.Health = {
    PollInterval   = 5000,  -- ms between stat checks
    AlertCooldown  = 120,   -- seconds before the same alert can fire again
    RecoveryMargin = 5,     -- % recovered past threshold before re-arming
}

Hunger, thirst, and stress are read from your framework via the bridge (modules_editable/bridge/).


Mail

Config.Mail = {
    EmailSuffix  = '@celltowa.com',
    SubjectLimit = 80,
    BodyLimit    = 2000,
    SendCooldown = 10,
    PageSize     = 25,
    NoReplyName  = 'noreply',
}

Players claim an address once inside the Mail app. Other resources can send mail via exports.


Hagglr (classifieds)

Config.Hagglr = {
    PostCooldown = 60,
    TitleLimit   = 80,
    BodyLimit    = 500,
    PriceLimit   = 30,
    AllowImages  = true,
    PageSize     = 20,
}

Tweeder (social)

Config.Tweeder = {
    PostCooldown   = 30,
    ReplyCooldown  = 15,
    LikeCooldown   = 2,
    ReportCooldown = 300,
    CharLimit      = 280,
    ReplyCharLimit = 280,
    PageSize       = 30,
    ModerateAce    = 'admin',
    BlockedWords   = {},          -- lower-case substrings
    AllowImages    = true,
}

Staff with the ACE permission set in ModerateAce can delete posts in-game. Reports and deletions are forwarded to Config.Logs in config_s.lua (see Moderation logging below).


Cloutgram (Instagram-style social)

Config.Cloutgram = {
    PostCooldown    = 30,
    CommentCooldown = 10,
    StoryCooldown   = 60,
    LikeCooldown    = 2,
    ReportCooldown  = 300,
    CaptionLimit    = 2200,
    BioLimit        = 150,
    WebsiteLimit    = 100,
    MaxMediaPerPost = 10,
    PageSize        = 20,
    StoryDuration   = 86400,   -- 24 hours in seconds
    ModerateAce     = 'admin',
    BlockedWords    = {},
    AllowImages     = true,
}

Hagglr and Snitch also support player reports (Config.Hagglr.ReportCooldown, Config.Snitch.ReportCooldown). All four social apps log reports to Config.Logs.


App visibility

Set any app to false to hide it from all players' phones. Disabled apps are removed from the home screen and cannot be opened. Appstore apps (tweeder, hagglr, cloutgram) are also removed from the App Store catalog when disabled.

Config.Apps = {
    phone       = true,
    messages    = true,
    contacts    = true,
    settings    = true,
    clock       = true,
    calendar    = true,
    camera      = true,
    photos      = true,
    notes       = true,
    appstore    = true,
    health      = true,
    weather     = true,
    calculator  = true,
    music       = true,
    maps        = true,
    banking     = true,
    mail        = true,
    tweeder     = true,
    hagglr      = true,
}

Changes take effect on server restart. Players already in-game will see the updated app list on their next phone open.


External App SDK

Config.Sdk = {
    Enabled                 = true,
    MaxExternalApps         = 50,
    MaxFetchPayload         = 65536,
    QueueMessagesWhenClosed = false,
}

Config.AllowedDefaultApps = {
    -- myapp = true,
}
  • Enabled - master switch for third-party app registration
  • MaxExternalApps - max concurrently registered external apps
  • MaxFetchPayload - max JSON payload size for SDK fetchNui calls
  • QueueMessagesWhenClosed - hold the latest sendAppMessage for each app until it is opened
  • AllowedDefaultApps - ids allowed to register with category = 'default'

See SDK Getting Started.


Server-only config (`config_s.lua`)

Config.FiveManage = {
    ApiKey = 'YOUR_FIVEMANAGE_API_KEY',
}

Config.Logs = {
    FiveManage = {
        ApiKey = 'YOUR_FIVEMANAGE_LOGS_API_KEY',
    },
    Discord = {
        Webhooks = {
            'https://discord.com/api/webhooks/...',
        },
    },
}

FiveManage media key - required for:

  • Camera captures and gallery uploads
  • Photo attachments in Messages
  • Image attachments on Tweeder posts and Hagglr listings

Moderation logs - optional; configure one or both:

  • FiveManage Ingest Logs API (Config.Logs.FiveManage.ApiKey, separate from the media key)
  • Discord webhooks (Config.Logs.Discord.Webhooks) - all non-empty URLs receive each report/delete event

Reports are reviewed externally — in a Discord channel, the FiveManage dashboard, or an admin menu using the exports. The phone does not include a staff moderation inbox.


Localization

All UI text lives in locale.json at the resource root. Edit this file to change app names, settings labels, error messages, and notification copy. Restart the resource after saving.


Bridge customization

For framework-specific behavior, edit:

modules_editable/bridge/bridge_s.lua   -- server
modules_editable/bridge/bridge_c.lua   -- client

The bridge is auto-selected based on your running framework and inventory. Override functions there when the defaults do not match your server setup.


Admin commands

All admin chat commands check the ACE permission configured in Config.Admin.Ace (default: admin).

Config.Admin = {
    Ace = 'admin',
}

Grant the permission in your server ACL (typically server.cfg):

add_ace group.admin admin allow
add_principal identifier.fivem:YOUR_ID group.admin

Staff without this ACE receive a chat denial message. Commands do not fall back to another permission.

Command Description
/resetphonepasscode [id] Clears a player's phone passcode
/resetphonedata [id] Wipes all phone data and assigns a new phone number

In-game social moderation (not chat commands)

Tweeder and Cloutgram in-game post deletion uses Config.Tweeder.ModerateAce and Config.Cloutgram.ModerateAce (both default to admin). That is separate from the chat commands above but uses the same ACE name by default.

Admin exports

These exports accept a character identifier instead of a server ID, which works well with admin menus such as 919ADMIN PRO. They do not check ACE permissions themselves — the script or admin menu that calls them should verify staff access first.

Export Description
getPhoneIdentity(citizenid) Phone number, mail address, Tweeder/Cloutgram handles
getIdentifierByPhoneNumber(number) Reverse lookup: phone number → citizenid
deleteTweederPost(postId) Soft-delete a Tweeder post (offline-safe)
deleteCloutgramPost(postId) Soft-delete a Cloutgram post (offline-safe)

Identifier by framework:

Framework Identifier
QBCore / QBX citizenid
ESX character identifier (e.g. char1:…)
919DESIGN 919DESIGN

© 2026 919DESIGN. Premium FiveM Server Management Resources.

This website and its checkout process is owned & operated by Tebex Limited, who handle product fulfilment, billing support and refunds.