Skip to article

Salesforce LinkedIn Ads integration: prove the lead handoff

Follow one paid LinkedIn response into Salesforce, verify the person, Campaign Member and owner, then repair the first failed handoff.

A connector can report success while Salesforce creates the wrong record, skips the Campaign Member or assigns nobody to follow up.

Treat those as separate checks.

This guide follows one paid LinkedIn Lead Gen Form response into Salesforce. You will choose a documented route, decide whether the response should become a Lead or Contact, preserve the source identity and prove the person, Campaign Member and owner separately.

If you are still designing the offer or form, start with the LinkedIn Lead Gen Forms guide. This page begins with an approved paid form and one Salesforce environment.

The short version

  1. Name the exact LinkedIn ad account, paid form and Salesforce environment.
  2. Choose a currently documented route. Record the connector plan and permissions instead of assuming them.
  3. Approve the match order, Lead or Contact action, and retry rule before mapping fields.
  4. Preserve the LinkedIn form ID and response ID.
  5. Send one permitted test response and save the LinkedIn source receipt.
  6. Verify the connector receipt, person object, Campaign Member and owner separately.
  7. Reconcile every response at one cutoff.
  8. Stop at the first missing or contradictory receipt.
The route and object decisions for one LinkedIn paid form response

Does Salesforce connect directly to LinkedIn Lead Gen Forms?

LinkedIn's current help says Lead Gen Forms can connect through supported marketing automation and CRM partners. Its troubleshooting page lists Salesforce Sales Cloud, Zapier and LeadsBridge among the partner routes. If a platform is not supported, LinkedIn recommends downloading leads and importing a CSV with the required fields and compatible formatting. Read LinkedIn's integration guidance.

That does not prove a particular native Salesforce route, edition or account is available to you.

Salesforce has a public Help URL for LinkedIn Ads Lead Gen setup, but its article content was not readable in this review. A current third-party guide describes a native path, but one vendor article is not enough to prescribe it. Keep native availability Unknown until the Salesforce owner can open current first-party instructions and confirm the edition, permissions, environment and labels they actually see.

For a concrete worked path, this guide uses Zapier's currently documented New Lead Gen Form Response (Sponsored content) trigger. Zapier's public action inventory also exposes Salesforce Create Lead, Create Contact, Find or Create Record, Add Lead to Campaign and Add Contact to Campaign actions. Review the current Zapier action inventory.

LeadsBridge is another documented partner option. Its current page advertises LinkedIn Lead Gen Forms routes into Salesforce Leads, Contacts and Campaigns. Review the LeadsBridge route.

Choose one route. Do not combine receipts from several connectors and call the handoff proved.

Route preflight

Record these facts before anyone authorizes a test:

DecisionWhat to recordWhat public documentation cannot prove
LinkedIn sourceAd account ID, Page, paid form name and form IDThat the current operator has access
RouteNative, Zapier, LeadsBridge or manual CSVThat your plan and edition include it
Salesforce environmentProduction or sandbox, org ID/reference and destination Campaign IDThat the connector is authorized to the intended org
Person policyApproved match keys, normalization, search order, Lead/Contact precedence, each match outcome and retry keyThat the chosen rule ran on this response
Field mapSource field, destination field, required status and permitted transformation for each required valueThat Salesforce accepted and stored those values
Membership policyApproved Campaign ID and expected member status, with approval referenceThat the Campaign Member has that status
Ownership policyApproved rule and expected owner or eligible queue, with approval referenceThat the resulting owner meets that rule

LinkedIn separates ad-account access from Page permissions. To integrate leads, the current permission table requires the documented ad-account role and an eligible Page role. If the ad account is owned by Business Manager, the Page must also be owned by the same Business Manager account. Read LinkedIn's current permission table.

Capture the current user, ad account, Page and Business Manager references without copying a password, token, cookie or authorization code.

Read back the connected Salesforce org identity and the connector's current authorization to that org. Record when and where both were observed. A typed org name or a successful login to a different org does not establish the destination. Hold the test when org identity, route authorization, required mappings or the approved match/retry policy is Unknown.

Decide Lead or Contact before you map fields

Decide which Salesforce object should own the response before building the field map. That choice determines the lookup, write action and required fields.

Use an explicit rule. The following is an example to approve or replace before a test; it is not a claim about how a connector handles your Salesforce duplicates.

A practical starting policy

  • Normalize work email for lookup, then search eligible Contacts and Leads in the declared Salesforce org. Record other approved keys and exclusions before running the search.
  • If exactly one eligible Contact matches and no eligible Lead matches, update that Contact under the approved field rules.
  • If exactly one eligible Lead matches and no eligible Contact matches, update that Lead under the approved field rules.
  • If no eligible Contact or Lead matches, create a Lead.
  • If both object types match, or several records match within either type, hold the response for review. Do not silently prefer a Contact or Lead. If your team approves a different precedence, record it and test that exact rule.
  • If the same LinkedIn response ID arrives again, look up its prior outcome before any create, update or Campaign Member action. Resume only the missing step; do not create a second person or member for a retry.

Email is a common match key. It may be insufficient in a shared-domain, personal-email or multi-business-unit setup. Your record should name every key, normalization rule, eligibility test, search order and Lead/Contact conflict rule. If the Salesforce owner has not approved those rules, keep the person decision Unknown and hold the test.

Keep retries idempotent

Preserve the LinkedIn response ID as a stable source key. The same response ID arriving twice should not create two Salesforce people or two Campaign Members.

A later form submission from the same person has a new response ID. It is another source response, even if the policy updates the same Lead or Contact and finds the same Campaign Member. Count the two responses separately; count the Salesforce person and Campaign Member once in a distinct-object report. Keep connector attempts for each response ID separate from source-response counts.

Record:

  • LinkedIn ad account ID;
  • paid form ID;
  • response ID;
  • response timestamp and timezone;
  • connector run or task ID;
  • resolved Salesforce object type;
  • Salesforce person ID;
  • whether the operation created, updated, rejected or held the record.

Do not trim, reformat or rewrite the response ID in prompts or exports. resp_salesforce_001_A and resp-salesforce-001-A are different strings.

Map the source into Salesforce

Build the map from the approved form, not from a generic field list.

LinkedIn sourceSalesforce destinationTreatmentRequired receipt
Work emailLead.Email or Contact.Emailtrim and lowercase for matching; preserve supplied value when policy requires itsource value plus person-field read-back
First nameLead.FirstName or Contact.FirstNametrimperson-field read-back
Last nameLead.LastName or Contact.LastNamerequired if the selected Salesforce operation requires itperson-field read-back or rejection receipt
Company nameLead.Company or approved Account/Contact fieldfollow the Lead/Contact policyperson-field read-back
Job titleLead.Title or Contact.Titletrimperson-field read-back
LinkedIn form IDapproved source fieldstore byte-exactperson-field read-back
LinkedIn response IDapproved external/source keystore byte-exact and use for retry protectionperson-field or integration ledger read-back
Campaign sourceapproved source fieldfixed approved value such as LinkedIn Lead Genperson-field read-back
Consent answernamed consent fieldpreserve question/version and supplied answercontrolled consent evidence plus field read-back

Replace the example fields with the real Salesforce schema. For every required field in the selected Lead or Contact action, record the raw source value, approved transformation, expected destination value and observed read-back. The checker supports identity, trim and trim_lowercase; extend the contract before using another transformation. Keep one source and one Salesforce destination per row. This scalar map does not allow two source values to claim the same destination field. Preserve literal values even when they contain words such as “Future” or “Pending”; only a blank or exact Unknown value means the required data is missing. The response-ID mapping must stay byte-exact, and every mapped destination must belong to the resolved Lead or Contact. A generic “field validation accepted” status does not show which fields were mapped and stored. A public page cannot prove that a custom field exists, is writable or accepts the value you plan to send.

LinkedIn warns that some partners do not support profile links, hidden fields or custom checkboxes. If a draft form changes, LinkedIn says the account, form and field settings in the connected platform may also need to change before a new test syncs. Treat the form ID and reviewed field map as one versioned scope. Read LinkedIn's troubleshooting note.

Required-field failure

If Salesforce rejects a record, save the response ID, connector run ID, destination object, field name, supplied value class and Salesforce error text. Do not “fix” the example by inventing a company name or other required value.

The next action should say exactly what is missing:

REQ_FIELD_VALIDATION: confirm the approved value or mapping for Lead.Company in Salesforce production, then replay response resp_salesforce_003_C once under the same source identity.

That request tells the next operator which field to confirm and which response to replay. “Check the integration” does not.

Send one test response and save the LinkedIn receipt

Run a test only after the route, connected org identity and authorization, object policy, retry rule and required field map are approved and reviewable.

LinkedIn's current path is Campaign Manager → Content & Assets → Lead generation forms → More → Send Test Lead. An operator can also submit through the ad preview. LinkedIn says a test sent from the Ads tab can include the ad ID and ad-set ID in the downloaded lead data. Read LinkedIn's current test-lead instructions.

Before sending another test, save:

  • ad account and Page references;
  • paid form name and ID;
  • test timestamp and timezone;
  • a permitted test-person reference;
  • Test Lead = TRUE in the downloaded report;
  • ad and ad-set IDs when available;
  • the exact response ID or the strongest source identifier the route exposes.

LinkedIn says a later test lead overwrites the existing test lead. Save the first source evidence before repeating the test.

A LinkedIn test row proves source capture. It does not prove the connector accepted it or Salesforce wrote anything.

Prove four separate receipts

Four receipts that must agree before the handoff is verified

1. Connector receipt

Record the connector run ID, observed source response ID, destination action, completion state, timestamp and error detail. A green run is evidence for the connector step only.

2. Person receipt

Record the Salesforce environment and org ID, object type, stable person ID, create/update result, match rule and mapped field read-back. Compare the object and operation with the approved no-match, single-Contact, single-Lead or conflict branch.

If the person existed before the test, the person record alone is weak evidence. Tie the current response ID or connector run to the current update or integration ledger.

3. Campaign Member receipt

Record the approved Campaign ID and expected member status with their approval reference. Separately read back the Campaign Member ID, related Lead or Contact ID, observed status and creation/update timestamp. Compare the observed status with the approved one for this response. A member with the wrong or Unknown status does not pass.

A person can exist without being a member of the intended Campaign. Zapier exposes Add Lead to Campaign and Add Contact to Campaign as separate actions because these are separate outcomes.

4. Owner receipt

