Event Lead Sync Forms

Warning

Deprecation Notice
The Event Lead Sync APIs have been deprecated and will reach end of life at the end of July, 2024. New integrations should use the new Lead Sync APIs

Warning

Deprecation Notice
The Marketing Version 202310 (Marketing October 2023) and earlier versions (excluding 202306 and 202307) have been sunset. Additionally, the unversioned APIs will be sunset soon. We recommend that you migrate to the versioned APIs as well as migrate to the new Content and Community Management APIs to avoid disruptions. See the Migration page for more details. If you haven’t yet migrated and have questions, submit a request on the LinkedIn Developer Support Portal.

LinkedIn Events support the attachment of LinkedIn Lead Sync Forms to collects leads of those attending an event. This page documents the APIs required to build an Events Lead Sync integration. Permissioning and APIs for ingesting event leads are not the same as ad leads. Developers supporting ad leads will need to build a different integration to support event leads. Review the Event Lead Sync Forms Integration Requirements and the Events API for more information.

The following APIs are designed to support Lead Sync Forms on Events end to end.

  • leadSyncForms - Get or find Lead Sync Forms that will appear on LinkedIn.
  • leadGenFormQuestions - Fetch individual Lead Sync Form questions.
  • eventFormResponses - Fetch response data of Lead Sync Forms.
  • leadGenFormLegalInfo - Get the legal disclaimer and consents of the Lead Sync Form shown to viewer

Note

All API requests are represented in protocol 2.0.0 and require the header X-Restli-Protocol-Version: 2.0.0.

Permissions

Lead Sync is a separate program than the LinkedIn Marketing API Program. Access to the LinkedIn Marketing API Program does not automatically grant access to these APIs. Developers must apply separately to be considered for Lead Sync APIs.

Permission Description Endpoints
r_events_leadgen_automation Retrieve organization’s events and leads associated with those events.
  • leadGenForms
  • leadGenFormQuestions
  • eventFormResponses

Lead Sync Forms

Lead Sync Forms are used to request data from members responding to the Lead Sync Form. Lead Sync Forms can include multiple questions, hidden fields, and custom consent checkboxes. Many of these components are structured as sub-objects of the Lead Sync Form. In the next section, schemas of the parent and sub-objects are defined.

Lead Sync Form Schema

Field Type Description
content DisplayContent Content of the Lead Sync Form which will be displayed to the viewer.
created.time Long Creation time.
creationLocale Locale Locale of the entity. This will be the preferred locale for the localizable fields in the entities.
deleted.time Long Deletion time.
hiddenFields HiddenField[] Hidden fields used by the owner to track key attributes of the form that generated the lead. This field can be empty if the owner chooses to not append any tracking attributes to the LeadGenForm.
id long Numerical identifier for the form.
lastModified.time Long Last modified time.
name string Name of the Lead Sync Form provided by the owner.
owner LeadGenOwner URN that identifies the owner of the Lead Sync Form.
state LeadGenLifecycleState Information about the current state of the Lead Sync Form.
versionId int The version id of the form. This is a derived field and is generated on server side. The new version will be generated if the LifecycleState is not DRAFT or ARCHIVED. Clients can not assign a versionId.
versionTag String The number of times the form has been modified.

DisplayContent Sub-Object

DisplayContent is a leadGenForm sub-object which represents the form content to be shown to the viewers for collecting responses.

Field Type Description
description Optional MultiLocaleString Description of the form. Optional since the owner may choose to not have this information.
headline MultiLocaleString Headline of the form.
legalInfo LeadGenFormLegalInfoUrn Legal information displayed alongside the Lead Sync Form.
postSubmissionInfo optional PostSubmissionInfo Information displayed to the user after submitting the form (e.g. thank you message, etc.). Optional since not all lead generation use cases require a post submission experience.
questions LeadGenFormQuestionUrn[] Questions to request information from the viewer. Atleast one question should be present.

hiddenFields Sub-Object

hiddenFields is a sub-object of leadGenForm that is structured as an array of hidden fields. Hidden fields are not displayed on the form, but can be used by advertisers for tracking purposes.

The maximum number of hidden fields is 20.

Field Type Description
name string The name of the hidden field.
value string The content of the hidden field.

LeadGenLifecycleState Sub-Object

LeadGenLifecycleState is an enum sub-object of leadGenForm that indicate the lifecycle stage of a Lead Sync form.

Enum
Symbol Description
DRAFT The form is still being edited.
PROCESSING The form is undergoing processing (e.g. review) and is not published.
PUBLISHED The form is published, i.e. it has gone through processing (e.g. manual review) and is ready to be used.
ARCHIVED The form is archived.

Get Lead Sync Forms

Lead Sync Forms can be fetched 3 different ways.

  1. Find forms by owner
  2. Get an individual form
  3. Get a Lead Sync Form of a specific version

Find Forms by Owner

This endpoint returns all forms that belong to a specified Owner. This endpoint requires q=owner and a organization or sponsoredAccount URN in the owner parameter. The API requires Restli 2.0 header and URL encoding of URNs in the URL.

Since an owner can have a large volume of Lead Sync Forms, this API supports pagination using the count and start parameters.

Parameters

Parameter Type Description
q String You must always set this to owner. It indicates that you're querying based on owner, and it's the only FINDER type currently available for Lead Sync Forms.
owner SponsoredAccountUrn/OrganizationUrn URN identifying the owner of the Lead Sync Form. This is the advertiser account or organization.
count Number How many results to display on each page.
start Number The index of the form to begin your result page at. Indexes start at 0. Default is 0.

Sample Request

GET https://api.linkedin.com/rest/leadGenForms?owner=(organization:urn%3Ali%3Aorganization%3A5509810)&q=owner&count=1&start=0
GET https://api.linkedin.com/v2/leadGenForms?owner=(organization:urn%3Ali%3Aorganization%3A5509810)&q=owner&count=1&start=0

Sample Response

{
    "elements": [
        {
            "owner": {
                "organization": "urn:li:organization:5509810"
            },
            "hiddenFields": [
                {
                    "name": "Entity name",
                    "value": "WOW"
                }
            ],
            "versionId": 1,
            "created": {
                "time": 1614831481070
            },
            "creationLocale": {
                "country": "US",
                "language": "en"
            },
            "name": "Lead Sync form for WOW",
            "lastModified": {
                "time": 1614831481070
            },
            "state": "PUBLISHED",
            "id": 6773094140390494208,
            "content": {
                "questions": [
                    "urn:li:leadGenFormQuestion:10548",
                    "urn:li:leadGenFormQuestion:10540",
                    "urn:li:leadGenFormQuestion:9244",
                    "urn:li:leadGenFormQuestion:9252",
                    "urn:li:leadGenFormQuestion:9236"
                ],
                "description": {
                    "localized": {
                        "en_US": "Share your information below with Mario Kart 8 Deluxe to be contacted with more information about WOW"
                    }
                },
                "headline": {
                    "localized": {
                        "en_US": "Contact Mario Kart 8 Deluxe about WOW"
                    }
                },
                "legalInfo": "urn:li:leadGenFormLegalInfo:10516"
            }
        }
    ],
    "paging": {
        "start": 0,
        "count": 1,
        "links": [
            {
                "type": "application/json",
                "rel": "next",
                "href": "/v2/leadGenForms?owner=(organization:urn%3Ali%3Aorganization%3A5509810)&q=owner&count=1&start=1"
            }]
    },
}

Get A Lead Sync Form

Individual Lead Sync Forms can be requested using the endpoint below that only requires Lead Sync Form ID.

Sample Request

GET https://api.linkedin.com/v2/leadGenForms/6755260984438374400

Sample Response

{
    "owner": {
        "organization": "urn:li:organization:5509810"
    },
    "hiddenFields": [
        {
            "name": "Entity name",
            "value": "Nimbus 2000"
        }
    ],
    "versionId": 1,
    "created": {
        "time": 1610579725356
    },
    "creationLocale": {
        "country": "US",
        "language": "en"
    },
    "name": "Lead Sync form for Nimbus 2000",
    "lastModified": {
        "time": 1610579725356
    },
    "state": "PUBLISHED",
    "id": 6755260984438374400,
    "content": {
        "questions": [
            "urn:li:leadGenFormQuestion:10548",
            "urn:li:leadGenFormQuestion:10540",
            "urn:li:leadGenFormQuestion:9244",
            "urn:li:leadGenFormQuestion:9252",
            "urn:li:leadGenFormQuestion:9236"
        ],
        "description": {
            "localized": {
                "en_US": "Share your information below with {localized={en_US=Mario Kart 8 Deluxe, es_ES=Mario Coche 8 Deluxe}, preferredLocale={country=US, language=en}} to be contacted with more information about Nimbus 2000"
            }
        },
        "headline": {
            "localized": {
                "en_US": "Contact {localized={en_US=Mario Kart 8 Deluxe, es_ES=Mario Coche 8 Deluxe}, preferredLocale={country=US, language=en}} about Nimbus 2000"
            }
        },
        "legalInfo": "urn:li:leadGenFormLegalInfo:5604"
    }
}

Get A Lead Sync Form Of A Specific Version

Individual Lead Sync Forms can be requested using the endpoint below that only requires Lead Sync Form ID and version number.

Sample Request

GET https://api.linkedin.com/rest/leadGenForms/6755260984438374400/leadGenFormVersions/1
GET https://api.linkedin.com/v2/leadGenForms/6755260984438374400/leadGenFormVersions/1

Sample Response

{
    "owner": {
        "organization": "urn:li:organization:5509810"
    },
    "hiddenFields": [
        {
            "name": "Entity name",
            "value": "Nimbus 2000"
        }
    ],
    "versionId": 1,
    "created": {
        "time": 1610579725356
    },
    "creationLocale": {
        "country": "US",
        "language": "en"
    },
    "name": "Lead Sync form for Nimbus 2000",
    "lastModified": {
        "time": 1610579725356
    },
    "state": "PUBLISHED",
    "id": 6755260984438374400,
    "content": {
        "questions": [
            "urn:li:leadGenFormQuestion:10548",
            "urn:li:leadGenFormQuestion:10540",
            "urn:li:leadGenFormQuestion:9244",
            "urn:li:leadGenFormQuestion:9252",
            "urn:li:leadGenFormQuestion:9236"
        ],
        "description": {
            "localized": {
                "en_US": "Share your information below with {localized={en_US=Mario Kart 8 Deluxe, es_ES=Mario Coche 8 Deluxe}, preferredLocale={country=US, language=en}} to be contacted with more information about Nimbus 2000"
            }
        },
        "headline": {
            "localized": {
                "en_US": "Contact {localized={en_US=Mario Kart 8 Deluxe, es_ES=Mario Coche 8 Deluxe}, preferredLocale={country=US, language=en}} about Nimbus 2000"
            }
        },
        "legalInfo": "urn:li:leadGenFormLegalInfo:5604"
    }
}

Get Lead Sync Form Questions

The Lead Sync Form Questions API provides details on individual Lead Sync questions. These can be fetched individually or as a batch request.

Get Questions Of A Single Lead Sync Form

The questions of an individual Lead Sync Form can be requested by using Lead Sync form id.

Sample Request

GET https://api.linkedin.com/rest/leadGenFormQuestions/920
GET https://api.linkedin.com/v2/leadGenFormQuestions/920

Sample Response

{
    "owner": {
        "organization": "urn:li:organization:1111"
    },
    "textPrompt": {
        "localized": {
            "en_US": "This is a test"
        }
    },
    "question": {
        "localized": {
            "en_US": "This is a test"
        }
    },
    "responseEditable": false,
    "created": {
        "time": 1594933049259
    },
    "creationLocale": {
        "country": "US",
        "language": "en"
    },
    "name": "Wassup!",
    "questionDetails": {
        "com.linkedin.leadgenform.TextQuestionDetails": {
            "defaultResponse": "random",
            "maxResponseLength": 50
        }
    },
    "predefinedField": "EMAIL",
    "lastModified": {
        "time": 1594933049259
    },
    "id": 920,
    "responseRequired": true
}

Fetch Questions Of Multiple Lead Sync Forms

Questions of multiple Lead Sync forms can be requested by passing a list of Lead Sync form ids with ids parameter. The API requires Restli 2.0 header.

Sample Request

GET https://api.linkedin.com/rest/leadGenFormQuestions?ids=List(920,6404)
GET https://api.linkedin.com/v2/leadGenFormQuestions?ids=List(920,6404)

Sample Response

{
    "results": {
        "6404": {
            "owner": {
                "organization": "urn:li:organization:5645768"
            },
            "question": {
                "localized": {
                    "en_US": "First Name"
                }
            },
            "responseEditable": false,
            "created": {
                "time": 1605783789583
            },
            "creationLocale": {
                "country": "US",
                "language": "en"
            },
            "name": "firstName",
            "questionDetails": {
                "com.linkedin.leadgenform.TextQuestionDetails": {
                    "maxResponseLength": 300
                }
            },
            "predefinedField": "FIRST_NAME",
            "lastModified": {
                "time": 1605783789583
            },
            "id": 6404,
            "responseRequired": true
        },
        "920": {
            "owner": {
                "organization": "urn:li:organization:1111"
            },
            "textPrompt": {
                "localized": {
                    "en_US": "This is a test"
                }
            },
            "question": {
                "localized": {
                    "en_US": "This is a test"
                }
            },
            "responseEditable": false,
            "created": {
                "time": 1594933049259
            },
            "creationLocale": {
                "country": "US",
                "language": "en"
            },
            "name": "Wassup!",
            "questionDetails": {
                "com.linkedin.leadgenform.TextQuestionDetails": {
                    "defaultResponse": "random",
                    "maxResponseLength": 50
                }
            },
            "predefinedField": "EMAIL",
            "lastModified": {
                "time": 1594933049259
            },
            "id": 920,
            "responseRequired": true
        }
    },
    "statuses": {},
    "errors": {}
}

Get Event Lead Sync Form Responses

The Lead Sync Form Responses API returns the response data for leads that filled out a Lead Sync form. Collecting Event Lead Sync Form Responses requires the viewer is the owner of the Lead Sync form.

Lead Sync Form Response Schema

Field Type Description
associatedEntity optional Union of SponsoredCreativeUrn , com.linkedin.common.OrganizationUrn , EventUrn , StandardizedProductUrn URN identifying which entity the lead is associated with. This field is optional for test leads and other use cases where leads don't have any associatedEntity.
form VersionedLeadGenFormUrn URN identifying which form this response responds to.
formResponse FormResponse Answers provided by the submitter.
id string Unique id to identify the LeadGenFormResponse. The id contains information about colo id and unique identifier id.
leadMetadata optional Union of SponsoredLeadMetadata Metadata of a lead. These fields are optional since they may only be relevant for certain use cases, e.g, campaign for sponsored leads.
leadType LeadType Type of the lead representing the origination of the lead.
owner LeadGenFormResponseOwner Entity that owns this LeadGenFormResponse.
responseId TrackingId The unique identifier for the form response generated in the front-end when a submitter submits the response.
submittedAt Time Timestamp recording when the form response was submitted.
submitter MemberUrn URN identifying which member submitted this LeadGenFormResponse.
testLead boolean, default=false Whether this is a test lead created for testing purpose.

Find Event Form Responses by Owner

Response can be retrieved for a specified owner. This endpoint takes in 2 required parameters: q=owner and owner={OrganizationUrn or SponsoredAccountUrn}. This API requires Restli 2.0 header and URL encoding URNs in URL.

Parameters

Parameter Type Description
q String You must always set this to owner. It indicates that you're querying based on owner.
owner LeadGenFormResponseOwner Required urn indicating the LeadGenFormResponseOwner of the LeadGenFormResponse, e.g. OrganizationUrn or SponsoredAccountUrn.
associatedEntity optional Urn Optional urn indicating which entity the lead is associated with, e.g. SponsoredCreativeUrn or OrganizationUrn. If specified, return the corresponding LeadGenFormResponses associated with the associatedEntity, otherwise return all results not applying this filter.
leadType LeadType Indicates LeadType used to filter LeadGenFormResponses.
limitedToTestLeads boolean(default=false) If true, only return the test leads matching the filtering criteria. Clients could use this filter to only retrieve test leads for the purpose of testing the functionality of LeadGenForm. By default the value is false and will return all the leads matching the filtering criteria.
submittedAtTimeRange optional TimeRange Optional field indicating the lead submitted time range filter. If specified, return the corresponding LeadGenFormResponses for the time range, otherwise return all results not applying this filter.
versionedLeadGenFormUrn optional VersionedLeadGenFormUrn Optional field indicating the specific form and version to retrieve the LeadGenFormResponse. If specified, return the corresponding LeadGenFormResponses for the versionedLeadGenFormUrn, otherwise return all results not applying this filter.

Sample Request

GET https://api.linkedin.com/rest/eventFormResponses?owner=(organization:urn%3Ali%3Aorganization%3A5521643)&q=owner
GET https://api.linkedin.com/v2/eventFormResponses?owner=(organization:urn%3Ali%3Aorganization%3A5521643)&q=owner

Sample Response

{
    "paging": {
        "start": 0,
        "count": 10,
        "links": [],
        "total": 128
    },
    "elements": [
        {
            "owner": {
                "organization": "urn:li:organization:5521643"
            },
            "submitter": "urn:li:person:eCO_JFeEQ3",
            "form": "urn:li:versionedLeadGenForm:(urn:li:leadGenForm:513,23)",
            "leadType": "EVENT",
            "leadMetadata": {
                "com.linkedin.leadgenform.SponsoredLeadMetadata": {
                    "campaign": "urn:li:sponsoredCampaign:123"
                }
            },
            "id": "7c8da715-1778-4775-b591-74dd2637a253-5",
            "submittedAt": 1598481566354,
            "responseId": "±÷ñô\x05ñL.±?\x91öb-IK",
            "formResponse": {
                "consentResponses": [
                    {
                        "consent": "urn:li:leadGenFormConsent:(urn:li:leadGenFormLegalInfo:321,4)",
                        "accepted": true
                    }
                ],
                "answers": [
                    {
                        "question": "urn:li:leadGenFormQuestion:1",
                        "answerDetails": {
                            "com.linkedin.leadgenform.TextQuestionAnswer": {
                                "answer": "Hello World-testing purpose"
                            }
                        }
                    },
                    {
                        "question": "urn:li:leadGenFormQuestion:2",
                        "answerDetails": {
                            "com.linkedin.leadgenform.MultipleChoiceAnswer": {
                                "options": [
                                    1,
                                    3
                                ]
                            }
                        }
                    }
                ]
            },
            "testLead": false,
            "associatedEntity": {
                "associatedCreative": "urn:li:sponsoredCreative:100"
            }
        },
    ]
}

Get Event Form Responses by Time Range

Sample Request

GET https://api.linkedin.com/rest/eventFormResponses?q=owner&owner=(organization:urn%3Ali%3Aorganization%3A1234123)&submittedAtTimeRange.start=123&submittedAtTimeRange=456&versionedLeadGenFormUrn=urn%3Ali%3AversionedLeadGenForm%3A%28urn%3Ali%3AleadGenForm%3A987654321%2C1%29&projection=(paging,elements*(id,owner,associatedEntity,leadType,submittedAt,testLead,form~(hiddenFields),formResponse(consentResponses,answers*(question~(name),answerDetails))))
GET https://api.linkedin.com/v2/eventFormResponses?q=owner&owner=(organization:urn%3Ali%3Aorganization%3A1234123)&submittedAtTimeRange.start=123&submittedAtTimeRange=456&versionedLeadGenFormUrn=urn%3Ali%3AversionedLeadGenForm%3A%28urn%3Ali%3AleadGenForm%3A987654321%2C1%29&projection=(paging,elements*(id,owner,associatedEntity,leadType,submittedAt,testLead,form~(hiddenFields),formResponse(consentResponses,answers*(question~(name),answerDetails))))

Sample Response


{
    "elements": [{
        "id": "19b5348a-f045-48bd-a1f5-990913b41b94-5",
        "owner": {
            "organization": "urn:li:organization:5521643"
        },
        "associatedEntity": {
            "standardizedProduct": "urn:li:standardizedProduct:10223"
        },
        "form": "urn:li:versionedLeadGenForm:(urn:li:leadGenForm:818,1)",
        "leadType": "EVENT",
        "submittedAt": 200,
        "testLead": false,
        "formResponse": {
            "answers": [{
                    "answerDetails": {
                        "com.linkedin.leadgenform.TextQuestionAnswer": {
                            "answer": "First Name"
                        }
                    },
                    "question": "urn:li:leadGenFormQuestion:123",
                    "question~": {
                        "name": "firstName"
                    }
                },
                {
                    "answerDetails": {
                        "com.linkedin.leadgenform.TextQuestionAnswer": {
                            "answer": "Last Name"
                        }
                    },
                    "question": "urn:li:leadGenFormQuestion:345",
                    "question~": {
                        "name": "lastName"
                    }
                }
            ],
            "consentResponses": [{
                "consent": "urn:li:leadGenFormConsent:(urn:li:leadGenFormLegalInfo:321,4)",
                "accepted": true
            }]
        },
        "form~": {
           "hiddenFields": [{
                    "name": "myHiddenField1",
                    "value": "LSNR-1234-LI-MKTG"
                 },
                 {
                    "name": "myHiddenField2",
                    "value": "LSNR-4567-LI-MKTG"
                 }
            ]
        }
    }],
    "paging": {
        "count": 10,
        "links": [],
        "start": 0
    }
}

Get Multiple Event Lead Sync Form Responses

If you already know the IDs of multiple Lead Sync Forms you wish to fetch response, you can fetch the response by using ids parameter. The API requires Restli 2.0 header.

The maximum number of permitted ids is 1000.

Sample Request

GET https://api.linkedin.com/rest/eventFormResponses?ids=List("130169ef-1e17-4440-8500-48a36889c105-5","fc839480-f6af-40f9-b158-75540a73625e-5")&owner=(organization:urn%3Ali%3Aorganization%3A5521643)
GET https://api.linkedin.com/v2/eventFormResponses?ids=List("130169ef-1e17-4440-8500-48a36889c105-5","fc839480-f6af-40f9-b158-75540a73625e-5")&owner=(organization:urn%3Ali%3Aorganization%3A5521643)

Sample Response

{
    "results": {
        "fc839480-f6af-40f9-b158-75540a73625e-5": {
            "owner": {
                "organization": "urn:li:organization:5521643"
            },
            "submitter": "urn:li:person:Wh0cGzYUpS",
            "form": "urn:li:versionedLeadGenForm:(urn:li:leadGenForm:316,11)",
            "leadType": "EVENT",
            "leadMetadata": {
                "com.linkedin.leadgenform.SponsoredLeadMetadata": {
                    "campaign": "urn:li:sponsoredCampaign:1234334"
                }
            },
            "id": "fc839480-f6af-40f9-b158-75540a73625e-5",
            "submittedAt": 1598481566354,
            "responseId": "±÷ñô\x05ñL.±?\x91öb-IK",
            "formResponse": {
                "consentResponses": [
                    {
                        "consent": "urn:li:leadGenFormConsent:(urn:li:leadGenFormLegalInfo:321,4)",
                        "accepted": true
                    }
                ],
                "answers": [
                    {
                        "question": "urn:li:leadGenFormQuestion:1",
                        "answerDetails": {
                            "com.linkedin.leadgenform.TextQuestionAnswer": {
                                "answer": "Hello World-testing purpose"
                            }
                        }
                    },
                    {
                        "question": "urn:li:leadGenFormQuestion:2",
                        "answerDetails": {
                            "com.linkedin.leadgenform.MultipleChoiceAnswer": {
                                "options": [
                                    1,
                                    3
                                ]
                            }
                        }
                    }
                ]
            },
            "testLead": false,
            "associatedEntity": {
                "associatedCreative": "urn:li:sponsoredCreative:82682672"
            }
        },
        "130169ef-1e17-4440-8500-48a36889c105-5": {
            "owner": {
                "organization": "urn:li:organization:5521643"
            },
            "submitter": "urn:li:person:VWrY0JAnSb",
            "form": "urn:li:versionedLeadGenForm:(urn:li:leadGenForm:316,11)",
            "leadType": "EVENT",
            "leadMetadata": {
                "com.linkedin.leadgenform.SponsoredLeadMetadata": {
                    "campaign": "urn:li:sponsoredCampaign:1234333"
                }
            },
            "id": "130169ef-1e17-4440-8500-48a36889c105-5",
            "submittedAt": 1598481566354,
            "responseId": "±÷ñô\x05ñL.±?\x91öb-IK",
            "formResponse": {
                "consentResponses": [
                    {
                        "consent": "urn:li:leadGenFormConsent:(urn:li:leadGenFormLegalInfo:321,4)",
                        "accepted": true
                    }
                ],
                "answers": [
                    {
                        "question": "urn:li:leadGenFormQuestion:1",
                        "answerDetails": {
                            "com.linkedin.leadgenform.TextQuestionAnswer": {
                                "answer": "Hello World-testing purpose"
                            }
                        }
                    },
                    {
                        "question": "urn:li:leadGenFormQuestion:2",
                        "answerDetails": {
                            "com.linkedin.leadgenform.MultipleChoiceAnswer": {
                                "options": [
                                    1,
                                    3
                                ]
                            }
                        }
                    }
                ]
            },
            "testLead": false,
            "associatedEntity": {
                "associatedCreative": "urn:li:sponsoredCreative:82682671"
            }
        }
    },
    "statuses": {},
    "errors": {}
}

The legal information of a Lead Sync form can be fetched with the id of the Lead Sync form.

Sample Request

GET https://api.linkedin.com/rest/leadGenFormLegalInfo/4
GET https://api.linkedin.com/v2/leadGenFormLegalInfo/4

Sample Response

{
    "owner": {
        "organization": "urn:li:organization:1111"
    },
    "created": {
        "time": 1594933148752
    },
    "creationLocale": {
        "country": "US",
        "language": "en"
    },
    "consents": [
        {
            "consent": {
                "localized": {
                    "en_US": "this is a consent 1"
                }
            },
            "checkRequired": true,
            "id": 1
        },
        {
            "consent": {
                "localized": {
                    "en_US": "this is a consent 2"
                }
            },
            "checkRequired": false,
            "id": 2
        }
    ],
    "id": 4,
    "lastModified": {
        "time": 1588835964
    },
    "privacyPolicyUrl": "http://www.linkedin.com/privacy",
    "legalDisclaimer": {
        "localized": {
            "en_US": "this is a legalDisclaimer"
        }
    }
}

The consent of a Lead Sync form can be fetched with the id of the Lead Sync form and the id of the consent.

Sample Request

GET https://api.linkedin.com/rest/leadGenFormLegalInfo/4/leadGenFormConsents/1
GET https://api.linkedin.com/v2/leadGenFormLegalInfo/4/leadGenFormConsents/1

Sample Response

{
    "consent": {
        "localized": {
            "en_US": "this is a consent 1"
        }
    },
    "checkRequired": true,
    "id": 1
}

Envisioned End-to-End Flow

Partners are free to build any front-end user experience while offering either a generic LinkedIn Lead Sync connector or creating a separate connector/product for Events Lead Sync. To integrate with the new APIs and related entity APIs, we recommend the following flow:

Step 1: Add r_events_leadgen_automation permission to the OAuth flow

Adding a new permission will require your users to re-auth. Your rollout of this must be planned carefully. We recommend using a development environment app to build out the feature first, getting it certified by LinkedIn, and then deciding on a ramp plan to production.

Step 2: Get user's Organizations

In order to support collecting leads for events hosted on LinkedIn Company Pages(a.k.a. organizations), a partner app needs to build a UX where a user is able to select the organizations, events, and forms to collect leads for. In this step, you'll retrieve a list of all the organizations that the logged in user is an Admin of. Additional information on this API is available on the Organization Access Control page.

Step 3: Get user's Events for all their Organizations

This step helps narrow down the organizations which are hosting online events and for which leads can be collected. Refer to the Events API page for samples of this API.

Step 4: Get Lead Sync Form tied to user's Events

At this point, the user commits to picking the organization and the event they are trying to collect leads for. This step retrieves the form associated with that selected event. Please refer to the sample in Find Forms by Owner.

Step 5: Ask the user to select and map fields

Your app's UI should ask the user to map fields between source(Form tied to the selected event) and destination(which is most likely a CRM table). User should be able to map all possible fields including hidden fields, custom questions and consent texts.

Step 6: Start collecting leads via periodic PULL requests

Once the setup is complete, pull leads at periodic intervals to check for new leads and sync them over to the CRM. The partner app also builds resiliency by adding an option to pull back dated leads (upt o 90 days) by using timeRange parameters in the API calls. Refer to Get Event Lead Sync Form Responses for sample requests.