One entry per attempt, failures included
Start a fresh entry for every pairing or spawning attempt, not just the ones that work. Record which fish were used, their source and line where known, their age and condition, and how they were conditioned beforehand: the foods offered, the feeding frequency, and any change you made to temperature, water level or chemistry to encourage them. Note where the attempt happened, breeding tank, mop, cave or plant thicket, and how the fish behaved. A failed attempt written up honestly, eggs eaten, eggs fungused, no interest shown, is data; three similar failures in a row usually point at one correctable cause that memory alone would never assemble.
The spawn itself, recorded in numbers
When spawning happens, log the date, the water readings that day, and the scale of it: eggs laid or fry produced, where they were left or moved to, and what the parents did next. For egg layers, note how many eggs looked viable after the first day and whether you treated the water or left it alone, because those choices are exactly what you will want to compare after the next spawn. For livebearers, count the drop as closely as you can and note the mother's condition afterwards. Rough honest numbers beat precise invented ones; an estimate written as an estimate stays useful, while a guessed count written as fact misleads every later comparison.
Fry batches get their own running record
From hatching, each batch becomes its own sub-record under the attempt entry. Log the first foods offered and when feeding started, the growth milestones you can see, when the batch moved to a larger tank, and headcounts at each stage, since the gap between hatched and raised is where most breeding projects quietly succeed or fail. Record losses with their timing and any signs noticed, in plain descriptive language, and what you changed in response. When fry are sold, swapped or moved to another keeper, note numbers and destinations, so a line's spread across the hobby stays traceable.
Lines, generations and what the log reveals
Across a season, these entries combine into the thing memory cannot hold: a lineage and performance record for each line. You can see which pair produces strong fry repeatedly, which line throws a recurring fault, and which conditionings actually precede your successful spawns rather than merely preceding spawns. That is the difference between breeding by feel and breeding by evidence, and it decides which fish you pair next season and which you retire from the programme. Keep the naming of lines consistent with the naming on your tank labels, so a batch record can always be walked back to living fish.
Keep the record with the fish
Store each line's breeding history with the parent fish's own record rather than in a separate notebook that drifts away from the fish room. Filed in the parents' KinsLe Pet Passport, the attempts, spawns and batch outcomes travel with the fish if they are sold or passed to another breeder, giving the next keeper the full story of the line they are taking on.