Record the approved assignment rule and expected owner ID or eligible queue, with an approval reference. Separately read back the resulting owner ID or queue, the action used and its observation timestamp. Compare the result with the approved expectation. A queue name alone does not prove it is eligible or ineligible.

An enabled assignment-rule option is a setting. The resulting owner read-back is the receipt.

The handoff is verified only when all required receipts agree on source identity, destination org and timing, and the member and owner match their approved expectations. Use a start, end and timezone for source-response membership. Set a separate receipt deadline. If that deadline extends beyond the source cutoff, record the approved processing-lag rule that permits it. The source response must still fall inside the original cohort; downstream receipts may arrive by the approved receipt deadline and must stay in order. An older person record or Campaign Member may predate the cutoff; keep that history separate from evidence that this response was processed during the current window. A stale owner read-back cannot prove current assignment.

Seven examples that make the failure states concrete

Every company, person and ID below is fictional. The examples demonstrate the record; they are not Maestro or client results.

Northstar Analytics: a new Lead with a complete handoff

The paid response has a unique work email and no eligible Salesforce match. The connector creates Lead 00Q-NORTHSTAR-41, stores response resp_salesforce_001_A, adds the Lead to Campaign 701-LINKEDIN-Q4, creates Campaign Member 00v-NORTHSTAR-17 and assigns owner 005-AE-EAST.

All four receipts share the same environment and cutoff. The local fixture can return VERIFIED_FIXTURE_ONLY. A real account stays unverified until those native receipts exist.

Harbor Systems: an existing Contact match

Response resp_salesforce_002_B matches one eligible Contact. The route updates Contact 003-HARBOR-09, adds that Contact to the Campaign and preserves the current owner under the approved policy.

No duplicate Lead was created. Existing-person resolution still counts as one accepted response when the current response is tied to the Contact update.

Willow Point: an existing Lead gets a second response

This fictional Lead 00Q-WILLOW-14 already exists. Response resp_salesforce_007_G matches that one eligible Lead and no Contact. The approved rule updates the Lead, links the response ID to that update, confirms the intended Campaign Member and reads back the approved owner. Count this response as accepted existing Lead, not accepted new Lead.

If Willow Point submits the form again as resp_salesforce_008_H, that is a second source response tied to the same Lead. If the connector merely retries resp_salesforce_007_G, that is another attempt for the first response, not another source response. The person and Campaign Member may still be one distinct object each.

Juniper Works: Salesforce rejects a required field

The connector receives resp_salesforce_003_C, but the chosen Lead operation requires a company value and the approved map supplies none.

Stop at field validation. Person, Campaign Member and owner stay Unknown. Request the exact field decision, then replay this response once. Do not send a new LinkedIn test and create a second source identity.

Orbit Ledger: a retry could create a duplicate

The first connector run times out after Salesforce writes the person. A retry starts with the same response ID.

Search the integration ledger and Salesforce source key before creating anything. If the person already exists for resp_salesforce_004_D, continue from the first missing receipt. Do not call the retry a new source response.

Slate Labs: the person exists, but Campaign Member is missing

Contact 003-SLATE-22 was updated successfully. No Campaign Member exists for Campaign 701-LINKEDIN-Q4.

The first broken state is Campaign membership. The next action is REQ_CAMPAIGN_MEMBER, tied to the Contact and Campaign IDs. Recreating the Contact would make the situation worse.

Fieldnote Cloud: membership exists, but the owner is wrong

The Lead and Campaign Member exist, but the observed owner is queue 00G-INACTIVE-WEST while the approved policy names owner 005-AE-EAST. The mismatch is enough to fail. The queue ID's label alone does not prove whether the queue is active.

Keep the earlier receipts as passed. Repair ownership, read it back and then rerun the cohort reconciliation. Do not reconnect LinkedIn.

Reconcile one response population

Choose one start time, end time and timezone. Keep paid test and live populations separate.

Use mutually exclusive source-outcome buckets:

BucketWhat it counts
Accepted new LeadA unique response represented by one newly created Lead
Accepted existing LeadA unique response tied to an approved update of one existing Lead
Accepted existing ContactA unique response represented by one approved existing Contact update
RejectedA unique response with a terminal connector or Salesforce rejection receipt
UnresolvedA source response with no accepted person outcome and no terminal rejection
Distinct peopleUnique Salesforce Lead or Contact IDs represented by the accepted responses

For the declared cutoff:

source responses = accepted new Lead + accepted existing Lead + accepted existing Contact + rejected + unresolved

Report duplicate retry attempts outside those mutually exclusive buckets. They use the same response ID and are attempts, not new source responses. A repeat submission by the same person with a new response ID is a new source response, even when it updates the same Salesforce person. In that case, accepted existing Lead or accepted existing Contact can be two while distinct people is one.

Then check the later stages:

  • Compare each accepted response with its expected Campaign Member status and owner under the approved policy.
  • Report distinct person IDs and Campaign Member IDs separately from accepted response counts. Several accepted responses may update one person and use one Campaign Member.
  • Keep each missing or mismatched Campaign Member and owner visible as a gap even when the connector reports success.

Blank means nobody supplied a value. Unknown means current evidence cannot establish it. Zero means a dated source proved zero. Do not replace blank or Unknown with zero to make the totals reconcile.

Any positive unresolved count blocks verification and returns REQ_POPULATION_RECONCILIATION with the affected response IDs.

Diagnose the first broken state

The first-broken-state path for LinkedIn paid responses and Salesforce

Work in this order:

  1. Route support: Is the chosen route currently documented for this source and destination?
  2. Permission and environment: Do current LinkedIn roles, Page/Business Manager alignment, connected Salesforce org identity and route authorization match the approved scope?
  3. Source response: Does LinkedIn show the exact paid-form response or permitted test row?
  4. Connector acceptance: Does one connector run contain the same form and response identity?
  5. Field validation: Is each required mapping defined, and did Salesforce accept or reject the supplied values with a tied receipt?
  6. Person resolution: Did the approved match and retry policy resolve to the intended Lead or Contact without a second person, and do the mapped fields read back correctly?
  7. Campaign membership: Does the member for that person have the approved Campaign and status?
  8. Owner assignment: Does the observed owner or queue match the separately approved expectation?
  9. Population reconciliation: Can every source response be explained at one known cutoff, with current receipts inside the declared timing rule?

The first failed check determines the next evidence request. Later states remain Unknown until the earlier state is repaired and retested.

Use the integration evidence kit

Portable toolkit

