Mapping JobCannon Scores to HubSpot Properties
Canonical table of the 17 jc_* custom properties JobCannon creates on the HubSpot Contact object: DISC, Big Five, IQ, integrity, MBTI, RIASEC, plus status/result URL/invitation metadata. Includes value-range conventions and worked examples.
Mapping JobCannon Scores to HubSpot Properties
Reference for the 17 custom properties JobCannon creates in your HubSpot Contacts schema and what each one carries. Every property name uses the `jc_` prefix and is grouped under `jobcannon_assessments` (label: "JobCannon Assessments").
This table is the source of truth — JobCannon's adapter at `lib/crm/providers/hubspot.ts` is the canonical generator.
Property table
| Property name | Label | Type | Field type | Value range / notes ||---|---|---|---|---|| jc_disc_d | JC DISC — Dominance | number | number | 0–100 (percentile within the candidate's response set) || jc_disc_i | JC DISC — Influence | number | number | 0–100 || jc_disc_s | JC DISC — Steadiness | number | number | 0–100 || jc_disc_c | JC DISC — Conscientiousness | number | number | 0–100 || jc_bigfive_o | JC Big Five — Openness | number | number | 0–100 || jc_bigfive_c | JC Big Five — Conscientiousness | number | number | 0–100 || jc_bigfive_e | JC Big Five — Extraversion | number | number | 0–100 || jc_bigfive_a | JC Big Five — Agreeableness | number | number | 0–100 || jc_bigfive_n | JC Big Five — Neuroticism | number | number | 0–100 || jc_iq_score | JC IQ Score | number | number | Standard IQ scale (50–160). Empty when no IQ test was assigned. || jc_integrity_score | JC Integrity Score | number | number | 0–100 — combined integrity-events + self-deception signal. Higher = cleaner. || jc_mbti_type | JC MBTI Type | string | text | 4-letter code (e.g. INTJ, ENFP). || jc_riasec_holland | JC RIASEC Holland Code | string | text | 3-letter code (e.g. IAS, RIC). Top-three Holland types in rank order. || jc_test_status | JC Test Status | enumeration | select | One of: invited, in_progress, completed, expired. || jc_result_url | JC Result URL | string | text | Absolute link to the full result envelope in JobCannon Business dashboard. || jc_completed_at | JC Completed At | datetime | date | ISO-8601 timestamp of the latest completion that triggered this push. || jc_invitation_id | JC Invitation ID | string | text | UUID of the JobCannon invite. Stable across re-pushes — useful for joins. |Worked example
A candidate named Maria López ([email protected]) completes DISC and Big Five on a Trimlight invite. The push to HubSpot writes:
| Field | Value ||---|---|| email | [email protected] || firstname | Maria || lastname | López || jc_disc_d | 64 || jc_disc_i | 81 || jc_disc_s | 42 || jc_disc_c | 55 || jc_bigfive_o | 72 || jc_bigfive_c | 60 || jc_bigfive_e | 78 || jc_bigfive_a | 64 || jc_bigfive_n | 38 || jc_test_status | completed || jc_result_url | https://jobcannon.io/business/dashboard/invites/9f7c... || jc_completed_at | 2026-05-18T14:22:09Z || jc_invitation_id | 9f7c8d12-... |Properties not populated by the test set (jc_iq_score, jc_mbti_type, jc_riasec_holland) are simply omitted from the upsert payload — HubSpot leaves the existing value (or the default empty) untouched.
Value-range conventions
All numeric scores are **0–100 percentiles** against the assessment's normative sample, except `jc_iq_score` which uses the standard IQ scale (mean 100, sd 15). This makes them directly comparable across tests and easy to use in HubSpot views and workflows ("Contact has jc_disc_d > 70" is a meaningful filter).
`jc_integrity_score` is the combined cleanliness score after the integrity-events check (response speed, attention checks, social-desirability adjustment). Higher = more confident the result reflects the candidate's real disposition.
Using the data in HubSpot
**Lists.** Build static or active lists on any jc_* property. Example: "DISC-I high (>70) and Big Five Extraversion > 60" — a quick sales-DNA filter.
**Workflows.** Trigger HubSpot workflows on `jc_test_status = completed` to route hot candidates to a recruiter inbox or sequence them automatically.
**Views.** Add jc_test_status + jc_completed_at + jc_result_url as columns on your Contacts index view to see, at a glance, who has results ready to read.
**Reports.** Standard HubSpot Contact reports support all jc_* properties — group by jc_test_status or chart jc_disc_d distribution across your candidate pool.
Re-push behavior
Every push is an upsert by email. The same candidate finishing a second test simply updates the existing contact — no duplicate contacts are created. The `jc_completed_at` value reflects the most recent push, not the first one. If you need a "first completed" timestamp for reporting, capture it in a separate HubSpot custom property and use a workflow to copy from jc_completed_at on first set.
Field mapping overrides
If your portal already uses one of the jc_* names for something else (unlikely but possible), contact [email protected] and we'll add a per-tenant mapping override in your connection record. The default mapping is what 99% of orgs use.
---
**Vendor docs:** https://developers.hubspot.com/docs/api/crm/properties
**Contacts schema:** https://developers.hubspot.com/docs/api/crm/contacts
**Support:** [email protected]