Connecting…
🔒 Admin
🗺️
Connecting to Google Maps…
Upload CSV or Excel files with addresses
Map Layers
Primary Locations 0
Business Partners 0
Service Partners 0
Caseload 0
Uploaded Records 0
My Addresses 0
📂
Drop CSV or Excel files here
or click to browse — multiple files supported
Add address to my map
Color Groups
Group 1
Group 2
Group 3
Locations
Load and geocode files to see results
Drive time Real roads
Network Overview
🔍
No analysis yet
Upload a file then click Run Analysis to see proximity insights — how far each record is from the nearest location in each layer.
FlxMap Help Center
Find answers, learn features, and get the most from the app.
Job Match
Job Interest (up to 3 — results merged)
Radius mi
Use job titles, skills, or industry terms — e.g. cashier, forklift, data entry, retail.
💼
Find job opportunities
Enter job interest and click Search
Select a job
Click a job card to see full details here.

Default Locations

Primary Locations
Loading…
Business Partners
Loading…
Service Partners
Loading…
AI Assistant BETA
Groq · Llama 3.1
👋 Hi! I'm your map assistant. I can help you filter locations, find clients by area, run proximity analysis, and more.

Try asking:
Clients in Jacksonville Show only Business Partners Active records far from Primary Locations Reset all filters

Confirm

Input

Admin Settings

Caseload Hierarchy Filter

When ON, non-admin users see only caseload rows where their CRM Name matches one of the columns configured in their role's Caseload Hierarchy Scope. Admins and superadmins always see all rows. Users with no CRM name or an unscoped role see nothing.

Before enabling, audit the Users panel — any user with a ⚠ No match badge will see an empty caseload once this is on.

App Name

Shown in the browser tab and logo area. To make it permanent, update APP_NAME in config.php.

App Info
Version Build Released Developer

Version is set in config.php via APP_VERSION; build is the cache-buster on script tags.

Branding
Logo
PNG, SVG, JPEG — max 200 KB
Favicon
PNG, ICO — 32×32 px, max 32 KB
Layer Names

Rename any default layer. Changes apply immediately for all users.

Primary
Business
Service
Caseload
Uploaded Records

Default Location Layers

Click any layer to open the full-screen editor. Add, edit, import CSV, sort, or reset each layer. Changes save to server automatically.

Field Visibility Admin-only · applies to non-admin users

Uncheck fields to hide them from non-admin users across pin popups, sidebar filters, color groups, and the Data tab. Admins always see everything. Changes apply immediately on save.

Loading field list…
AI Assistant — LLM Providers

Keys are stored server-side in config.php. The default provider is tried first — others activate automatically as backup.

Groq
llama-3.1-8b-instant
OpenAI
gpt-4o-mini
Google Gemini
gemini-2.0-flash

Edit config.php to add or change keys: GROQ_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY.

CareerOneStop API ○ Not tested

Free credentials from the US Dept of Labor. Powers "Open Positions" in Job Match. Request free access →

Export & Developer

Download current app HTML for local testing or backup.

FlxMap v1.0.2 — Build:

User Registry

Combined view of Microsoft 365 users who have signed in and manually-created local users. Data loads from the database on every refresh. Roles assigned here override the default role on next login.

Name / Email Type Role Last Login CRM Name · match status
Loading users…
Add User

Pre-register a Microsoft 365 user with a specific role. On first sign-in the stored role takes effect.

Role Definitions

Each role defines which layers and features users with that role can access. Admin role is always full access and cannot be modified.

First-time setup: click Migrate defaults to seed built-in roles with sensible Data Studio permissions (supervisor/staff/viewer get view+export; partner gets view-only). Safe to skip if already done.
Add New Role
Microsoft 365 / Azure AD

When enabled, all visitors must sign in with a Microsoft account. Role (Admin / User) is determined by Azure AD group membership.

Enable Azure AD Authentication
Replaces the 5-click admin login on the server
Redirect URI (copy this into Azure)
Detecting…
Members of this group get Admin role
Members of this group get Regular User role
If blank, shows an "Access Denied" page instead
Azure Setup Guide

1. Azure Portal → Entra ID → App registrations → New registration
   Name: FlxMap Portal · Account type: This org only
   Redirect URI type: SPA → paste the URI shown above

2. Manifest tab → find groupMembershipClaims → change null to "SecurityGroup"
   ⚠ Critical: Without this, the groups claim is missing and ALL users are denied.

3. API permissions → Add → Microsoft Graph → Delegated:
   openid · profile · email · GroupMember.Read.All

4. Entra ID → Groups → New group
   Create FlxMap Admins and FlxMap Users · type: Security · Add members

5. Copy Tenant ID, Client ID, and both Group Object IDs into the fields above

Microsoft 365 Connection

FlxMap reads CSV files from your OneDrive and SharePoint using your Microsoft 365 sign-in. Files you can access in OneDrive, FlxMap can access for sync.

Status: Checking…

How it works

When you click Connect, Microsoft asks you to authorize FlxMap to read your files. After that, you can browse your OneDrive and SharePoint sites from inside FlxMap, pick CSV files to sync, and refresh them on demand.

Each user manages their own sync sources independently — sources you configure are saved in your browser, not shared with other users.

Note: Sync is manual — click "Refresh now" on a source whenever you want to pull updated data.

Configured Sources

Sources can come from a OneDrive/SharePoint file (live link with manual refresh) or from a one-time upload from your computer.

Loading…
Layer Schemas

Manage the columns of the active layer's table. Adding a column lets you map and store new fields from your CRM file. Renaming preserves data. Modifying type / length is metadata-only when the new type can hold the old values. Dropping a column is irreversible.

Loading…
MySQL Connection

Credentials are stored in DATA_DIR/db_config.json — never in PHP source. Create a MySQL database in cPanel → MySQL Databases first.

Setup Guide

1. cPanel → MySQL Databases
   Create database (e.g. employu_emap)
   Create user → Assign ALL PRIVILEGES

2. Upload to server (same folder as index.html)
   emap_setup.sql · emap_seed.php

3. Enter credentials above → Save & Connect

4. Admin Settings → Database → Run Setup SQL
   Creates all tables automatically

5. Visit /emap_seed.php?key=eMapSeed2026!
   Imports existing JSON layer files into MySQL
   Then delete emap_seed.php from server

Change Your Password

For local users, this updates your account password. For the legacy admin login (no user record), this updates the admin-only password. Microsoft 365 users should change their password via their Microsoft account portal. You will be signed out after changing.

Email / SMTP Settings

Used to send invite emails to new local users. Uses your email server (cPanel mail or any SMTP).

Export Modified HTML

All data and key changes are saved to the server automatically via config.php. This download is for local testing or backup purposes.

Developer Info

FlxMap v1.0.2 — 2026

Providers: Groq / OpenAI / Gemini — Maps: Google AdvancedMarkerElement — Build:

Audit Log
All admin actions, logins, and data changes
Filter:
When Category User Action IP
Loading…

Admin Password

Enter the admin password to access admin features.