How to
How do you keep track of NPCs in a long campaign?
Give every NPC who might return a short, standing record: name and role, what they want, where and when the party last saw them, their current status, and one open thread with them. Update it the moment something changes rather than reconstructing it later, and most minor NPCs never need more than that one line. The record's job is to answer 'who is this again?' in five seconds mid-session, not to be a biography.
The problem is recall, not existence
An NPC does not stop existing between the session they were introduced in and the session they come back thirty sessions later; the problem is that nobody can hold thirty sessions of minor characters in working memory. A player says 'wait, didn't we meet her before?' and the table stalls while the GM flips through old notes looking for a name that might be in session 6, session 14, or nowhere at all.
The fix is not more detail per NPC. A dense biography for every NPC you generate is exactly as unusable as no record at all, because nobody has time to read it mid-scene. The fix is a short record, kept for the NPCs who might plausibly return, updated at the moment it changes.
The minimum useful NPC record
Five fields, none of them long. If you cannot fill a field in one sentence, you are writing a biography instead of a record.
- Name and role Who they are and their function in the world: the harbourmaster, the fence, the captain's estranged brother. This is what the table actually calls them by, not a full title nobody uses.
- What they want One concrete thing, stated as a goal rather than a personality trait. 'Wants her smuggling debt forgiven' is usable; 'greedy and cynical' is not, because it does not tell you what she does next.
- Last seen Session number or date, where, and what happened. This single field solves most 'didn't we meet them before?' moments on its own, because it turns a vague memory into a specific scene you can describe back to the table.
- Current status Alive, dead, moved on, imprisoned, promoted, hostile now instead of friendly. Status changes are exactly the facts that get forgotten, because they happened off-page between sessions rather than in a scene anyone wrote down.
- One open thread A single unresolved thing between this NPC and the party: a debt, a promise, a grudge, a question they asked that was never answered. Not a list. If there are several, the NPC has graduated past a minimal record.
Example
A minor NPC, thin record versus useful record
A dockside fixer named Corr Yale, met once in session 4 and referenced again by another NPC in session 22.
- Thin record
- 'Corr Yale, dockside contact.' Eighteen sessions later this tells the GM nothing: not what he wanted, not why the party dealt with him, not whether he is still owed anything.
- Useful record
- 'Corr Yale, dockside fixer. Wants a clean exit from the smuggling trade. Last seen: session 4, Low Wharf, sold the party a false manifest. Status: alive, still working the docks. Open thread: owes the party one favour for not reporting the manifest forgery.'
- Why it works
- Every field in the useful version answers a question the table might actually ask in session 22: why does he know us, what does he want now, and is there unfinished business worth using. None of it required rereading session 4's full notes.
Update at the moment it changes, not afterwards
The habit that keeps this workable is updating the record during or immediately after the session it changes in, not from memory a week later. A one-line status change (alive to dead, ally to hostile) takes seconds to write down in the moment and is nearly impossible to reconstruct accurately from memory once three more sessions have happened.
Most NPCs your table meets never need more than name, role, and one line. Only promote an NPC to a fuller record once they actually recur: a second meeting, a name a player writes down unprompted, or a plan that depends on them still being alive. Writing full records for every NPC before you know which ones matter is the same mistake as the dense biography, just spread across more pages instead of one.
Relationships between NPCs, and between an NPC and the party, are worth recording separately once they exist rather than folded into this record as a list; a directed link with a reason holds up better over a long campaign than an 'allies' field that has to be edited on every page it appears on.
Signs the NPC records are doing their job
- You can answer 'who is this again?' from the record alone, without rereading old session notes.
- Every field is one sentence or shorter.
- Status changes (alive, dead, hostile, moved on) are current as of the last session they happened in.
- Each record names at most one open thread, not a running list.
- Minor NPCs stay at name-role-one-line until they actually recur.
One entity, edited in place
In Codex, an NPC is a single character entity you edit in place rather than a note buried in a session log, so the last-seen line and current status live exactly where you will look for them next time the NPC comes up. Labels give you a fast way to mark status at a glance (alive, hostile, deceased) across dozens of characters without opening each one.
Relationships and open threads between NPCs are separate typed links rather than fields restated on every page, so a debt, a grudge, or a promise stays a single fact you edit once and see from either side.
See the campaign managerRelated
Tools
- NPC generator Free, no login. Produces a name, role, and want you can drop straight into a minimal record.
- RPG NPC generator System-agnostic NPCs for any genre, straight in the browser.