# LinkedIn Lead Gen Form handoff

Use this before you build the form. Blank means **Unknown**. Unknown is not No, zero, approved or ready.

## 1. Route decision

- Offer and exact deliverable:
- Buyer action requested:
- Audience and exclusions:
- Decision owner:
- Measurement goal:
- Native form feasibility: PASS / FAIL / UNKNOWN
- Why:
- Landing-page feasibility: PASS / FAIL / UNKNOWN
- Why:
- Must-have page control: Yes / No / Unknown
- Can the native form satisfy it: Yes / No / Unknown
- Priority: REDUCE_STEPS / PAGE_CONTROL / NONE
- Comparison requested: Yes / No
- Material tradeoff: YES / NO / UNKNOWN

If comparison is requested, complete every line:

- Primary downstream outcome:
- Comparison population:
- Assignment method:
- Source mapping:
- Test owner:
- Review date and cutoff:
- Stop rule:

Route result: FORM_FAVORED / LANDING_PAGE_FAVORED / BOUNDED_TEST / DECISION_HOLD  
Reason code:  
Contrary evidence or unresolved assumption:  
Smallest next check, owner and evidence required:

## 2. Privacy and offer delivery

- Privacy-policy URL:
- Policy version/date checked:
- Primary use of the submitted data:
- Approval owner:
- Offer promise:
- Delivery channel:
- Destination:
- Delivery owner:
- Fallback:
- Tested result and evidence reference: Unknown

## 2A. Form builder specification

- Form name:
- Form version:
- Language:
- Saved-language snapshot, if already saved:
- Offer headline:
- Offer details:
- Privacy text shown in the form:
- Confirmation message:
- Confirmation CTA:
- Confirmation destination URL:
- Expected member action:
- Form owner:
- Destination tester:

## 3. Visible fields

Repeat this block for every profile or custom field. Custom questions must use answers the current editor supports.

### Field [row ID]

- Kind: PROFILE / CUSTOM
- Label:
- Field type:
- Requiredness: REQUIRED / OPTIONAL / PLATFORM_FIXED_REQUIRED
- Allowed answers:
- Qualified answers:
- Purpose:
- Source:
- CRM destination:
- Normalization:
- Validation:
- Routing effect:
- Qualification approval owner, if used:

## 4. Disclosures and captured permission

Repeat for each disclosure. A policy is not an observation; record the checkbox value from the test payload and CRM read-back separately.

### Disclosure [row ID]

- Stable key:
- Text and text version:
- Purpose and channel:
- Platform required: Yes / No
- Destination property:
- Checked mapping:
- Unchecked mapping:
- Missing mapping:
- Permitted action:
- Suppression or fallback:

Observed permission:

- Submission ID:
- Source value: CHECKED / UNCHECKED / MISSING / Unknown
- Destination value:
- Evidence reference:

## 5. Hidden fields and source metadata

### Hidden field [row ID]

- Name:
- Type: STATIC / DYNAMIC
- Configured value or token:
- Expected export key:
- Observed emitted value: Unknown
- CRM destination and type:
- Failure behavior:

## 6. CRM handoff, identity and recovery

- Integration route:
- Credential owner:
- Destination object:
- Submission identity scope:
- Person match rule:
- Identical replay rule:
- Conflicting replay rule:
- Failure owner:
- Retry policy:
- Fallback queue:
- Response owner:
- Qualification approval owner:
- Rollback owner:

Delivery-recovery SLA:

- Clock and timezone:
- Start event:
- Duration:
- Does retry reset the clock: No
- Overdue rule:

CRM-response SLA:

- Clock and timezone:
- Start event:
- Stop event:
- Duration:
- Overdue rule:

## 7. Test submission and read-back

- Form/version:
- Submission ID:
- Exported at:
- Export receipt:
- `Test Lead` flag:
- Visible lead count:
- Production source completeness and reference:
- Verifier:

| Input row/key | Source value | Transformation | Destination property | Destination value | Validation | Evidence | Result |
| --- | --- | --- | --- | --- | --- | --- | --- |
|  |  |  |  |  |  |  | Unknown |

Recovery or duplicate case:

- Submission ID and attempt IDs:
- Payload fingerprints:
- Error or conflict class:
- Original clock start and deadline:
- Owner and action:
- Resolution evidence:
- Second contact suppressed: Yes / No / Unknown

## 8. Qualification and measurement

- Qualification definition:
- Evidence fields:
- Approval owner:
- Timezone:
- Cohort start and end:
- Observation cutoff:
- Source completeness: COMPLETE / INCOMPLETE / UNKNOWN
- Source reference:

Report each count beside its population, window and source. Keep Yes, No and Unknown separate.

