What this page shows
Players / Leads is the lead-management variant of the shared player-table surface. It loads contacts that are marked as leads, not regular player accounts.
The page combines:
- a
Leadstab for the active lead list - an
Import Logstab for completed CSV imports that wrote a summary record - the shared player-style list and filter surface
- lead-only permission gating
- CSV export of the filtered lead result set
- a permission-gated
Import leads CSVdialog with preview, mapping, validation, import, and progress polling
When to use it
Use this page when you need to:
- review imported lead contacts in the same grid or card layout used for players
- search or segment lead rows before downstream conversion work
- import a CSV file of leads
- decide whether duplicate lead emails should be skipped or updated
- apply bulk tags, including the optional
Trustedtag, during import - review previous CSV imports, skipped records, and failure reasons
How it differs from the player list
- The Leads tab uses the shared player table in lead mode.
- The list narrows the shared player-style dataset to lead rows.
- The lead list keeps the player-table filters, table view, grid view, sorting, pagination, and CSV export behavior.
- The primary row action does not open a lead-edit page. Both the table row action and the grid-card footer deliberately show that lead edit is unavailable.
- Quick KYC tabs (
All Players,Pending KYC,Verified,Rejected) are not rendered in lead mode. - Access to the page content requires original super-admin access or Leads read permission.
CSV import flow
The Import leads CSV action is shown only when the operator is:
- original super-admin, or
- allowed to
CreateorUpdateLeads
The dialog flow is:
Select CSVCheck CSV- optional field mapping review and correction
- optional
Validate Mapping - optional global tags and
Trustedtag toggle - choose how existing lead emails should be handled
- run
Import Leads - monitor in-memory progress until completion
- review persisted completed-import summaries later from
Import Logs
The import dialog requires:
Emailmapping
Optional mapping fields are:
CountryFirst NameLast NameNameTagsPIDLocale
Existing lead strategy
The import flow supports two duplicate-email strategies for existing lead rows:
Skip existing leadUpdate existing lead from CSV
Important behavior:
updateis allowed only when the operator has lead update permission- if the existing email belongs to a non-lead player, the row is skipped as
duplicatePlayer - imported rows are always tagged with
Lead - optional global tags are appended to every imported row
- enabling
Trustedadds the literalTrustedtag to every imported row - created leads receive lead defaults such as pending KYC, not-verified email, default active currency, and lead import metadata
- updates only overwrite mapped fields and import metadata
Progress and completion
During import, the dialog polls live progress every 2 seconds using a generated progress session id.
The visible progress state includes:
- status (
initializing,processing,completed,failed) - total rows
- processed rows
- created count
- updated count
- skipped count
- failed count
- percentage
- ETA when available
- status message
Completed or failed live progress sessions are retained in memory only for a short time. Use Import Logs for imports that completed far enough to write a summary record.
Import Logs
The Import Logs tab shows persisted summaries of previous lead CSV imports that reached the summary-record step. It includes:
- upload time
- file name
- CRM user
- total rows
- imported rows
- skipped rows
- failed rows
- reason counts
- expandable skipped/failed row samples
Use this tab when you need to understand what happened after a completed import. Fatal failures that happen before the summary record is written can exist only in the live dialog/error state and then expire with live progress.
Known caveats
- This surface intentionally has no dedicated lead detail or edit page.
- Lead reads, filters, sorting, and CSV export reuse the shared player-list machinery, but are narrowed to lead rows.
- When normal text search is used, the request builder forces Date start to
2022-01-01before requesting the dataset. - Import progress is held in memory, not in a persistent table. Old or stale sessions expire from the store.
- The import flow can create or update CRM lead rows, add tags, write user activity, and trigger downstream newsletter / marketing sync side effects.
- A CSV import is not all-or-nothing across the whole file. Rows processed before a later row failure can remain created or updated.
- CSV export normally uses the matching filtered lead dataset, but affiliate-search exports can be limited to the current visible page because that branch keeps page and row-limit inputs.