Preview the complete builder package
{
  "version": 2,
  "name": "Salesforce–LinkedIn handoff builder package",
  "prompt": "You are building one auditable LinkedIn paid Lead Gen Form to Salesforce handoff record. Use only supplied inputs and cited capability sources. Preserve stable IDs byte for byte. Record the exact LinkedIn identities, Salesforce environment and org, connector authorization evidence, approved match and retry policy, required field mappings with tied read-backs, approved Campaign Member status and owner expectation, and ordered receipts within one parseable source cutoff and receipt deadline. Missing or Unknown route.observed_authorization is permissions, never connector_acceptance or route_support. Use the exact Lead/Contact branches, transformation/read-back rules, response/object identity bindings, response-count rule and distinct_people coverage unit in contract.policy_and_evidence_rule. Stop at the first broken state and use contract.first_broken_state_contract exactly. Blank and Unknown are not zero. Return one top-level JSON record matching record_schema plus disposition, first_broken_state and request_id, followed by readable Markdown. Preserve the supplied record fields at that top level; never nest them under a record key. A passing fixture is VERIFIED_FIXTURE_ONLY/complete/NONE. Apply contract.secret_rule exactly: preserve explicitly fictional test values in required source_value and observed_value fields; for real records use operator-supplied privacy-safe deterministic tokens. Never remove those keys, substitute values_match, or claim a match without comparable values. Never request secrets or live contact PII, and never turn documentation or a fixture into native account proof.",
  "contract": {
    "task": "Build or review one LinkedIn paid Lead Gen Form to Salesforce handoff record.",
    "evidence_boundary": "Public documentation proves capability only. Native success requires dated LinkedIn, connector and Salesforce receipts bound to exact IDs.",
    "unit": "one unique LinkedIn paid form response ID at one cutoff",
    "population_equation": "source_responses = accepted_new_lead + accepted_existing_lead + accepted_existing_contact + rejected + unresolved; duplicate_retry_attempts are reported separately",
    "required_receipts": [
      "source_response",
      "connector",
      "field_validation",
      "person",
      "campaign_member",
      "owner"
    ],
    "unknown_rule": "Blank and Unknown are not zero. Later states stay Unknown after the first broken state.",
    "stable_ids": [
      "REQ_ROUTE_SUPPORT",
      "REQ_PERSON_MATCH",
      "REQ_FIELD_VALIDATION",
      "REQ_CAMPAIGN_MEMBER",
      "REQ_OWNER_ASSIGNMENT",
      "REQ_POPULATION_RECONCILIATION"
    ],
    "secret_rule": "Never request or output passwords, tokens, cookies or authorization codes. Do not request live contact PII. For field read-backs, preserve supplied explicitly fictional test values exactly. For real records, require the operator to supply privacy-safe deterministic tokens in source_value and observed_value; never remove those required keys, replace them with values_match, or claim a field match without comparable values.",
    "first_broken_state_contract": {
      "allowed_values": [
        "record",
        "route_support",
        "scope",
        "permissions",
        "source_response",
        "connector_acceptance",
        "field_validation",
        "person_resolution",
        "campaign_member",
        "owner_assignment",
        "population_reconciliation",
        "complete"
      ],
      "precedence": [
        "record",
        "route_support",
        "scope",
        "permissions",
        "source_response",
        "connector_acceptance",
        "field_validation",
        "person_resolution",
        "campaign_member",
        "owner_assignment",
        "population_reconciliation",
        "complete"
      ],
      "exact_rules": [
        "Use only these exact state strings; do not invent synonyms such as NONE, scope_identification, person, or route_support for a scope failure.",
        "route_support means the chosen route lacks documented support or a support reference. Missing account, Page, form, response, Salesforce environment, or Campaign identity is scope.",
        "permissions means a required current role, alignment, Salesforce access, or observed timestamp is absent or non-evidentiary.",
        "After all receipt states pass, any unknown, invalid, unbalanced, unresolved, or receipt-to-count contradiction is population_reconciliation.",
        "A verified fixture uses first_broken_state complete and request_id NONE. Never use NONE as a state.",
        "Stop at the first failing state in precedence order and use the stable request ID paired by the decision table.",
        "permissions includes missing or Unknown route.observed_authorization after route capability and scope identity pass; it is not connector_acceptance or route_support.",
        "A destination/object mismatch is person_resolution, not field_validation; field_validation compares source, transformation, expected and observed values before the person object is resolved.",
        "At field_validation, reject duplicate source names or duplicate Salesforce destinations. Apply evidence-status wording checks to evidence fields, not literal source values; after trimming for the absence check, a literal value fails as absent only when blank or exactly Unknown."
      ],
      "decision_table": {
        "record": "REQ_ROUTE_SUPPORT",
        "route_support": "REQ_ROUTE_SUPPORT",
        "scope": "REQ_ROUTE_SUPPORT",
        "permissions": "REQ_ROUTE_SUPPORT",
        "source_response": "REQ_ROUTE_SUPPORT",
        "connector_acceptance": "REQ_ROUTE_SUPPORT",
        "field_validation": "REQ_FIELD_VALIDATION",
        "person_resolution": "REQ_PERSON_MATCH",
        "campaign_member": "REQ_CAMPAIGN_MEMBER",
        "owner_assignment": "REQ_OWNER_ASSIGNMENT",
        "population_reconciliation": "REQ_POPULATION_RECONCILIATION",
        "complete": "NONE"
      }
    },
    "policy_and_evidence_rule": "Require observed Salesforce org identity and connector authorization; an approved matching and retry policy; evidence-backed field read-backs; approved Campaign Member status and owner expectations; and ordered current receipts inside one parseable cutoff. One eligible existing Lead updates that Lead. One eligible existing Contact updates that Contact. A Lead and Contact conflict or multiple matches hold for review. The same response ID is a retry; a new response ID from the same person is a new source response. Accepted buckets count responses, while distinct_people counts unique Salesforce Lead or Contact IDs; Campaign Member and owner coverage reconcile to distinct_people. Every map names identity, trim, or trim_lowercase; every read-back preserves raw source_value, records expected_value after that transformation, and compares observed_value with expected_value. Each source and each Salesforce destination appears only once in this scalar map. Literal source values may contain status-like words such as Future, Pending or Requested; after trimming for the absence check, only blank or exact Unknown marks required data as absent. The linkedin_response_id mapping stays byte-exact and must equal scope.linkedin_response_id. Validate transformed field values at field_validation. Validate whether every destination belongs to the resolved Lead or Contact only at person_resolution, after the person receipt establishes that object. scope.cutoff.end closes source-response membership; scope.cutoff.receipt_deadline closes downstream receipt collection. A later deadline requires lag_rule_reference evidence."
  },
  "source_summary": [
    {
      "title": "LinkedIn CRM integration guidance",
      "url": "https://www.linkedin.com/help/lms/answer/a425316/integrate-lead-gen-forms-with-your-marketing-automation-or-crm-platform"
    },
    {
      "title": "LinkedIn Lead Gen Form permissions",
      "url": "https://www.linkedin.com/help/lms/answer/a421620"
    },
    {
      "title": "LinkedIn test lead procedure",
      "url": "https://www.linkedin.com/help/lms/answer/a420737"
    },
    {
      "title": "Zapier LinkedIn Ads + Salesforce inventory",
      "url": "https://zapier.com/apps/linkedin-ads/integrations/salesforce"
    }
  ],
  "invocations": [
    {
      "name": "completed",
      "input": "fixtures.complete",
      "expect": "VERIFIED_FIXTURE_ONLY/complete/NONE"
    },
    {
      "name": "missing",
      "input": "fixtures.missing",
      "expect": "REPAIR_REQUIRED/scope/REQ_ROUTE_SUPPORT"
    },
    {
      "name": "contradictory",
      "input": "fixtures.contradictory",
      "expect": "REPAIR_REQUIRED/population_reconciliation/REQ_POPULATION_RECONCILIATION"
    }
  ],
  "fixtures": {
    "complete": {
      "version": 1,
      "record_type": "salesforce_linkedin_paid_lead_handoff",
      "fictional_fixture": true,
      "scope": {
        "linkedin_ad_account_id": "urn:li:sponsoredAccount:900100",
        "linkedin_page_id": "urn:li:organization:700200",
        "linkedin_form_id": "urn:li:leadGenForm:500300",
        "linkedin_response_id": "resp_salesforce_001_A",
        "salesforce_environment": "production",
        "salesforce_org_reference": "Northstar production org",
        "campaign_id": "701-LINKEDIN-Q4",
        "cutoff": {
          "start": "2026-10-08T14:00:00-04:00",
          "end": "2026-10-08T15:00:00-04:00",
          "timezone": "America/New_York",
          "receipt_deadline": "2026-10-08T15:00:00-04:00",
          "lag_rule_reference": "fixture://same-as-source-cutoff"
        }
      },
      "route": {
        "name": "Zapier LinkedIn Ads sponsored response to Salesforce",
        "support_state": "documented",
        "support_reference": "https://zapier.com/apps/linkedin-ads/integrations/salesforce",
        "connector_plan": "Premium app access; fictional fixture only",
        "observed_authorization": "observed_fixture"
      },
      "permissions": {
        "linkedin_ad_account_role": "viewer_or_higher_observed_fixture",
        "linkedin_page_role": "lead_gen_forms_manager_observed_fixture",
        "business_manager_alignment": "observed_fixture",
        "salesforce_access": "create Lead, add Campaign Member, apply assignment rule; observed fixture",
        "observed_at": "2026-10-08T13:55:00-04:00"
      },
      "person_policy": {
        "match_keys": [
          "normalized_work_email"
        ],
        "no_match_action": "create Lead",
        "single_contact_action": "update Contact",
        "multiple_match_action": "hold for review",
        "retry_key": "linkedin_response_id",
        "single_lead_action": "update Lead",
        "contact_and_lead_action": "hold for review",
        "same_response_action": "deduplicate retry",
        "new_response_action": "count as new source response"
      },
      "field_map": [
        {
          "source": "work_email",
          "destination": "Lead.Email",
          "required": true,
          "transformation": "trim_lowercase"
        },
        {
          "source": "last_name",
          "destination": "Lead.LastName",
          "required": true,
          "transformation": "trim"
        },
        {
          "source": "company_name",
          "destination": "Lead.Company",
          "required": true,
          "transformation": "identity"
        },
        {
          "source": "linkedin_response_id",
          "destination": "Lead.LinkedIn_Response_ID__c",
          "required": true,
          "transformation": "identity"
        }
      ],
      "receipts": {
        "source_response": {
          "state": "observed",
          "linkedin_response_id": "resp_salesforce_001_A",
          "test_lead": true,
          "observed_at": "2026-10-08T14:03:00-04:00",
          "evidence_reference": "fixture://linkedin-download-row-1"
        },
        "connector": {
          "state": "accepted",
          "run_id": "zap_run_fixture_0001",
          "linkedin_response_id": "resp_salesforce_001_A",
          "salesforce_environment": "production",
          "action": "Create Lead",
          "observed_at": "2026-10-08T14:03:08-04:00",
          "error": ""
        },
        "field_validation": {
          "state": "accepted",
          "field": "all required fields",
          "detail": "fixture values accepted",
          "observed_at": "2026-10-08T14:03:09-04:00",
          "read_back": [
            {
              "source": "work_email",
              "destination": "Lead.Email",
              "source_value": " lead@example.test ",
              "observed_value": "lead@example.test",
              "evidence_reference": "fixture://salesforce-readback-1",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "lead@example.test"
            },
            {
              "source": "last_name",
              "destination": "Lead.LastName",
              "source_value": " Example ",
              "observed_value": "Example",
              "evidence_reference": "fixture://salesforce-readback-2",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Example"
            },
            {
              "source": "company_name",
              "destination": "Lead.Company",
              "source_value": "Northstar",
              "observed_value": "Northstar",
              "evidence_reference": "fixture://salesforce-readback-3",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Northstar"
            },
            {
              "source": "linkedin_response_id",
              "destination": "Lead.LinkedIn_Response_ID__c",
              "source_value": "resp_salesforce_001_A",
              "observed_value": "resp_salesforce_001_A",
              "evidence_reference": "fixture://salesforce-readback-4",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "resp_salesforce_001_A"
            }
          ]
        },
        "person": {
          "state": "observed",
          "object_type": "Lead",
          "person_id": "00Q-NORTHSTAR-41",
          "linkedin_response_id": "resp_salesforce_001_A",
          "operation": "created",
          "observed_at": "2026-10-08T14:03:10-04:00"
        },
        "campaign_member": {
          "state": "observed",
          "campaign_member_id": "00v-NORTHSTAR-17",
          "campaign_id": "701-LINKEDIN-Q4",
          "person_id": "00Q-NORTHSTAR-41",
          "member_status": "Responded",
          "observed_at": "2026-10-08T14:03:13-04:00",
          "evidence_reference": "fixture://campaign-member-readback"
        },
        "owner": {
          "state": "observed",
          "owner_id": "005-AE-EAST",
          "person_id": "00Q-NORTHSTAR-41",
          "assignment_rule": "LinkedIn inbound east",
          "observed_at": "2026-10-08T14:03:14-04:00",
          "evidence_reference": "fixture://owner-readback"
        }
      },
      "populations": {
        "source_responses": 1,
        "accepted_new_lead": 1,
        "accepted_existing_contact": 0,
        "rejected": 0,
        "duplicate_retry_attempts": 0,
        "unresolved": 0,
        "campaign_members": 1,
        "owned_people": 1,
        "accepted_existing_lead": 0,
        "distinct_people": 1
      },
      "next_action": {
        "owner": "Revenue Operations",
        "request_id": "NONE",
        "request": "No repair in fictional complete fixture."
      },
      "notes": [
        "All identities and results are fictional. Local fixture only; no native account success is claimed."
      ],
      "expectations": {
        "member_status": "Responded",
        "owner_id": "005-AE-EAST",
        "assignment_rule": "LinkedIn inbound east",
        "approval_reference": "fixture://approved-handoff-spec",
        "member_evidence_reference": "fixture://approved-member-status",
        "owner_evidence_reference": "fixture://approved-owner-assignment",
        "approval_state": "approved"
      }
    },
    "missing": {
      "version": 1,
      "record_type": "salesforce_linkedin_paid_lead_handoff",
      "fictional_fixture": true,
      "scope": {
        "linkedin_ad_account_id": "urn:li:sponsoredAccount:900100",
        "linkedin_page_id": "urn:li:organization:700200",
        "linkedin_form_id": "urn:li:leadGenForm:500300",
        "linkedin_response_id": "resp_salesforce_001_A",
        "salesforce_environment": "production",
        "salesforce_org_reference": "Unknown",
        "campaign_id": "701-LINKEDIN-Q4",
        "cutoff": {
          "start": "2026-10-08T14:00:00-04:00",
          "end": "2026-10-08T15:00:00-04:00",
          "timezone": "America/New_York",
          "receipt_deadline": "2026-10-08T15:00:00-04:00",
          "lag_rule_reference": "fixture://same-as-source-cutoff"
        }
      },
      "route": {
        "name": "Zapier LinkedIn Ads sponsored response to Salesforce",
        "support_state": "documented",
        "support_reference": "https://zapier.com/apps/linkedin-ads/integrations/salesforce",
        "connector_plan": "Premium app access; fictional fixture only",
        "observed_authorization": "observed_fixture"
      },
      "permissions": {
        "linkedin_ad_account_role": "viewer_or_higher_observed_fixture",
        "linkedin_page_role": "lead_gen_forms_manager_observed_fixture",
        "business_manager_alignment": "observed_fixture",
        "salesforce_access": "create Lead, add Campaign Member, apply assignment rule; observed fixture",
        "observed_at": "2026-10-08T13:55:00-04:00"
      },
      "person_policy": {
        "match_keys": [
          "normalized_work_email"
        ],
        "no_match_action": "create Lead",
        "single_contact_action": "update Contact",
        "multiple_match_action": "hold for review",
        "retry_key": "linkedin_response_id",
        "single_lead_action": "update Lead",
        "contact_and_lead_action": "hold for review",
        "same_response_action": "deduplicate retry",
        "new_response_action": "count as new source response"
      },
      "field_map": [
        {
          "source": "work_email",
          "destination": "Lead.Email",
          "required": true,
          "transformation": "trim_lowercase"
        },
        {
          "source": "last_name",
          "destination": "Lead.LastName",
          "required": true,
          "transformation": "trim"
        },
        {
          "source": "company_name",
          "destination": "Lead.Company",
          "required": true,
          "transformation": "identity"
        },
        {
          "source": "linkedin_response_id",
          "destination": "Lead.LinkedIn_Response_ID__c",
          "required": true,
          "transformation": "identity"
        }
      ],
      "receipts": {
        "source_response": {
          "state": "observed",
          "linkedin_response_id": "resp_salesforce_001_A",
          "test_lead": true,
          "observed_at": "2026-10-08T14:03:00-04:00",
          "evidence_reference": "fixture://linkedin-download-row-1"
        },
        "connector": {
          "state": "accepted",
          "run_id": "zap_run_fixture_0001",
          "linkedin_response_id": "resp_salesforce_001_A",
          "salesforce_environment": "production",
          "action": "Create Lead",
          "observed_at": "2026-10-08T14:03:08-04:00",
          "error": ""
        },
        "field_validation": {
          "state": "accepted",
          "field": "all required fields",
          "detail": "fixture values accepted",
          "observed_at": "2026-10-08T14:03:09-04:00",
          "read_back": [
            {
              "source": "work_email",
              "destination": "Lead.Email",
              "source_value": " lead@example.test ",
              "observed_value": "lead@example.test",
              "evidence_reference": "fixture://salesforce-readback-1",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "lead@example.test"
            },
            {
              "source": "last_name",
              "destination": "Lead.LastName",
              "source_value": " Example ",
              "observed_value": "Example",
              "evidence_reference": "fixture://salesforce-readback-2",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Example"
            },
            {
              "source": "company_name",
              "destination": "Lead.Company",
              "source_value": "Northstar",
              "observed_value": "Northstar",
              "evidence_reference": "fixture://salesforce-readback-3",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Northstar"
            },
            {
              "source": "linkedin_response_id",
              "destination": "Lead.LinkedIn_Response_ID__c",
              "source_value": "resp_salesforce_001_A",
              "observed_value": "resp_salesforce_001_A",
              "evidence_reference": "fixture://salesforce-readback-4",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "resp_salesforce_001_A"
            }
          ]
        },
        "person": {
          "state": "observed",
          "object_type": "Lead",
          "person_id": "00Q-NORTHSTAR-41",
          "linkedin_response_id": "resp_salesforce_001_A",
          "operation": "created",
          "observed_at": "2026-10-08T14:03:10-04:00"
        },
        "campaign_member": {
          "state": "observed",
          "campaign_member_id": "00v-NORTHSTAR-17",
          "campaign_id": "701-LINKEDIN-Q4",
          "person_id": "00Q-NORTHSTAR-41",
          "member_status": "Responded",
          "observed_at": "2026-10-08T14:03:13-04:00",
          "evidence_reference": "fixture://campaign-member-readback"
        },
        "owner": {
          "state": "observed",
          "owner_id": "005-AE-EAST",
          "person_id": "00Q-NORTHSTAR-41",
          "assignment_rule": "LinkedIn inbound east",
          "observed_at": "2026-10-08T14:03:14-04:00",
          "evidence_reference": "fixture://owner-readback"
        }
      },
      "populations": {
        "source_responses": 1,
        "accepted_new_lead": 1,
        "accepted_existing_contact": 0,
        "rejected": 0,
        "duplicate_retry_attempts": 0,
        "unresolved": 0,
        "campaign_members": 1,
        "owned_people": 1,
        "accepted_existing_lead": 0,
        "distinct_people": 1
      },
      "next_action": {
        "owner": "Revenue Operations",
        "request_id": "NONE",
        "request": "No repair in fictional complete fixture."
      },
      "notes": [
        "All identities and results are fictional. Local fixture only; no native account success is claimed."
      ],
      "expectations": {
        "member_status": "Responded",
        "owner_id": "005-AE-EAST",
        "assignment_rule": "LinkedIn inbound east",
        "approval_reference": "fixture://approved-handoff-spec",
        "member_evidence_reference": "fixture://approved-member-status",
        "owner_evidence_reference": "fixture://approved-owner-assignment",
        "approval_state": "approved"
      }
    },
    "contradictory": {
      "version": 1,
      "record_type": "salesforce_linkedin_paid_lead_handoff",
      "fictional_fixture": true,
      "scope": {
        "linkedin_ad_account_id": "urn:li:sponsoredAccount:900100",
        "linkedin_page_id": "urn:li:organization:700200",
        "linkedin_form_id": "urn:li:leadGenForm:500300",
        "linkedin_response_id": "resp_salesforce_001_A",
        "salesforce_environment": "production",
        "salesforce_org_reference": "Northstar production org",
        "campaign_id": "701-LINKEDIN-Q4",
        "cutoff": {
          "start": "2026-10-08T14:00:00-04:00",
          "end": "2026-10-08T15:00:00-04:00",
          "timezone": "America/New_York",
          "receipt_deadline": "2026-10-08T15:00:00-04:00",
          "lag_rule_reference": "fixture://same-as-source-cutoff"
        }
      },
      "route": {
        "name": "Zapier LinkedIn Ads sponsored response to Salesforce",
        "support_state": "documented",
        "support_reference": "https://zapier.com/apps/linkedin-ads/integrations/salesforce",
        "connector_plan": "Premium app access; fictional fixture only",
        "observed_authorization": "observed_fixture"
      },
      "permissions": {
        "linkedin_ad_account_role": "viewer_or_higher_observed_fixture",
        "linkedin_page_role": "lead_gen_forms_manager_observed_fixture",
        "business_manager_alignment": "observed_fixture",
        "salesforce_access": "create Lead, add Campaign Member, apply assignment rule; observed fixture",
        "observed_at": "2026-10-08T13:55:00-04:00"
      },
      "person_policy": {
        "match_keys": [
          "normalized_work_email"
        ],
        "no_match_action": "create Lead",
        "single_contact_action": "update Contact",
        "multiple_match_action": "hold for review",
        "retry_key": "linkedin_response_id",
        "single_lead_action": "update Lead",
        "contact_and_lead_action": "hold for review",
        "same_response_action": "deduplicate retry",
        "new_response_action": "count as new source response"
      },
      "field_map": [
        {
          "source": "work_email",
          "destination": "Lead.Email",
          "required": true,
          "transformation": "trim_lowercase"
        },
        {
          "source": "last_name",
          "destination": "Lead.LastName",
          "required": true,
          "transformation": "trim"
        },
        {
          "source": "company_name",
          "destination": "Lead.Company",
          "required": true,
          "transformation": "identity"
        },
        {
          "source": "linkedin_response_id",
          "destination": "Lead.LinkedIn_Response_ID__c",
          "required": true,
          "transformation": "identity"
        }
      ],
      "receipts": {
        "source_response": {
          "state": "observed",
          "linkedin_response_id": "resp_salesforce_001_A",
          "test_lead": true,
          "observed_at": "2026-10-08T14:03:00-04:00",
          "evidence_reference": "fixture://linkedin-download-row-1"
        },
        "connector": {
          "state": "accepted",
          "run_id": "zap_run_fixture_0001",
          "linkedin_response_id": "resp_salesforce_001_A",
          "salesforce_environment": "production",
          "action": "Create Lead",
          "observed_at": "2026-10-08T14:03:08-04:00",
          "error": ""
        },
        "field_validation": {
          "state": "accepted",
          "field": "all required fields",
          "detail": "fixture values accepted",
          "observed_at": "2026-10-08T14:03:09-04:00",
          "read_back": [
            {
              "source": "work_email",
              "destination": "Lead.Email",
              "source_value": " lead@example.test ",
              "observed_value": "lead@example.test",
              "evidence_reference": "fixture://salesforce-readback-1",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "lead@example.test"
            },
            {
              "source": "last_name",
              "destination": "Lead.LastName",
              "source_value": " Example ",
              "observed_value": "Example",
              "evidence_reference": "fixture://salesforce-readback-2",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Example"
            },
            {
              "source": "company_name",
              "destination": "Lead.Company",
              "source_value": "Northstar",
              "observed_value": "Northstar",
              "evidence_reference": "fixture://salesforce-readback-3",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Northstar"
            },
            {
              "source": "linkedin_response_id",
              "destination": "Lead.LinkedIn_Response_ID__c",
              "source_value": "resp_salesforce_001_A",
              "observed_value": "resp_salesforce_001_A",
              "evidence_reference": "fixture://salesforce-readback-4",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "resp_salesforce_001_A"
            }
          ]
        },
        "person": {
          "state": "observed",
          "object_type": "Lead",
          "person_id": "00Q-NORTHSTAR-41",
          "linkedin_response_id": "resp_salesforce_001_A",
          "operation": "created",
          "observed_at": "2026-10-08T14:03:10-04:00"
        },
        "campaign_member": {
          "state": "observed",
          "campaign_member_id": "00v-NORTHSTAR-17",
          "campaign_id": "701-LINKEDIN-Q4",
          "person_id": "00Q-NORTHSTAR-41",
          "member_status": "Responded",
          "observed_at": "2026-10-08T14:03:13-04:00",
          "evidence_reference": "fixture://campaign-member-readback"
        },
        "owner": {
          "state": "observed",
          "owner_id": "005-AE-EAST",
          "person_id": "00Q-NORTHSTAR-41",
          "assignment_rule": "LinkedIn inbound east",
          "observed_at": "2026-10-08T14:03:14-04:00",
          "evidence_reference": "fixture://owner-readback"
        }
      },
      "populations": {
        "source_responses": 2,
        "accepted_new_lead": 1,
        "accepted_existing_contact": 0,
        "rejected": 0,
        "duplicate_retry_attempts": 0,
        "unresolved": 0,
        "campaign_members": 1,
        "owned_people": 1,
        "accepted_existing_lead": 0,
        "distinct_people": 1
      },
      "next_action": {
        "owner": "Revenue Operations",
        "request_id": "NONE",
        "request": "No repair in fictional complete fixture."
      },
      "notes": [
        "All identities and results are fictional. Local fixture only; no native account success is claimed."
      ],
      "expectations": {
        "member_status": "Responded",
        "owner_id": "005-AE-EAST",
        "assignment_rule": "LinkedIn inbound east",
        "approval_reference": "fixture://approved-handoff-spec",
        "member_evidence_reference": "fixture://approved-member-status",
        "owner_evidence_reference": "fixture://approved-owner-assignment",
        "approval_state": "approved"
      }
    }
  },
  "output_contract": {
    "json_schema_file": "salesforce-linkedin-integration-blank.json",
    "readable_output": "Markdown with disposition, first broken state, request ID, exact evidence request and scope IDs",
    "embedded_schema": "record_schema",
    "decision_fields": {
      "disposition": [
        "VERIFIED_FIXTURE_ONLY",
        "REPAIR_REQUIRED"
      ],
      "first_broken_state": "exact value from contract.first_broken_state_contract.allowed_values",
      "request_id": "exact value from contract.first_broken_state_contract.decision_table"
    },
    "verified_fixture_triple": "VERIFIED_FIXTURE_ONLY/complete/NONE",
    "repair_rule": "Use the first failing exact state in contract precedence and its paired request ID; no state synonyms.",
    "top_level_record_rule": "Emit the supplied record fields at the top level beside disposition, first_broken_state and request_id. Never wrap the record under a record key."
  },
  "record_schema": {
    "version": 1,
    "record_type": "salesforce_linkedin_paid_lead_handoff",
    "fictional_fixture": false,
    "scope": {
      "linkedin_ad_account_id": "Unknown",
      "linkedin_page_id": "Unknown",
      "linkedin_form_id": "Unknown",
      "linkedin_response_id": "Unknown",
      "salesforce_environment": "Unknown",
      "salesforce_org_reference": "Unknown",
      "campaign_id": "Unknown",
      "cutoff": {
        "start": "Unknown",
        "end": "Unknown",
        "timezone": "Unknown",
        "receipt_deadline": "Unknown",
        "lag_rule_reference": "Unknown"
      }
    },
    "route": {
      "name": "Unknown",
      "support_state": "Unknown",
      "support_reference": "Unknown",
      "connector_plan": "Unknown",
      "observed_authorization": "Unknown"
    },
    "permissions": {
      "linkedin_ad_account_role": "Unknown",
      "linkedin_page_role": "Unknown",
      "business_manager_alignment": "Unknown",
      "salesforce_access": "Unknown",
      "observed_at": "Unknown"
    },
    "person_policy": {
      "match_keys": [],
      "no_match_action": "Unknown",
      "single_contact_action": "Unknown",
      "multiple_match_action": "Unknown",
      "retry_key": "linkedin_response_id",
      "single_lead_action": "Unknown",
      "contact_and_lead_action": "Unknown",
      "same_response_action": "Unknown",
      "new_response_action": "Unknown"
    },
    "field_map": [],
    "receipts": {
      "source_response": {
        "state": "Unknown",
        "linkedin_response_id": "Unknown",
        "test_lead": "Unknown",
        "observed_at": "Unknown",
        "evidence_reference": "Unknown"
      },
      "connector": {
        "state": "Unknown",
        "run_id": "Unknown",
        "linkedin_response_id": "Unknown",
        "salesforce_environment": "Unknown",
        "action": "Unknown",
        "observed_at": "Unknown",
        "error": "Unknown"
      },
      "field_validation": {
        "state": "Unknown",
        "field": "Unknown",
        "detail": "Unknown",
        "observed_at": "Unknown",
        "read_back": []
      },
      "person": {
        "state": "Unknown",
        "object_type": "Unknown",
        "person_id": "Unknown",
        "linkedin_response_id": "Unknown",
        "operation": "Unknown",
        "observed_at": "Unknown"
      },
      "campaign_member": {
        "state": "Unknown",
        "campaign_member_id": "Unknown",
        "campaign_id": "Unknown",
        "person_id": "Unknown",
        "member_status": "Unknown",
        "observed_at": "Unknown",
        "evidence_reference": "Unknown"
      },
      "owner": {
        "state": "Unknown",
        "owner_id": "Unknown",
        "person_id": "Unknown",
        "assignment_rule": "Unknown",
        "observed_at": "Unknown",
        "evidence_reference": "Unknown"
      }
    },
    "populations": {
      "source_responses": "Unknown",
      "accepted_new_lead": "Unknown",
      "accepted_existing_contact": "Unknown",
      "rejected": "Unknown",
      "duplicate_retry_attempts": "Unknown",
      "unresolved": "Unknown",
      "campaign_members": "Unknown",
      "owned_people": "Unknown",
      "accepted_existing_lead": "Unknown",
      "distinct_people": "Unknown"
    },
    "next_action": {
      "owner": "Unknown",
      "request_id": "Unknown",
      "request": "Unknown"
    },
    "notes": [],
    "expectations": {
      "member_status": "Unknown",
      "owner_id": "Unknown",
      "assignment_rule": "Unknown",
      "approval_reference": "Unknown",
      "member_evidence_reference": "Unknown",
      "owner_evidence_reference": "Unknown",
      "approval_state": "Unknown"
    }
  },
  "transport_rule": "Copy or download this complete JSON object. Prompt text without contract, sources, record schema, stable IDs, output contract, invocations and fixtures is incomplete."
}
Download exact builder packageComplete JSON · works without this article
Preview the complete reviewer package
{
  "version": 2,
  "name": "Salesforce–LinkedIn handoff reviewer package",
  "prompt": "Review one supplied Salesforce-LinkedIn handoff record without account access. Apply contract.policy_and_evidence_rule, the population equation and contract.first_broken_state_contract exactly. Missing or Unknown route.observed_authorization is permissions, never connector_acceptance or route_support. Compare observed org, authorization, field read-backs, person branch, Campaign Member status, owner and receipt timing with the approved policy. The same response ID is a retry; a new response ID is a new source response. Reconcile Campaign Member and owner coverage to distinct_people. Preserve request IDs, reviewed_scope and reviewed_receipts byte for byte. Apply contract.secret_rule exactly: preserve supplied fictional read-back values and required keys; for real records accept only operator-supplied privacy-safe deterministic tokens. Return VERIFIED_FIXTURE_ONLY only when the fixture is internally complete; otherwise return REPAIR_REQUIRED at the earliest state. Never claim native account delivery.",
  "contract": {
    "task": "Build or review one LinkedIn paid Lead Gen Form to Salesforce handoff record.",
    "evidence_boundary": "Public documentation proves capability only. Native success requires dated LinkedIn, connector and Salesforce receipts bound to exact IDs.",
    "unit": "one unique LinkedIn paid form response ID at one cutoff",
    "population_equation": "source_responses = accepted_new_lead + accepted_existing_lead + accepted_existing_contact + rejected + unresolved; duplicate_retry_attempts are reported separately",
    "required_receipts": [
      "source_response",
      "connector",
      "field_validation",
      "person",
      "campaign_member",
      "owner"
    ],
    "unknown_rule": "Blank and Unknown are not zero. Later states stay Unknown after the first broken state.",
    "stable_ids": [
      "REQ_ROUTE_SUPPORT",
      "REQ_PERSON_MATCH",
      "REQ_FIELD_VALIDATION",
      "REQ_CAMPAIGN_MEMBER",
      "REQ_OWNER_ASSIGNMENT",
      "REQ_POPULATION_RECONCILIATION"
    ],
    "secret_rule": "Never request or output passwords, tokens, cookies or authorization codes. Do not request live contact PII. For field read-backs, preserve supplied explicitly fictional test values exactly. For real records, require the operator to supply privacy-safe deterministic tokens in source_value and observed_value; never remove those required keys, replace them with values_match, or claim a field match without comparable values.",
    "first_broken_state_contract": {
      "allowed_values": [
        "record",
        "route_support",
        "scope",
        "permissions",
        "source_response",
        "connector_acceptance",
        "field_validation",
        "person_resolution",
        "campaign_member",
        "owner_assignment",
        "population_reconciliation",
        "complete"
      ],
      "precedence": [
        "record",
        "route_support",
        "scope",
        "permissions",
        "source_response",
        "connector_acceptance",
        "field_validation",
        "person_resolution",
        "campaign_member",
        "owner_assignment",
        "population_reconciliation",
        "complete"
      ],
      "exact_rules": [
        "Use only these exact state strings; do not invent synonyms such as NONE, scope_identification, person, or route_support for a scope failure.",
        "route_support means the chosen route lacks documented support or a support reference. Missing account, Page, form, response, Salesforce environment, or Campaign identity is scope.",
        "permissions means a required current role, alignment, Salesforce access, or observed timestamp is absent or non-evidentiary.",
        "After all receipt states pass, any unknown, invalid, unbalanced, unresolved, or receipt-to-count contradiction is population_reconciliation.",
        "A verified fixture uses first_broken_state complete and request_id NONE. Never use NONE as a state.",
        "Stop at the first failing state in precedence order and use the stable request ID paired by the decision table.",
        "permissions includes missing or Unknown route.observed_authorization after route capability and scope identity pass; it is not connector_acceptance or route_support.",
        "A destination/object mismatch is person_resolution, not field_validation; field_validation compares source, transformation, expected and observed values before the person object is resolved.",
        "At field_validation, reject duplicate source names or duplicate Salesforce destinations. Apply evidence-status wording checks to evidence fields, not literal source values; after trimming for the absence check, a literal value fails as absent only when blank or exactly Unknown."
      ],
      "decision_table": {
        "record": "REQ_ROUTE_SUPPORT",
        "route_support": "REQ_ROUTE_SUPPORT",
        "scope": "REQ_ROUTE_SUPPORT",
        "permissions": "REQ_ROUTE_SUPPORT",
        "source_response": "REQ_ROUTE_SUPPORT",
        "connector_acceptance": "REQ_ROUTE_SUPPORT",
        "field_validation": "REQ_FIELD_VALIDATION",
        "person_resolution": "REQ_PERSON_MATCH",
        "campaign_member": "REQ_CAMPAIGN_MEMBER",
        "owner_assignment": "REQ_OWNER_ASSIGNMENT",
        "population_reconciliation": "REQ_POPULATION_RECONCILIATION",
        "complete": "NONE"
      }
    },
    "policy_and_evidence_rule": "Require observed Salesforce org identity and connector authorization; an approved matching and retry policy; evidence-backed field read-backs; approved Campaign Member status and owner expectations; and ordered current receipts inside one parseable cutoff. One eligible existing Lead updates that Lead. One eligible existing Contact updates that Contact. A Lead and Contact conflict or multiple matches hold for review. The same response ID is a retry; a new response ID from the same person is a new source response. Accepted buckets count responses, while distinct_people counts unique Salesforce Lead or Contact IDs; Campaign Member and owner coverage reconcile to distinct_people. Every map names identity, trim, or trim_lowercase; every read-back preserves raw source_value, records expected_value after that transformation, and compares observed_value with expected_value. Each source and each Salesforce destination appears only once in this scalar map. Literal source values may contain status-like words such as Future, Pending or Requested; after trimming for the absence check, only blank or exact Unknown marks required data as absent. The linkedin_response_id mapping stays byte-exact and must equal scope.linkedin_response_id. Validate transformed field values at field_validation. Validate whether every destination belongs to the resolved Lead or Contact only at person_resolution, after the person receipt establishes that object. scope.cutoff.end closes source-response membership; scope.cutoff.receipt_deadline closes downstream receipt collection. A later deadline requires lag_rule_reference evidence."
  },
  "source_summary": [
    {
      "title": "LinkedIn CRM integration guidance",
      "url": "https://www.linkedin.com/help/lms/answer/a425316/integrate-lead-gen-forms-with-your-marketing-automation-or-crm-platform"
    },
    {
      "title": "LinkedIn Lead Gen Form permissions",
      "url": "https://www.linkedin.com/help/lms/answer/a421620"
    },
    {
      "title": "LinkedIn test lead procedure",
      "url": "https://www.linkedin.com/help/lms/answer/a420737"
    },
    {
      "title": "Zapier LinkedIn Ads + Salesforce inventory",
      "url": "https://zapier.com/apps/linkedin-ads/integrations/salesforce"
    }
  ],
  "invocations": [
    {
      "name": "completed",
      "input": "fixtures.complete",
      "expect": "VERIFIED_FIXTURE_ONLY/complete/NONE"
    },
    {
      "name": "missing",
      "input": "fixtures.missing",
      "expect": "REPAIR_REQUIRED/scope/REQ_ROUTE_SUPPORT"
    },
    {
      "name": "contradictory",
      "input": "fixtures.contradictory",
      "expect": "REPAIR_REQUIRED/population_reconciliation/REQ_POPULATION_RECONCILIATION"
    }
  ],
  "fixtures": {
    "complete": {
      "version": 1,
      "record_type": "salesforce_linkedin_paid_lead_handoff",
      "fictional_fixture": true,
      "scope": {
        "linkedin_ad_account_id": "urn:li:sponsoredAccount:900100",
        "linkedin_page_id": "urn:li:organization:700200",
        "linkedin_form_id": "urn:li:leadGenForm:500300",
        "linkedin_response_id": "resp_salesforce_001_A",
        "salesforce_environment": "production",
        "salesforce_org_reference": "Northstar production org",
        "campaign_id": "701-LINKEDIN-Q4",
        "cutoff": {
          "start": "2026-10-08T14:00:00-04:00",
          "end": "2026-10-08T15:00:00-04:00",
          "timezone": "America/New_York",
          "receipt_deadline": "2026-10-08T15:00:00-04:00",
          "lag_rule_reference": "fixture://same-as-source-cutoff"
        }
      },
      "route": {
        "name": "Zapier LinkedIn Ads sponsored response to Salesforce",
        "support_state": "documented",
        "support_reference": "https://zapier.com/apps/linkedin-ads/integrations/salesforce",
        "connector_plan": "Premium app access; fictional fixture only",
        "observed_authorization": "observed_fixture"
      },
      "permissions": {
        "linkedin_ad_account_role": "viewer_or_higher_observed_fixture",
        "linkedin_page_role": "lead_gen_forms_manager_observed_fixture",
        "business_manager_alignment": "observed_fixture",
        "salesforce_access": "create Lead, add Campaign Member, apply assignment rule; observed fixture",
        "observed_at": "2026-10-08T13:55:00-04:00"
      },
      "person_policy": {
        "match_keys": [
          "normalized_work_email"
        ],
        "no_match_action": "create Lead",
        "single_contact_action": "update Contact",
        "multiple_match_action": "hold for review",
        "retry_key": "linkedin_response_id",
        "single_lead_action": "update Lead",
        "contact_and_lead_action": "hold for review",
        "same_response_action": "deduplicate retry",
        "new_response_action": "count as new source response"
      },
      "field_map": [
        {
          "source": "work_email",
          "destination": "Lead.Email",
          "required": true,
          "transformation": "trim_lowercase"
        },
        {
          "source": "last_name",
          "destination": "Lead.LastName",
          "required": true,
          "transformation": "trim"
        },
        {
          "source": "company_name",
          "destination": "Lead.Company",
          "required": true,
          "transformation": "identity"
        },
        {
          "source": "linkedin_response_id",
          "destination": "Lead.LinkedIn_Response_ID__c",
          "required": true,
          "transformation": "identity"
        }
      ],
      "receipts": {
        "source_response": {
          "state": "observed",
          "linkedin_response_id": "resp_salesforce_001_A",
          "test_lead": true,
          "observed_at": "2026-10-08T14:03:00-04:00",
          "evidence_reference": "fixture://linkedin-download-row-1"
        },
        "connector": {
          "state": "accepted",
          "run_id": "zap_run_fixture_0001",
          "linkedin_response_id": "resp_salesforce_001_A",
          "salesforce_environment": "production",
          "action": "Create Lead",
          "observed_at": "2026-10-08T14:03:08-04:00",
          "error": ""
        },
        "field_validation": {
          "state": "accepted",
          "field": "all required fields",
          "detail": "fixture values accepted",
          "observed_at": "2026-10-08T14:03:09-04:00",
          "read_back": [
            {
              "source": "work_email",
              "destination": "Lead.Email",
              "source_value": " lead@example.test ",
              "observed_value": "lead@example.test",
              "evidence_reference": "fixture://salesforce-readback-1",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "lead@example.test"
            },
            {
              "source": "last_name",
              "destination": "Lead.LastName",
              "source_value": " Example ",
              "observed_value": "Example",
              "evidence_reference": "fixture://salesforce-readback-2",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Example"
            },
            {
              "source": "company_name",
              "destination": "Lead.Company",
              "source_value": "Northstar",
              "observed_value": "Northstar",
              "evidence_reference": "fixture://salesforce-readback-3",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Northstar"
            },
            {
              "source": "linkedin_response_id",
              "destination": "Lead.LinkedIn_Response_ID__c",
              "source_value": "resp_salesforce_001_A",
              "observed_value": "resp_salesforce_001_A",
              "evidence_reference": "fixture://salesforce-readback-4",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "resp_salesforce_001_A"
            }
          ]
        },
        "person": {
          "state": "observed",
          "object_type": "Lead",
          "person_id": "00Q-NORTHSTAR-41",
          "linkedin_response_id": "resp_salesforce_001_A",
          "operation": "created",
          "observed_at": "2026-10-08T14:03:10-04:00"
        },
        "campaign_member": {
          "state": "observed",
          "campaign_member_id": "00v-NORTHSTAR-17",
          "campaign_id": "701-LINKEDIN-Q4",
          "person_id": "00Q-NORTHSTAR-41",
          "member_status": "Responded",
          "observed_at": "2026-10-08T14:03:13-04:00",
          "evidence_reference": "fixture://campaign-member-readback"
        },
        "owner": {
          "state": "observed",
          "owner_id": "005-AE-EAST",
          "person_id": "00Q-NORTHSTAR-41",
          "assignment_rule": "LinkedIn inbound east",
          "observed_at": "2026-10-08T14:03:14-04:00",
          "evidence_reference": "fixture://owner-readback"
        }
      },
      "populations": {
        "source_responses": 1,
        "accepted_new_lead": 1,
        "accepted_existing_contact": 0,
        "rejected": 0,
        "duplicate_retry_attempts": 0,
        "unresolved": 0,
        "campaign_members": 1,
        "owned_people": 1,
        "accepted_existing_lead": 0,
        "distinct_people": 1
      },
      "next_action": {
        "owner": "Revenue Operations",
        "request_id": "NONE",
        "request": "No repair in fictional complete fixture."
      },
      "notes": [
        "All identities and results are fictional. Local fixture only; no native account success is claimed."
      ],
      "expectations": {
        "member_status": "Responded",
        "owner_id": "005-AE-EAST",
        "assignment_rule": "LinkedIn inbound east",
        "approval_reference": "fixture://approved-handoff-spec",
        "member_evidence_reference": "fixture://approved-member-status",
        "owner_evidence_reference": "fixture://approved-owner-assignment",
        "approval_state": "approved"
      }
    },
    "missing": {
      "version": 1,
      "record_type": "salesforce_linkedin_paid_lead_handoff",
      "fictional_fixture": true,
      "scope": {
        "linkedin_ad_account_id": "urn:li:sponsoredAccount:900100",
        "linkedin_page_id": "urn:li:organization:700200",
        "linkedin_form_id": "urn:li:leadGenForm:500300",
        "linkedin_response_id": "resp_salesforce_001_A",
        "salesforce_environment": "production",
        "salesforce_org_reference": "Unknown",
        "campaign_id": "701-LINKEDIN-Q4",
        "cutoff": {
          "start": "2026-10-08T14:00:00-04:00",
          "end": "2026-10-08T15:00:00-04:00",
          "timezone": "America/New_York",
          "receipt_deadline": "2026-10-08T15:00:00-04:00",
          "lag_rule_reference": "fixture://same-as-source-cutoff"
        }
      },
      "route": {
        "name": "Zapier LinkedIn Ads sponsored response to Salesforce",
        "support_state": "documented",
        "support_reference": "https://zapier.com/apps/linkedin-ads/integrations/salesforce",
        "connector_plan": "Premium app access; fictional fixture only",
        "observed_authorization": "observed_fixture"
      },
      "permissions": {
        "linkedin_ad_account_role": "viewer_or_higher_observed_fixture",
        "linkedin_page_role": "lead_gen_forms_manager_observed_fixture",
        "business_manager_alignment": "observed_fixture",
        "salesforce_access": "create Lead, add Campaign Member, apply assignment rule; observed fixture",
        "observed_at": "2026-10-08T13:55:00-04:00"
      },
      "person_policy": {
        "match_keys": [
          "normalized_work_email"
        ],
        "no_match_action": "create Lead",
        "single_contact_action": "update Contact",
        "multiple_match_action": "hold for review",
        "retry_key": "linkedin_response_id",
        "single_lead_action": "update Lead",
        "contact_and_lead_action": "hold for review",
        "same_response_action": "deduplicate retry",
        "new_response_action": "count as new source response"
      },
      "field_map": [
        {
          "source": "work_email",
          "destination": "Lead.Email",
          "required": true,
          "transformation": "trim_lowercase"
        },
        {
          "source": "last_name",
          "destination": "Lead.LastName",
          "required": true,
          "transformation": "trim"
        },
        {
          "source": "company_name",
          "destination": "Lead.Company",
          "required": true,
          "transformation": "identity"
        },
        {
          "source": "linkedin_response_id",
          "destination": "Lead.LinkedIn_Response_ID__c",
          "required": true,
          "transformation": "identity"
        }
      ],
      "receipts": {
        "source_response": {
          "state": "observed",
          "linkedin_response_id": "resp_salesforce_001_A",
          "test_lead": true,
          "observed_at": "2026-10-08T14:03:00-04:00",
          "evidence_reference": "fixture://linkedin-download-row-1"
        },
        "connector": {
          "state": "accepted",
          "run_id": "zap_run_fixture_0001",
          "linkedin_response_id": "resp_salesforce_001_A",
          "salesforce_environment": "production",
          "action": "Create Lead",
          "observed_at": "2026-10-08T14:03:08-04:00",
          "error": ""
        },
        "field_validation": {
          "state": "accepted",
          "field": "all required fields",
          "detail": "fixture values accepted",
          "observed_at": "2026-10-08T14:03:09-04:00",
          "read_back": [
            {
              "source": "work_email",
              "destination": "Lead.Email",
              "source_value": " lead@example.test ",
              "observed_value": "lead@example.test",
              "evidence_reference": "fixture://salesforce-readback-1",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "lead@example.test"
            },
            {
              "source": "last_name",
              "destination": "Lead.LastName",
              "source_value": " Example ",
              "observed_value": "Example",
              "evidence_reference": "fixture://salesforce-readback-2",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Example"
            },
            {
              "source": "company_name",
              "destination": "Lead.Company",
              "source_value": "Northstar",
              "observed_value": "Northstar",
              "evidence_reference": "fixture://salesforce-readback-3",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Northstar"
            },
            {
              "source": "linkedin_response_id",
              "destination": "Lead.LinkedIn_Response_ID__c",
              "source_value": "resp_salesforce_001_A",
              "observed_value": "resp_salesforce_001_A",
              "evidence_reference": "fixture://salesforce-readback-4",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "resp_salesforce_001_A"
            }
          ]
        },
        "person": {
          "state": "observed",
          "object_type": "Lead",
          "person_id": "00Q-NORTHSTAR-41",
          "linkedin_response_id": "resp_salesforce_001_A",
          "operation": "created",
          "observed_at": "2026-10-08T14:03:10-04:00"
        },
        "campaign_member": {
          "state": "observed",
          "campaign_member_id": "00v-NORTHSTAR-17",
          "campaign_id": "701-LINKEDIN-Q4",
          "person_id": "00Q-NORTHSTAR-41",
          "member_status": "Responded",
          "observed_at": "2026-10-08T14:03:13-04:00",
          "evidence_reference": "fixture://campaign-member-readback"
        },
        "owner": {
          "state": "observed",
          "owner_id": "005-AE-EAST",
          "person_id": "00Q-NORTHSTAR-41",
          "assignment_rule": "LinkedIn inbound east",
          "observed_at": "2026-10-08T14:03:14-04:00",
          "evidence_reference": "fixture://owner-readback"
        }
      },
      "populations": {
        "source_responses": 1,
        "accepted_new_lead": 1,
        "accepted_existing_contact": 0,
        "rejected": 0,
        "duplicate_retry_attempts": 0,
        "unresolved": 0,
        "campaign_members": 1,
        "owned_people": 1,
        "accepted_existing_lead": 0,
        "distinct_people": 1
      },
      "next_action": {
        "owner": "Revenue Operations",
        "request_id": "NONE",
        "request": "No repair in fictional complete fixture."
      },
      "notes": [
        "All identities and results are fictional. Local fixture only; no native account success is claimed."
      ],
      "expectations": {
        "member_status": "Responded",
        "owner_id": "005-AE-EAST",
        "assignment_rule": "LinkedIn inbound east",
        "approval_reference": "fixture://approved-handoff-spec",
        "member_evidence_reference": "fixture://approved-member-status",
        "owner_evidence_reference": "fixture://approved-owner-assignment",
        "approval_state": "approved"
      }
    },
    "contradictory": {
      "version": 1,
      "record_type": "salesforce_linkedin_paid_lead_handoff",
      "fictional_fixture": true,
      "scope": {
        "linkedin_ad_account_id": "urn:li:sponsoredAccount:900100",
        "linkedin_page_id": "urn:li:organization:700200",
        "linkedin_form_id": "urn:li:leadGenForm:500300",
        "linkedin_response_id": "resp_salesforce_001_A",
        "salesforce_environment": "production",
        "salesforce_org_reference": "Northstar production org",
        "campaign_id": "701-LINKEDIN-Q4",
        "cutoff": {
          "start": "2026-10-08T14:00:00-04:00",
          "end": "2026-10-08T15:00:00-04:00",
          "timezone": "America/New_York",
          "receipt_deadline": "2026-10-08T15:00:00-04:00",
          "lag_rule_reference": "fixture://same-as-source-cutoff"
        }
      },
      "route": {
        "name": "Zapier LinkedIn Ads sponsored response to Salesforce",
        "support_state": "documented",
        "support_reference": "https://zapier.com/apps/linkedin-ads/integrations/salesforce",
        "connector_plan": "Premium app access; fictional fixture only",
        "observed_authorization": "observed_fixture"
      },
      "permissions": {
        "linkedin_ad_account_role": "viewer_or_higher_observed_fixture",
        "linkedin_page_role": "lead_gen_forms_manager_observed_fixture",
        "business_manager_alignment": "observed_fixture",
        "salesforce_access": "create Lead, add Campaign Member, apply assignment rule; observed fixture",
        "observed_at": "2026-10-08T13:55:00-04:00"
      },
      "person_policy": {
        "match_keys": [
          "normalized_work_email"
        ],
        "no_match_action": "create Lead",
        "single_contact_action": "update Contact",
        "multiple_match_action": "hold for review",
        "retry_key": "linkedin_response_id",
        "single_lead_action": "update Lead",
        "contact_and_lead_action": "hold for review",
        "same_response_action": "deduplicate retry",
        "new_response_action": "count as new source response"
      },
      "field_map": [
        {
          "source": "work_email",
          "destination": "Lead.Email",
          "required": true,
          "transformation": "trim_lowercase"
        },
        {
          "source": "last_name",
          "destination": "Lead.LastName",
          "required": true,
          "transformation": "trim"
        },
        {
          "source": "company_name",
          "destination": "Lead.Company",
          "required": true,
          "transformation": "identity"
        },
        {
          "source": "linkedin_response_id",
          "destination": "Lead.LinkedIn_Response_ID__c",
          "required": true,
          "transformation": "identity"
        }
      ],
      "receipts": {
        "source_response": {
          "state": "observed",
          "linkedin_response_id": "resp_salesforce_001_A",
          "test_lead": true,
          "observed_at": "2026-10-08T14:03:00-04:00",
          "evidence_reference": "fixture://linkedin-download-row-1"
        },
        "connector": {
          "state": "accepted",
          "run_id": "zap_run_fixture_0001",
          "linkedin_response_id": "resp_salesforce_001_A",
          "salesforce_environment": "production",
          "action": "Create Lead",
          "observed_at": "2026-10-08T14:03:08-04:00",
          "error": ""
        },
        "field_validation": {
          "state": "accepted",
          "field": "all required fields",
          "detail": "fixture values accepted",
          "observed_at": "2026-10-08T14:03:09-04:00",
          "read_back": [
            {
              "source": "work_email",
              "destination": "Lead.Email",
              "source_value": " lead@example.test ",
              "observed_value": "lead@example.test",
              "evidence_reference": "fixture://salesforce-readback-1",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "lead@example.test"
            },
            {
              "source": "last_name",
              "destination": "Lead.LastName",
              "source_value": " Example ",
              "observed_value": "Example",
              "evidence_reference": "fixture://salesforce-readback-2",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Example"
            },
            {
              "source": "company_name",
              "destination": "Lead.Company",
              "source_value": "Northstar",
              "observed_value": "Northstar",
              "evidence_reference": "fixture://salesforce-readback-3",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "Northstar"
            },
            {
              "source": "linkedin_response_id",
              "destination": "Lead.LinkedIn_Response_ID__c",
              "source_value": "resp_salesforce_001_A",
              "observed_value": "resp_salesforce_001_A",
              "evidence_reference": "fixture://salesforce-readback-4",
              "person_id": "00Q-NORTHSTAR-41",
              "linkedin_response_id": "resp_salesforce_001_A",
              "salesforce_environment": "production",
              "expected_value": "resp_salesforce_001_A"
            }
          ]
        },
        "person": {
          "state": "observed",
          "object_type": "Lead",
          "person_id": "00Q-NORTHSTAR-41",
          "linkedin_response_id": "resp_salesforce_001_A",
          "operation": "created",
          "observed_at": "2026-10-08T14:03:10-04:00"
        },
        "campaign_member": {
          "state": "observed",
          "campaign_member_id": "00v-NORTHSTAR-17",
          "campaign_id": "701-LINKEDIN-Q4",
          "person_id": "00Q-NORTHSTAR-41",
          "member_status": "Responded",
          "observed_at": "2026-10-08T14:03:13-04:00",
          "evidence_reference": "fixture://campaign-member-readback"
        },
        "owner": {
          "state": "observed",
          "owner_id": "005-AE-EAST",
          "person_id": "00Q-NORTHSTAR-41",
          "assignment_rule": "LinkedIn inbound east",
          "observed_at": "2026-10-08T14:03:14-04:00",
          "evidence_reference": "fixture://owner-readback"
        }
      },
      "populations": {
        "source_responses": 2,
        "accepted_new_lead": 1,
        "accepted_existing_contact": 0,
        "rejected": 0,
        "duplicate_retry_attempts": 0,
        "unresolved": 0,
        "campaign_members": 1,
        "owned_people": 1,
        "accepted_existing_lead": 0,
        "distinct_people": 1
      },
      "next_action": {
        "owner": "Revenue Operations",
        "request_id": "NONE",
        "request": "No repair in fictional complete fixture."
      },
      "notes": [
        "All identities and results are fictional. Local fixture only; no native account success is claimed."
      ],
      "expectations": {
        "member_status": "Responded",
        "owner_id": "005-AE-EAST",
        "assignment_rule": "LinkedIn inbound east",
        "approval_reference": "fixture://approved-handoff-spec",
        "member_evidence_reference": "fixture://approved-member-status",
        "owner_evidence_reference": "fixture://approved-owner-assignment",
        "approval_state": "approved"
      }
    }
  },
  "output_contract": {
    "dispositions": [
      "VERIFIED_FIXTURE_ONLY",
      "REPAIR_REQUIRED"
    ],
    "required_fields": [
      "disposition",
      "first_broken_state",
      "request_id",
      "detail",
      "reviewed_scope",
      "reviewed_receipts"
    ],
    "native_success_allowed": false,
    "record_schema": "record_schema",
    "reviewed_scope": "Exact deep copy of selected_input.scope; preserve every string byte for byte and every Unknown.",
    "reviewed_receipts": "Exact deep copy of selected_input.receipts; preserve every string byte for byte and every Unknown.",
    "decision_fields": {
      "disposition": [
        "VERIFIED_FIXTURE_ONLY",
        "REPAIR_REQUIRED"
      ],
      "first_broken_state": "exact value from contract.first_broken_state_contract.allowed_values",
      "request_id": "exact value from contract.first_broken_state_contract.decision_table"
    },
    "verified_fixture_triple": "VERIFIED_FIXTURE_ONLY/complete/NONE",
    "repair_rule": "Use the first failing exact state in contract precedence and its paired request ID; no state synonyms."
  },
  "record_schema": {
    "version": 1,
    "record_type": "salesforce_linkedin_paid_lead_handoff",
    "fictional_fixture": false,
    "scope": {
      "linkedin_ad_account_id": "Unknown",
      "linkedin_page_id": "Unknown",
      "linkedin_form_id": "Unknown",
      "linkedin_response_id": "Unknown",
      "salesforce_environment": "Unknown",
      "salesforce_org_reference": "Unknown",
      "campaign_id": "Unknown",
      "cutoff": {
        "start": "Unknown",
        "end": "Unknown",
        "timezone": "Unknown",
        "receipt_deadline": "Unknown",
        "lag_rule_reference": "Unknown"
      }
    },
    "route": {
      "name": "Unknown",
      "support_state": "Unknown",
      "support_reference": "Unknown",
      "connector_plan": "Unknown",
      "observed_authorization": "Unknown"
    },
    "permissions": {
      "linkedin_ad_account_role": "Unknown",
      "linkedin_page_role": "Unknown",
      "business_manager_alignment": "Unknown",
      "salesforce_access": "Unknown",
      "observed_at": "Unknown"
    },
    "person_policy": {
      "match_keys": [],
      "no_match_action": "Unknown",
      "single_contact_action": "Unknown",
      "multiple_match_action": "Unknown",
      "retry_key": "linkedin_response_id",
      "single_lead_action": "Unknown",
      "contact_and_lead_action": "Unknown",
      "same_response_action": "Unknown",
      "new_response_action": "Unknown"
    },
    "field_map": [],
    "receipts": {
      "source_response": {
        "state": "Unknown",
        "linkedin_response_id": "Unknown",
        "test_lead": "Unknown",
        "observed_at": "Unknown",
        "evidence_reference": "Unknown"
      },
      "connector": {
        "state": "Unknown",
        "run_id": "Unknown",
        "linkedin_response_id": "Unknown",
        "salesforce_environment": "Unknown",
        "action": "Unknown",
        "observed_at": "Unknown",
        "error": "Unknown"
      },
      "field_validation": {
        "state": "Unknown",
        "field": "Unknown",
        "detail": "Unknown",
        "observed_at": "Unknown",
        "read_back": []
      },
      "person": {
        "state": "Unknown",
        "object_type": "Unknown",
        "person_id": "Unknown",
        "linkedin_response_id": "Unknown",
        "operation": "Unknown",
        "observed_at": "Unknown"
      },
      "campaign_member": {
        "state": "Unknown",
        "campaign_member_id": "Unknown",
        "campaign_id": "Unknown",
        "person_id": "Unknown",
        "member_status": "Unknown",
        "observed_at": "Unknown",
        "evidence_reference": "Unknown"
      },
      "owner": {
        "state": "Unknown",
        "owner_id": "Unknown",
        "person_id": "Unknown",
        "assignment_rule": "Unknown",
        "observed_at": "Unknown",
        "evidence_reference": "Unknown"
      }
    },
    "populations": {
      "source_responses": "Unknown",
      "accepted_new_lead": "Unknown",
      "accepted_existing_contact": "Unknown",
      "rejected": "Unknown",
      "duplicate_retry_attempts": "Unknown",
      "unresolved": "Unknown",
      "campaign_members": "Unknown",
      "owned_people": "Unknown",
      "accepted_existing_lead": "Unknown",
      "distinct_people": "Unknown"
    },
    "next_action": {
      "owner": "Unknown",
      "request_id": "Unknown",
      "request": "Unknown"
    },
    "notes": [],
    "expectations": {
      "member_status": "Unknown",
      "owner_id": "Unknown",
      "assignment_rule": "Unknown",
      "approval_reference": "Unknown",
      "member_evidence_reference": "Unknown",
      "owner_evidence_reference": "Unknown",
      "approval_state": "Unknown"
    }
  },
  "transport_rule": "Copy or download this complete JSON object. Prompt text without contract, sources, record schema, stable IDs, output contract, invocations and fixtures is incomplete."
}
Download exact reviewer packageComplete JSON · works without this article