| State | Definition | Yes | No | Unknown | Population and source |
| --- | --- | ---: | ---: | ---: | --- |
| DELIVERY_ATTEMPTS | Every transport attempt, including retries; report separately from unique submissions |  |  |  |  |
| SUBMITTED | Unique platform submission identities; production excludes `Test Lead = TRUE` |  |  |  |  |
| RECEIVED | Unique canonical submissions with an intake event |  |  |  |  |
| ACCEPTED | Valid CRM intake after conflict resolution |  |  |  |  |
| CONTACTED | Independent contact event among accepted records |  |  |  |  |
| QUALIFIED | Predeclared rule met with evidence among accepted records |  |  |  |  |
| BOOKED | Scheduled meeting among accepted records |  |  |  |  |
| HELD | Meeting occurred among accepted records |  |  |  |  |

Any resolved-only rate must show numerator, resolved denominator and Unknown count among all accepted records. A zero denominator is **Undefined**.

## 9. Readiness checks

Use PASS / FAIL / UNKNOWN / NOT_APPLICABLE. PASS requires a dated, non-placeholder evidence reference and a fingerprint bound to the tested data. NOT_APPLICABLE is allowed only for checks outside the chosen route.

| Check ID | Status | Observed result | Evidence and date | Tested versions/fingerprints | Owner | Next action |
| --- | --- | --- | --- | --- | --- | --- |
| CHK-PRIVACY-POLICY | UNKNOWN |  |  |  |  |  |
| CHK-CONSENT-CAPTURE | UNKNOWN |  |  |  |  |  |
| CHK-OWNER-SLA | UNKNOWN |  |  |  |  |  |
| CHK-DEDUP-ROUTING | UNKNOWN |  |  |  |  |  |
| CHK-FINAL-VERIFY | UNKNOWN |  |  |  |  |  |
| CHK-ROLLBACK | UNKNOWN |  |  |  |  |  |

| CHK-NATIVE-FORM-SAVED | UNKNOWN |  |  |  |  |  |
| CHK-NATIVE-MECHANICS | UNKNOWN |  |  |  |  |  |
| CHK-NATIVE-DESTINATION | UNKNOWN |  |  |  |  |  |
| CHK-NATIVE-TEST-RECEIPT | UNKNOWN |  |  |  |  |  |
| CHK-NATIVE-EXPORT-READBACK | UNKNOWN |  |  |  |  |  |
| CHK-NATIVE-CRM-READBACK | UNKNOWN |  |  |  |  |  |
| CHK-NATIVE-OFFER-DELIVERY | UNKNOWN |  |  |  |  |  |
| CHK-LANDING-DEPLOY | UNKNOWN |  |  |  |  |  |
| CHK-LANDING-SUBMIT | UNKNOWN |  |  |  |  |  |
| CHK-LANDING-ANALYTICS | UNKNOWN |  |  |  |  |  |
| CHK-LANDING-CRM-READBACK | UNKNOWN |  |  |  |  |  |
| CHK-LANDING-OFFER-DELIVERY | UNKNOWN |  |  |  |  |  |
| CHK-TEST-ASSIGNMENT | UNKNOWN |  |  |  |  |  |
| CHK-TEST-SOURCE-MAPPING | UNKNOWN |  |  |  |  |  |
| CHK-TEST-OUTCOME-CUTOFF | UNKNOWN |  |  |  |  |  |

### Complete check catalog

- `CHK-PRIVACY-POLICY` — routes: FORM_FAVORED, LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: resolves policy URL; version matches current
- `CHK-CONSENT-CAPTURE` — routes: FORM_FAVORED, LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: checked/unchecked/missing read back; permission action verified
- `CHK-OWNER-SLA` — routes: FORM_FAVORED, LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: owner accepts queue; clock and escalation tested
- `CHK-DEDUP-ROUTING` — routes: FORM_FAVORED, LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: identical replay suppressed; conflict quarantined; new submission preserved
- `CHK-FINAL-VERIFY` — routes: FORM_FAVORED, LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: final reviewer records result
- `CHK-ROLLBACK` — routes: FORM_FAVORED, LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: rollback owner and trigger recorded
- `CHK-NATIVE-FORM-SAVED` — routes: FORM_FAVORED, BOUNDED_TEST; proof: saved exact form version
- `CHK-NATIVE-MECHANICS` — routes: FORM_FAVORED, BOUNDED_TEST; proof: current account controls observed; field availability confirmed
- `CHK-NATIVE-DESTINATION` — routes: FORM_FAVORED, BOUNDED_TEST; proof: confirmation destination opened; offer delivery matched
- `CHK-NATIVE-TEST-RECEIPT` — routes: FORM_FAVORED, BOUNDED_TEST; proof: export captured before overwrite; Test Lead TRUE recorded
- `CHK-NATIVE-EXPORT-READBACK` — routes: FORM_FAVORED, BOUNDED_TEST; proof: source values and emitted keys matched
- `CHK-NATIVE-CRM-READBACK` — routes: FORM_FAVORED, BOUNDED_TEST; proof: field, permission, source and owner read back
- `CHK-NATIVE-OFFER-DELIVERY` — routes: FORM_FAVORED, BOUNDED_TEST; proof: asset/next action delivered
- `CHK-LANDING-DEPLOY` — routes: LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: exact page and form version deployed
- `CHK-LANDING-SUBMIT` — routes: LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: browser submission receipt
- `CHK-LANDING-ANALYTICS` — routes: LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: analytics event read back
- `CHK-LANDING-CRM-READBACK` — routes: LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: field, permission, source and owner read back
- `CHK-LANDING-OFFER-DELIVERY` — routes: LANDING_PAGE_FAVORED, BOUNDED_TEST; proof: asset/next action delivered
- `CHK-TEST-ASSIGNMENT` — routes: BOUNDED_TEST; proof: assignment mechanism verified
- `CHK-TEST-SOURCE-MAPPING` — routes: BOUNDED_TEST; proof: route/source values read back
- `CHK-TEST-OUTCOME-CUTOFF` — routes: BOUNDED_TEST; proof: outcome, cutoff and stop rule approved

