# HubSpot–LinkedIn integration blank

This is a blank operator record. It contains no live account result. Fill planned fields first; add observed values only after a dated native read-back for the exact portal, ad account, Page and form.

## Decision rules

- `DRAFT_READY`: planned scope is complete; native paths may remain Unknown.
- `LAUNCH_HOLD`: required authorization, scope or native receipt is missing.
- `REPAIR_REQUIRED`: a proved failure, contradiction, malformed field or positive unresolved count needs repair.
- `VERIFIED`: complete same-scope native receipts and an evidenced zero unresolved count at the declared cutoff. This label does not authorize a test or live change.
- A blank field means the operator has not identified it. `UNKNOWN` means it is identified but not read back. `KNOWN 0` is an actual dated zero; it is never inferred from a blank dashboard.

## Scope and planned work

| Field | Value |
|---|---|
| scope.organization | — blank — |
| scope.portal_id | — blank — |
| scope.linkedin_user_ref | — blank — |
| scope.ad_account_id | — blank — |
| scope.page_id | — blank — |
| scope.form_id | — blank — |
| scope.campaign_id | — blank — |
| scope.ad_id | — blank — |
| scope.ad_format | — blank — |
| plan.connection_owner | — blank — |
| plan.lead_sync_owner | — blank — |
| plan.routing_owner | — blank — |
| plan.destination_url | — blank — |
| plan.planned_route | — blank — |
| plan.planned_report_view | — blank — |
| plan.test_authorized_by | — blank — |
| plan.test_authorized_at | — blank — |
| plan.test_authorization_ref | — blank — |
| cutoff.start | — blank — |
| cutoff.end | — blank — |
| cutoff.timezone | — blank — |
| cutoff.cohort | — blank — |
| cutoff.ad_account_id | — blank — |
| cutoff.page_id | — blank — |
| cutoff.form_id | — blank — |

## Native path receipts

| Step | State | Observed value | Evidence | Time | Owner |
|---|---|---|---|---|---|
| hubspot_ads_permission | BLANK | — | — | — | HubSpot portal admin |
| linkedin_account_role | BLANK | — | — | — | LinkedIn ad-account owner |
| account_status | BLANK | — | — | — | LinkedIn ad-account owner |
| app_authorization | BLANK | — | — | — | LinkedIn app owner |
| connection | BLANK | — | — | — | HubSpot Ads owner |
| reporting | BLANK | — | — | — | HubSpot Ads owner |
| auto_tracking | BLANK | — | — | — | HubSpot Ads owner |
| final_url | BLANK | — | — | — | LinkedIn campaign owner |
| redirect | BLANK | — | — | — | Web destination owner |
| tracking_parameters | BLANK | — | — | — | HubSpot Ads owner |
| page_role | BLANK | — | — | — | LinkedIn Page admin |
| lead_sync | BLANK | — | — | — | HubSpot lead-sync owner |
| submission | BLANK | — | — | — | LinkedIn form owner |
| contact | BLANK | — | — | — | HubSpot CRM owner |
| ad_event | BLANK | — | — | — | HubSpot CRM owner |
| form_event | BLANK | — | — | — | HubSpot CRM owner |
| routing | BLANK | — | — | — | HubSpot workflow owner |

## One-cutoff populations

Submitted IDs partition into resolved, documented rejected and unresolved. Synced IDs may overlap unresolved while a contact or event receipt is missing. Contacts and routed contacts count distinct people; ad and form events count distinct in-cohort events. Duplicate submissions remain in the submitted population. Do not add these unlike units together.

| Population | State | Value | Evidence | Definition |
|---|---|---:|---|---|
| submitted | BLANK | — | — | Distinct LinkedIn submission IDs for this form and cutoff. |
| synced | BLANK | — | — | Submission IDs with HubSpot lead-sync acceptance; not people. |
| contacts | BLANK | — | — | Distinct HubSpot contact IDs linked to in-cohort submissions, including pre-existing contacts. |
| ad_events | BLANK | — | — | Distinct in-cohort LinkedIn ad events on linked contacts. |
| form_events | BLANK | — | — | Distinct in-cohort lead-ad form submission events on linked contacts. |
| routed_contacts | BLANK | — | — | Distinct contacts with a dated workflow or owner-assignment receipt. |
| duplicate_submissions | BLANK | — | — | Later in-cohort submissions mapping to an already counted contact; retain their submission IDs. |
| resolved_submissions | BLANK | — | — | Submitted IDs with complete required HubSpot receipts. |
| rejected_submissions | BLANK | — | — | Submitted IDs with documented rejection, not a silent missing contact. |
| unresolved_submissions | BLANK | — | — | Submitted IDs not yet resolved or documented as rejected; positive blocks verification. |

## Report diagnosis

Existing before form: —; view: —; absent from report: —.

## Run the local checker

```sh
python3 hubspot-linkedin-checker.py hubspot-linkedin-integration-blank.json --markdown
node hubspot-linkedin-checker.mjs hubspot-linkedin-integration-blank.json
```

Keep test-contact personal data, tokens and credentials in the approved systems, not this handoff. The JSON file is the machine-readable source; the table above is its readable companion.