The downloadable kit includes:

  • a blank JSON and readable Markdown record;
  • a completed fictional record;
  • a focused evidence-request handoff;
  • a Python checker and browser checker;
  • portable build and review prompts with complete, missing and contradictory fixtures.

Open the blank record and fill in the exact LinkedIn source, route, Salesforce environment, person policy, field map, Campaign and ownership policy. Import the completed record to see the expected structure. Run the checker, then compare its result with the approved policies and dated read-backs before anyone calls the handoff verified.

The prompt package works outside this page. It requires the source contract, evidence rules, invocation examples and fixtures instead of assuming the agent can read Maestro's article.

The checker can catch some missing or contradictory fields in a supplied record. A pass alone does not prove that the approved match/retry rules, mappings, member status, owner expectation and timing were enforced. Check those against their separate approval references and current receipts. The tool cannot sign in to LinkedIn, Zapier, LeadsBridge or Salesforce, or turn documentation into a native receipt.

Common questions

Can I use a native Salesforce connection?

Maybe, but this review could not verify the current first-party setup article content. Confirm the current Salesforce Help path, edition, environment and permissions inside authorized documentation before choosing it. Do not rely on an agency article alone.

Should every LinkedIn response become a Lead?

No. An existing eligible Contact or Lead may be the correct destination. Decide the search, match, update and Lead/Contact conflict rules first. If both object types or several records match, hold the response for review unless an approved precedence rule says otherwise.

