Entry rules that prevent disputes
Every participant's name goes in exactly once, spelled the way they want to receive gifts ('Beth' vs 'Elizabeth' matters). Decide exclusions beforehand — partners shouldn't draw each other — and write the rule down before drawing, not after.
The wheel method (in person)
Paste the roster into a name picker wheel, spin for each gift-giver in alphabetical order, and remove each drawn name before the next spin — otherwise later drawers have fewer options and earlier drawers can re-draw. The visible spin is the point: everyone watches fairness happen.
The self-draw fix
If someone draws themselves, don't improvise — the clean rule is: that person redraws immediately, and the draw restarts entirely if the last drawer also self-draws (a sign the remaining pool is too small). With exclusions (partners), apply the same immediate-redraw rule.
Remote teams
Screen-share the wheel on the team call and spin live — this preserves the ceremony that makes Secret Santa fun. For async teams, run the draw on the call anyway and post only each person's own assignment privately; the wheel result is public, the assignments are DMs.
Budget and rules hygiene
Fix the budget in round numbers before drawing, agree on whether wishlists are allowed (they make gifts better — allow them), and set the exchange date at draw time. Ninety percent of Secret Santa friction is an unagreed budget, not a bad draw.