The composer sends contactId, projectId, estimateLinkId and opportunityId along with a human-readable contextLabel and a canonical module id. The hub uses the label for grouping and the ids to show what kind of thing a task points at.
Also called: task context · task linked to a job · which customer is this task for
- 1captureHere('task') supplies the canonical module id from the shared context envelope (FEAT-ZLTWNB) so grouping stops depending on a literal being hand-typed correctly at each call site.
- 2An explicit category on the context still wins server-side, so a junction that deliberately files elsewhere keeps doing so.
- 3With neither, the API falls back to id-guessing: project → Project Mgmt, estimate → Estimates, opportunity → Sales Pipeline, contact → Contacts.
The legacy id-guessing 'mislabels anything raised from a screen carrying a contact id', which is why the envelope's module id was introduced above it. The snapshot label rather than a join is migration 166's rule: reference identity in the id columns, readable presentation in the label.
- Uncategorised tasks by omission
- Mislabelled tasks raised from screens that happen to carry a contact id
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 →