### Evidence fingerprint method

For every applicable class below, create one JSON object whose keys are the listed JSON Pointer paths and whose values are the exact values from the normalized handoff. Keep arrays in their declared order. Keep Unknown and an empty value distinct. Serialize as UTF-8 canonical JSON with object keys sorted and no extra whitespace, then compute SHA-256. Store it as `sha256:<hex>` under that class ID in the PASS evidence. If any listed value changes, recompute it and treat the earlier PASS as stale. The `CRM_MAP` class uses only the named projection fields.

- `NATIVE_FORM` — paths: /native/name, /native/language, /native/headline, /native/details, /native/privacy_text, /native/confirmation, /native/landing_url, /native/visible_fields; invalidates: CHK-NATIVE-FORM-SAVED, CHK-NATIVE-MECHANICS, CHK-NATIVE-DESTINATION, CHK-NATIVE-TEST-RECEIPT, CHK-NATIVE-EXPORT-READBACK, CHK-NATIVE-CRM-READBACK, CHK-NATIVE-OFFER-DELIVERY, CHK-FINAL-VERIFY
- `LANDING_FORM` — paths: /landing/url, /landing/fields, /landing/disclosures, /landing/analytics_event, /landing/privacy_policy_url; invalidates: CHK-LANDING-DEPLOY, CHK-LANDING-SUBMIT, CHK-LANDING-ANALYTICS, CHK-LANDING-CRM-READBACK, CHK-LANDING-OFFER-DELIVERY, CHK-FINAL-VERIFY
- `DISCLOSURE_CONTENT` — paths: /native/disclosures, /landing/disclosures; invalidates: CHK-CONSENT-CAPTURE, CHK-NATIVE-MECHANICS, CHK-NATIVE-TEST-RECEIPT, CHK-NATIVE-EXPORT-READBACK, CHK-NATIVE-CRM-READBACK, CHK-LANDING-SUBMIT, CHK-LANDING-CRM-READBACK, CHK-FINAL-VERIFY
- `HIDDEN_METADATA` — paths: /native/hidden_fields; invalidates: CHK-NATIVE-MECHANICS, CHK-NATIVE-TEST-RECEIPT, CHK-NATIVE-EXPORT-READBACK, CHK-NATIVE-CRM-READBACK, CHK-TEST-SOURCE-MAPPING, CHK-FINAL-VERIFY
- `PRIVACY` — paths: /privacy/policy_url, /privacy/primary_use, /native/privacy_text, /landing/privacy_policy_url; invalidates: CHK-PRIVACY-POLICY, CHK-CONSENT-CAPTURE, CHK-FINAL-VERIFY
- `CRM_MAP` — paths: /native/visible_fields, /native/disclosures, /native/hidden_fields, /landing/fields, /landing/disclosures, /handoff/destination_object; invalidates: CHK-CONSENT-CAPTURE, CHK-DEDUP-ROUTING, CHK-NATIVE-CRM-READBACK, CHK-LANDING-CRM-READBACK, CHK-TEST-SOURCE-MAPPING, CHK-FINAL-VERIFY, CHK-ROLLBACK; projection: Only destination, normalization, validation, destination_property, destination_type and destination_object properties are included.
- `OWNER_SLA` — paths: /decision/owner, /handoff/response_owner, /handoff/failure_owner, /handoff/rollback_owner, /handoff/sla, /handoff/delivery_recovery_sla; invalidates: CHK-OWNER-SLA, CHK-DEDUP-ROUTING, CHK-TEST-OUTCOME-CUTOFF, CHK-FINAL-VERIFY, CHK-ROLLBACK
- `FULFILLMENT` — paths: /native/fulfillment, /landing/fulfillment; invalidates: CHK-NATIVE-DESTINATION, CHK-NATIVE-OFFER-DELIVERY, CHK-LANDING-OFFER-DELIVERY, CHK-FINAL-VERIFY

Every PASS must contain all fingerprint class IDs required by the selected check. Missing or unequal fingerprints make the check stale and keep launch on hold.

Draft status: DRAFT_READY / DRAFT_HOLD  
Launch status: LAUNCH_READY / LAUNCH_HOLD  
First repair or next test:  
Owner:  
Evidence required:
