Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
LinkedIn requires all Talent CRM Connect implementations undergo a certification review. This ensures that our members get the best experience using a LinkedIn partner integration. The technical review and sign off also ensures that there are no gaps in integrations and that partner products keep up with the latest features and updates released by LinkedIn.
As an API partner, please go through the requirements listed below. These are the capabilities that an integrating partner is expected to build in their product. We request you to plan and incorporate these features early in your design. When you are nearing completion, you must initiate a Technical Sign Off request by contacting your LinkedIn POC on the Business Development team.
A demo will be scheduled during which you will be asked to showcase all your product capabilities. During this evaluation, LinkedIn may suggest modifications which will need to be completed for the sign off. If all criteria are met (as per the envisioned scope), the technical sign-off is awarded.
Module 1 - Authentication
Rule | API Requirements | Expected Result |
---|---|---|
CRM-001 | Demonstrate OAuth 2.0 Client Credentials integration. | Can request a token |
CRM-002 | Demonstrate ability to periodically verify that an access token is valid. | Method for evaluation validity of token is understood by LI. |
CRM-003 | Demonstrate ability to detect access token expiry. | Store and check TTL for token at time of request |
CRM-004 | Demonstrate reuse of access token until near expiration. | Tokens will be stored and reused. New token retrieved when close to expiration. |
CRM-005 | Demonstrate ability to retrigger OAuth 2.0 Client Credentials flow in case token has expired or been invalidated. | Handle 401 response codes by requesting a new access token. |
Module 1 - Customer Onboarding
Rule | API Requirements | Expected Result |
---|---|---|
CRM-010 | Demonstrate provisioning a new developer application. | A CRM tenant is provisioned only one developer application. |
CRM-011 | Demonstrate ability to detect an application has already been provisioned for a customer | When an application is detected, a new one is not created. |
CRM-012 | Demonstrate enabling Talent CRM Connect for the first time. | Integration values from Onboarding Plugin’s JS callback are stored for a customer. Requests to /atsIntegrations and /atsIntegrations/configurations properly set integration values. |
CRM-013 | Demonstrate the historical sync of jobs and CRM data is initiated after onboarding. | Historical sync is initiated following customer onboarding via Onboarding Plugin. Customers can understand progress and errors with sync |
CRM-014 | (If RSC is supported) Demonstrate the same application enabling RSC and historical sync kicked off for RSC related data. | RSC can be enabled in conjunction with CRM Connect without issue |
CRM-015 | Demonstrate or explain what initiates the synchronization of jobs/CRM data to LinkedIn. | Mechanism to sync data continuously is described and understood. |
CRM-016 | Demonstrate activating Talent CRM Connect with a second contract that uses the same organization ID. | The second contract is activated successfully. All atsIntegrations are properly recorded, including new CRM_CSA_API integration context which has the new contract value. |
CRM-017 | Demonstrate activating Talent CRM Connect with a second contract that uses a different organization ID. | The second contract is not activated and an error message is displayed that says only one organization ID can be active at a time. |
Module 2 - Create and Manage Jobs
Rule | API Requirements | Expected Result |
---|---|---|
CRM-020 | Demonstrate sync job success by viewing a candidate in a pipeline with associated jobs. | Jobs synced to LI are visible within CRM indicator. |
Module 2 - Sync TCRM Candidates
Rule | API Requirements | Expected Result |
---|---|---|
CRM-030 | Demonstrate a candidate has been synced to LinkedIn as part of historical candidate sync. | When viewing the associated LI member in Recruiter, associated candidate data is present from the CRM in Talent Integrations CRM tab. |
CRM-031 | Demonstrate candidate person URN is associated with candidate in CRM. | Candidate data in CRM is augmented with LI person URN. |
CRM-032 | Demonstrate how LI person URN is used for deduplication within the CRM. | Candidates can be deduplicated using LI person URN if architecturally possible. |
CRM-033 | Demonstrate how updates to a candidate’s record are synced to LinkedIn. | When a candidate is updated, updates are reflected within Recruiter due to resync of data |
CRM-034 | Demonstrate creation of a candidate and subsequent sync to LI. | Candidate data can be found in LI if it matches a LI member. |
CRM-035 | Demonstrate how a candidate synced without required data could be possible and how it would be handled (for example, by submitting a candidate with an improperly formatted email that does not follow x@x.x pattern). | Candidate sync failure is handled and highlighted to the user if architecturally possible. |
CRM-036 | Confirm that all candidate records have been synced to LI as part of historical sync. | Gross number of candidates that exist in the CRM matches the number in LI. |
Module 2 - Sync TCRM Candidate Resumes
Rule | API Requirements | Expected Result |
---|---|---|
CRM-040 | Demonstrate a candidate resume has been synced to LinkedIn as part of historical candidate sync. | When viewing the associated LI member in Recruiter, associated candidate resume data is present from the CRM in Talent Integrations CRM tab. |
CRM-041 | Demonstrate adding a new resume to a candidate and subsequent sync to LI. | When viewing the associated LI member in Recruiter, new associated candidate resume data is present from the CRM in Talent Integrations CRM tab. |
CRM-042 | Confirm that all candidate resume records have been synced to LI as part of historical sync. | Gross number of candidate resumes that exist in the CRM matches the number in LI. |
Module 2 - Sync TCRM Pipelines
Rule | API Requirements | Expected Result |
---|---|---|
CRM-050 | Demonstrate pipelines have been synced to LI as part of historical sync. | When clicking Export to CRM on a candidate in Recruiter, pipeline can be found in the list. |
CRM-051 | Demonstrate adding a new pipeline to the CRM and subsequent sync to LI. | When clicking Export to CRM on a candidate in Recruiter, pipeline can be found in the list. |
CRM-052 | Confirm that all pipeline records have been synced to LI as part of historical sync. | Gross number of pipelines that exist in the CRM matches the number in LI. |
Module 2 - Sync TCRM Pipeline Stages
Rule | API Requirements | Expected Result |
---|---|---|
CRM-060 | Demonstrate pipeline stages have been synced to LI as part of historical sync. | When clicking on a candidate in Recruiter, pipeline and stage are visible for a candidate in the pipeline. |
CRM-061 | Demonstrate adding a new pipeline stage to the CRM and subsequent sync to LI. Update a candidate in the pipeline so it is in the stage. | When clicking on a candidate in Recruiter, pipeline and new stage are visible for the candidate in the pipeline. |
CRM-062 | Demonstrate or explain how stageCategory enum values are determined based on the stage name within the CRM. | Stage names are associated with correct enum values when possible. “OTHER” is used only when absolutely necessary. |
CRM-063 | Confirm that all pipeline stage records have been synced to LI as part of historical sync. | Gross number of pipeline stages that exist in the CRM matches the number in LI. |
Module 2 - Sync TCRM Candidate Pipelines
Note
Candidate pipeline stage history should be sent via the Candidate Pipeline Stage API
Rule | API Requirements | Expected Result |
---|---|---|
CRM-070 | Demonstrate candidate pipeline and stage associations have been synced to LI as part of historical sync. | When clicking on a candidate in Recruiter, pipeline and stage are visible for a candidate in the pipeline. |
CRM-071 | Demonstrate adding a new candidate to a pipeline in the CRM and subsequent sync to LI. | When clicking on a candidate in Recruiter, pipeline and new stage are visible for the candidate in the pipeline. |
CRM-072 | Demonstrate or explain how sourceCategory enum values are determined based on the source name within the CRM. | Source names are associated with correct enum values when possible. “OTHER” is used only when absolutely necessary. |
CRM-073 | Confirm that all candidate pipeline and stage records have been synced to LI as part of historical sync. | Gross number of candidate pipelines and stages that exist in the CRM matches the number in LI. |
Module 2 - Sync TCRM Interactions
Rule | API Requirements | Expected Result |
---|---|---|
CRM-080 | Demonstrate candidate interactions have been synced to LI as part of historical sync. | Pipeline accurately reflected in Recruiter for a given candidate’s interaction. |
CRM-081 | Demonstrate adding a new candidate interaction in the CRM and subsequent sync to LI. | When clicking on a candidate in Recruiter, candidate interaction is visible for the candidate. |
CRM-082 | Demonstrate updating a candidate interaction and subsequent sync to LI. | When clicking on a candidate in Recruiter, candidate interaction is visible for the candidate. |
CRM-083 | Demonstrate or explain how pipelineId is determined by the CRM for a given interaction. | Pipeline determination clearly understood. |
CRM-084 | Confirm that all interaction records have been synced to LI as part of historical sync. | Gross number of interaction records that exist and should be synced from the CRM matches the number in LI. |
Module 3 - One Click Export to CRM
Rule | API Requirements | Expected Result |
---|---|---|
CRM-090 | Demonstrate export of an existing candidate to a pipeline that has never been exported to the CRM. | Candidate is not duplicated in CRM. Candidate details are updated with notes (optional) and associated LinkedIn information. Candidate is identified based on person URN already present in CRM. |
CRM-091 | Demonstrate resync of the updated candidate pipeline back to LI with the associated candidate. | Existing candidate is added to pipeline in the CRM, and the associated relationship is sent to LI and reflected in Talent Integrations tab in Recruiter. Source category for the candidate is set to LINKEDIN. Source category in CRM is visible as "LinkedIn" |
CRM-092 | Demonstrate exporting a new candidate to the CRM. | A new candidate is created in the CRM and associated with the correct pipeline. |
CRM-093 | Demonstrate resyncing the newly created candidate in the CRM back to LI. | Source category for the candidate is set to LINKEDIN for related pipeline. A new candidate is sent to LinkedIn with the manualMatchedMember field populated with the member’s person URN that was exported. The exported Candidates should show up with "source" as "LINKEDIN" in parter system UI. |
CRM-133 | Demonstrate where customers will see or be notified of (and have the option to delete) any LinkedIn member profiles that were deleted from LinkedIn after the customer 1-Click Exported the relevant profile | The list of deleted profiles displayed to the customer matches the list retrieved from LinkedIn. Any profiles deleted by the customer are removed from the CRM |
CRM-134 | Demonstrate usage of 3-legged auth flow to bind CRM users to recruiter seats. | Users are asked to complete the 3-legged OAuth2 flow to link their accounts the first time they use the integration after activation. |
Recommendation: Build a binding experience on top of viewing the profile plugin. | ||
CRM-135 | Demonstrate how InMail history is displayed in the CRM UI, either on the candidate's page or in the message center. | The /conversationEvents API is called every 30 minutes or less to display new InMails. The CRM user linked to a recruiter seat is correctly identified as the sender in conversations with the candidate. |
CRM-136 | Demonstrate how to render the Recommended Matches plugin for a pipeline. | Recommendations load within the plugin, which is designed to fully utilize the available space. The section where the plugin appears is labeled as "LinkedIn Recommended Matches." |
Module 4 - Profile Plugin
Rule | API Requirements | Expected Result |
---|---|---|
CRM-120 | Add a candidate to the CRM that does not match a profile on LinkedIn by inventing a name and email address. In the Profile Plugin, manually link this new candidate to a completed LinkedIn profile | Refresh the page and ensure that the chosen LinkedIn profile is still displayed in the Profile Plugin. Ensure that the candidate records in CRM and LinkedIn are updated with appropriate Person URN |
CRM-121 | Logout of LinkedIn, display the candidate Profile Plugin | Sign In to LinkedIn widget is displayed. Scrolling in the Profile Plugin fits within CRM UI |
CRM-122 | Login to LinkedIn, display the candidate Profile Plugin | Profile Plug is displayed in authenticated mode. Scrolling in the Profile Plugin fits within CRM UI |
Module 5 - Data Deletion
Rule | API Requirements | Expected Result |
---|---|---|
CRM-100 | Demonstrate deletion of a candidate within the CRM system and associated update to LI. | Candidate delete is synced to LinkedIn and reflected in Recruiter. |
CRM-101 | Demonstrate cascading delete caused by candidate deletion within the CRM system . | All the related candidate pipelines, pipeline stages, resumes, and interactions are deleted automatically. |
CRM-102 | Demonstrate deletion of a pipeline within the CRM system and associated update to LI. | Pipeline delete is synced to LinkedIn and reflected in Recruiter. |
CRM-103 | Demonstrate cascading delete caused by candidate pipeline deletion within the CRM system. | All the related candidate pipelines, pipeline stages, and interactions are also deleted automatically. |
CRM-104 | Demonstrate deletion of a pipeline stage within the CRM system and associated update to LI. | Pipeline stage delete is synced to LinkedIn and reflected in Recruiter. |
CRM-105 | Demonstrate cascading delete caused by pipeline stage deletion within the CRM system | Pipeline stage deletes should trigger cascading deletes / updates for associated candidate pipelines in that stage. |
CRM-106 | Demonstrate deletion of a candidate resume within the CRM system and associated update to LI. | Candidate resume delete is synced to LinkedIn and reflected in Recruiter. |
CRM-107 | Demonstrate deletion of an interaction within the CRM system and associated update to LI. | Interaction delete is synced to LinkedIn and reflected in Recruiter. |
CRM-108 | Demonstrate deletion of any candidate pipeline within the CRM system and associated update to LI. | Candidate pipeline delete is synced to LinkedIn and reflected in Recruiter. |
CRM-109 | Demonstrate the deletion of a purged members. | Purged members that customers choose to delete have data retrieve from LI removed from the CRM. |
CRM-162 | Demonstrate deletion of ACL associations to an entity when a pipeline record is transitioned to publicly accessible. | Associated ACL / entity relationships are purged when pipeline record is transitionted to publicly visible. If the ACL is removed as part of this change confirm deletion of the ACL and any referencing entites within LinkedIn. |
CRM-163 | Demonstrate removal of a user from an ACL. | Removal of the ACL list for a user is reflected in Recruiter through verification of no visibility to that ACL's associated pipelines. |
CRM-164 | Demonstrate removal of a user from ACLs stored in LI when the user is deleted from the CRM or marked as inactive. | When a user is deleted, all assignments to ACLs in LI are removed. |
CRM-165 | Demonstrate deletion of an ACL stored in LI when the ACL is deleted from the CRM. | When a ACL is deleted, all assignments to ACLs in LI are removed and all entity / ACL relationships are removed. |
CRM-166 | Demonstrate cascading delete when a candidate pipeline is deleted in the CRM. | All the related records of candidate pipeline stage and interactions are also deleted automatically. |
CRM-167 | Demonstrate deletion of candidate pipeline stage within the CRM system. | The candidate pipeline stage in LinkedIn is also deleted automatically. |
Module 6 - Error Handling
Rule | API Requirements | Expected Result |
---|---|---|
CRM-110 | Demonstrate or explain how a customer re-enables an integration (Talent CRM Connect, RSC, etc.) if it was disabled for enablement or sync issues. | Customers can re-enable integrations as desired. |
CRM-111 | Demonstrate or explain how and when logging is completed for failed requests. | Full request, including URL, headers, and body, and responses logged when failures encountered. Batch requests are logged when there are failures within the request, even if there is a 2xx response code. |
CRM-112 | Demonstrate or explain how and when you retry API requests. | Retry logic is understood. 429s requests are exponentially delayed and retried. Future requests to an endpoint after several (5+) attempts return 429 and are held off until UTC midnight for daily limits to reset. |
CRM-113 | Demonstrate or explain how your support teams can get access to production logging when errors occur. | Customer support teams can access production logs to support customer issues. |
CRM-114 | Demonstrate or explain how customers can understand when API failures occur. | Customers can understand when API failures occur and relevant corrective actions that can be taken to resolve issues. |
CRM-115 | Demonstrate or explain how query tunneling is used when URLs in requests exceed defined limits. | Query tunnelling is utilized when query string exceeds set limits. |
Module 7 - Retrieve Data from LinkedIn (cont'd)
Rule | API Requirements | Expected Result |
---|---|---|
CRM-130 | As a recruiter, send an InMail to a LinkedIn member (1st connection not currently in CRM) on your team from a Recruiter. As a candidate, (recipient of InMail) reply to InMail and share contact email. Display new CRM candidate record | New candidate is created in CRM with contact info shared via Recruiter. Profile information is retrieved from InMail Stub Profiles endpoint. |
CRM-131 | As a recruiter, send an InMail to same LinkedIn member. As a candidate, (recipient of InMail) reply to InMail and share a different contact email and phone number | Candidate record is updated with new contact info in CRM. Profile information is retrieved from InMail Stub Profiles endpoint. |
CRM-132 | Demonstrate or explain how seatholders are consumed within the CRM synchronization process | Seats are ingested. Pagination is used when calling the seatsV2 endpoint. |
Module 8 - Sync CRM ACLs
Rule | API Requirements | Expected Result |
---|---|---|
CRM-155 | Demonstrate and explain how access restrictions are defined for CRM Pipeline records | LI understands access restriction rules and features in the CRM for pipeline records. |
CRM-156 | Demonstrate and explain which how per-user visibility can be defined for CRM Pipeline records | LI understands how the CRM determines users that have access to view a pipeline. |
CRM-157 | Demonstrate and explain which users are in ACL lists/groups. | LI understands how users can be members of ACL lists. |
CRM-158 | Demonstrate that the max number of ACL a user can be assigned to is < 10 | Create and sync multiple records that are access controlled, and multiple users that have access at least one of the records. Confirm that the integration pattern will not produce a ACL membership exceeding the max value. |
CRM-159 | Demonstrate that visibility restrictions on pipelines in the CRM prevent users in Recruiter from viewing inaccessible records. | Sync records that have restricted access. As a user that does not have access in Recruiter, attempt to export a candidate to the pipeline. Confirm that it is not possible. Confirm that a candidate in the pipeline does not list the pipeline membership on the candidate's CRM tab in recruiter if the user does not have access. |
CRM-160 | Demonstrate that visibility restrictions on pipelines in the CRM allow users in Recruiter to view accessible records. | Sync records that have restricted access. As a user that does have access in Recruiter, attempt to export a candidate to the pipeline. Confirm that it is possible. Confirm that a candidate in the pipeline does list the pipeline membership on the candidate's CRM tab in recruiter if the user has access. |
CRM-161 | Demonstrate the modification of pipeline from no visibility restrictions to having visibility restrictions. | After transitioning status in the CRM, changes are reflected in LinkedIn Recruiter. Users with access can still see the pipeline in One CLick Export and candidate membership on the CRM tab. |
Versioning
Rule | API Requirements | Expected Result |
---|---|---|
CRM-140 | Demonstrate or explain what changes will need to take place to facilitate migration to versioned endpoints | Versioning migration path clearly understood by LinkedIn. Switching consumption to versioned endpoints requires minimal development support. |
Compliance Confirmation
Rule | API Requirements | Expected Result |
---|---|---|
CRM-150 | Partner is in compliance with all Terms of Service and partnership agreements. | Partner is not violating partnership agreements or Terms of Service. Any remediation plans defined to resolve violations have been completed. |
CRM-151 | Confirmation of compliance with LinkedIn API Breaking Change policy. | Complying with and understanding the LinkedIn API Breaking Change policy. |