Does adding someone to a Salesforce Campaign prove the Lead or Contact was created correctly?

No. Campaign membership relates an existing Lead or Contact to a Campaign. Verify the person object and Campaign Member separately.

Does “Use Assignment Rules” prove the correct owner was assigned?

No. It proves a setting was selected. Read back the resulting owner or queue and compare it with the approved policy.

What if the connector succeeded but Salesforce has no record?

Check the connector destination environment, Salesforce action, required-field result and person-resolution receipt in that order. Do not send another LinkedIn response until the first one has a terminal explanation.

Can I mix test and live responses in one audit?

Do not. LinkedIn identifies test leads in its download. Keep test and live cohorts separate, with one cutoff and one declared unit.

Is this the same as LinkedIn Sales Navigator for Salesforce?

No. Salesforce's broad LinkedIn integration page centers Sales Navigator and sales activity. This guide covers paid Lead Gen Form responses entering Salesforce. It does not cover prospecting sync, outbound Matched Audiences, Marketing Cloud, revenue attribution or offline conversion transmission.

What does a passed local checker prove?

It reports the checks implemented in that checker for the supplied record. Manually compare the declared policies, field read-backs, current receipt times and observed member/owner values before accepting the handoff. A local pass does not prove that an account is connected, a response was delivered or a salesperson followed up.

Finish with a reviewable handoff

Give the next operator:

  • the completed readable record;
  • the exact source response IDs and controlled receipt references;
  • the first broken state, if any;
  • one named owner for the next action;
  • the exact evidence request;
  • the checker result and cutoff.

Do not give them a screenshot dump and the instruction to “check Salesforce.”

If the person, membership and owner receipts all pass but the wider campaign still produces weak outcomes, move to the LinkedIn Ads audit. That is a different task from proving this handoff.

Open full-size image