A single function answering one question: may this contact appear on the pipeline board? Archived is checked first, before any stage is resolved, so it survives a later stage change. A named off-board bucket holds contacts that are not on the board — retired imports and cards removed by hand. The contact itself is untouched and still lists under Contacts.
Also called: contacts flooded my pipeline · old contact import showed up as leads · archive a contact
- 1Archived is checked before the stage, so re-ingesting an archived contact and stamping it New Lead still does not render it
- 2The off-board bucket is a named constant, not an id that happens to be absent from a list
- 3Both the opportunity loop and the contact loop call the same function
- 4A companion function returns the reason a contact is off the board, for any surface that has to explain itself
Whether a contact could appear on the board was decided in two different places, and hinged on a stage name happening not to be in a list. One line changed, and 178 contacts that had been invisible for months appeared in a builder's New Lead column overnight. They were never leads — they were a retired contact import parked out of the way, invisible only by accident. Archiving is now an explicit fact checked before anything else, so an archived contact can never become a card again whatever its stage later says. Nothing had ever declared that parking bucket to mean anything in particular; it just wasn't in the valid list, and absence is not a rule.
- Contacts that are not opportunities rendering as opportunity cards
- Board eligibility decided by two files that could disagree
- An archive that a later stage change could undo
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →