Troubleshooting Orbit Pulse
What this page is — a symptom-first index of everything in Pulse that goes wrong quietly.
What it is for — starting from what you can see on screen and working back to the cause, rather than guessing which subsystem is at fault.
The problem it solves — almost every Pulse failure is silent. Nothing errors when scoring has never run, when an export writes one page of a thousand, or when a role grants nothing. The cause is usually several screens away from the symptom, so this page is organised by what you noticed, not by what is broken.
1. Scoring and grading
| Symptom | Cause | Fix |
|---|---|---|
| Scores look wrong across the board | The active rules may not distinguish your leads | Review them on the Scoring Rules tab, then Recalculate |
| A new rule has not changed existing leads | Rules apply from when they are saved; they do not reach backwards | Run Recalculate on the Scoring Rules tab |
| Scoring rules on custom fields never fire | custom_fields was written as a JSON string rather than an object by an import or integration | Inbound webhook section 2 |
All grades became D | Recalculate derives a grade from the score and overwrites the stored one. With rules matching nothing, everything becomes 0 / D | Re-set grades. Avoid Recalculate until the rules are known good |
| A grade set by hand is not shown in the list | The list recomputes the grade from the score and never reads the stored value | Status, grade and score section 4 |
| The score dial and the Grade field disagree | The chip is computed; the field is stored | Same page, section 1 |
2. Leads that are missing or in the wrong place
| Symptom | Cause | Fix |
|---|---|---|
| A lead is in the list but on no board column | It has no status, or no pipeline. The import never sets either | Open the lead and set a pipeline and status. The board |
| The board shows fewer leads than the list | Same cause, plus leads whose pipeline belongs to a different project | The board |
| A lead shows a pipeline that is not in the picker | Its pipeline is scoped to another project. Saving the lead will move it | Pipelines |
| A pipeline's board has no columns | The pipeline has no statuses | Add statuses, or pick a different pipeline |
| Duplicate leads for the same person | Only the webhook de-duplicates. The CSV import and POST /leads do not | Import |
| A funnel total does not match the list | Leads carrying a lifecycle stage outside the five valid codes | Status, grade and score section 3 |
3. Exports
| Symptom | Cause | Fix |
|---|---|---|
| A contacts export has far fewer rows than the list | The file is built from the rows already on screen — one page | Export in pages, or query the database. Contacts |
| A deals export contains deals you filtered out | The file is written from every deal in the project, ignoring the on-screen filters | Filter the file afterwards. Deals board |
| A leads export looks right | It is — leads export server-side and honours filters | — |
Both browser-side exports report success
The toast reads Export downloaded whether the file is complete or not. Treat contact and deal exports as samples, not extracts, until you have counted the rows.
4. Permissions
| Symptom | Cause | Fix |
|---|---|---|
| A module is missing from the sidebar | The role lacks that module's Menu… permission | Permissions section 8 |
| A pipeline administrator cannot open Lead Settings | The route is gated on Manage Lead Sources | Grant manage_sources as well |
| Lead Analytics opens but every panel is empty | The route has no permission gate; each report's API does | Grant the per-report permissions |
| Granting Timesheet under Lead Analytics gives no access | Wrong spelling — the working one is View Timesheets of Tesm Member | Permissions section 2 |
| A user cannot see the contact Import control | The role lacks Import Contacts | Grant it |
| Withholding group delete did not prevent deletion | Group delete is gated on .group.edit | No workaround |
| Someone changed scoring rules who should not have | They hold Manage Lead Scoring Rules | Remove it from their role |
| A rules tab is visible to a user who should not see it | They hold one of the three rule-management permissions | Remove it from their role |
5. Conversion
| Symptom | Cause | Fix |
|---|---|---|
| Convert produced a contact but no deal | Create deal was unticked, or no deal pipeline exists | Convert to deal |
| The new deal is in the wrong stage | Conversion writes the stage named in the rule, or the pipeline default | Check the rule's stage mapping |
| A conversion rule's Run seemed to do nothing | Run applies to leads matching the rule now; it reports no summary of what changed | Check the affected leads directly |
| Converting a lead whose email already exists on a contact | Conversion reuses the existing contact rather than failing | Expected behaviour |
| A contact appears twice with the same email | Records created before email matching ignored case. Merge them | Contacts |
6. Screens that look broken but are not
| What you see | What it is |
|---|---|
| Orbit Vendors is empty | TREHAN-style projects often have no vendors. The empty state explains what vendors are for |
| The Lead Settings hub shows fewer sections than a colleague sees | Sections are permission-gated. The documented figures show an org admin's full set |
| A blurred column in a documentation figure | Deliberate. The screenshots come from a live system, so real contact details are obscured; only invented example records are shown legibly |
| Deal stage columns in an odd order | Stages sharing a sort_order order unpredictably. Deal pipelines |
7. Where to look next
| Question | Page |
|---|---|
| What does this permission actually grant? | Permissions |
| Which quality signal am I looking at? | Status, grade and score |
| How do leads arrive from outside? | Inbound webhook |
| What does converting actually write? | Convert to deal |