Salesforce

The Incode x Salesforce integration brings biometric identity verification directly into your Salesforce CRM. Sales and operations teams can trigger an identity verification request from any Contact, Lead, or Account record and receive the results back into that same record — no code, no switching between systems.

The integration is delivered as a Salesforce managed package installed from a provided link. Installation and configuration take under an hour and require no development.

Use cases

  • Verify customer identity before processing high-value transactions
  • Prevent fraud in contract signing and account changes
  • Trigger identity verification from Salesforce Flows or Process Builder when deal stage changes or specific record types are created
  • Store verification results on Contact, Lead, and Account records for audit and compliance

Prerequisites

  1. Salesforce org with admin access (Enterprise, Unlimited, Developer, or Performance edition)
  2. Incode account with API access
  3. Incode Dashboard access to configure a Workflow and register the Salesforce webhook URL

How it works

The integration uses a Lightning Web Component placed on Contact, Lead, or Account record pages. When a Salesforce user clicks Request Verification, the component orchestrates the full verification lifecycle:

  1. Salesforce user opens a record and clicks Request Verification
  2. The integration calls the Incode API to generate a hosted verification URL tied to the Salesforce record ID
  3. Salesforce sends the verification link to the contact's email address automatically, using a built-in email template
  4. The contact completes biometric verification on their device
  5. Incode posts the result to a secure Salesforce webhook endpoint
  6. The Incode Verification record on the Salesforce record updates automatically — status, completion timestamp, and identity score are visible in real-time
  7. The Lightning component polls every 10 seconds while a verification is pending, so Salesforce users see status updates without refreshing the page

Set up Guide

Step 1: Install the managed package

Install the Incode managed package into your Salesforce org using the installation link provided by your Incode account manager. No code is required.

The installer creates:

  • Apex classes for API calls and webhook handling
  • A Lightning Web Component for record pages
  • A custom object, Incode_Verification__c, linked to Contact, Lead, and Account
  • Named Credentials for API authentication
  • A public Salesforce Site that hosts the webhook endpoint
  • A permission set, Incode_User, that grants access to the component and custom object

Step 2: Configure your Incode API key

  1. In Salesforce Setup, navigate to Custom Settings → Incode Config, then click Manage.
  2. Enter the following values:
FieldDescription
API KeyYour Incode API key from Dashboard > API Keys
Configuration IDThe Incode Workflow ID for this integration
Use Production APILeave unchecked to use the demo environment; check to use production
  1. Click Save.
📘

Note

The same managed package works in both demo and production environments. Toggle the Use Production API checkbox to switch — no redeployment required. When switching to Production, update both the API Key in Custom Settings and the password on the IncodeAPI_Production Named Credential, as they are different keys.

Step 3: Activate the webhook site

In Salesforce Setup, navigate to Sites, find the IncodeWebhook site, and click Activate. This exposes the webhook endpoint that receives verification results from Incode.

Assign the Incode_Webhook_Guest permission set to the Site Guest User so the webhook handler can update Incode Verification records.

Step 4: Register the webhook URL in Incode

Copy the webhook URL from your Salesforce Site. It will look like:

https://<your-org>.my.salesforce-sites.com/incode/webhook/services/apexrest/incode/webhook

In the Incode Dashboard, navigate to Configuration > Webhooks and register this URL as the webhook destination for your Workflow.

Step 5: Assign permissions to users

Assign the Incode_User permission set to the Salesforce users who will trigger verifications. This grants access to the Lightning component and the Incode Verification custom object.

Step 6: Add the component to record pages

Using the Lightning App Builder, drag the Incode Verification component onto your Contact, Lead, or Account record pages. Save and activate the page.

Using the integration

Request a verification

On any Contact, Lead, or Account record with the Incode Verification component, enter the contact's email address and click Request Verification. The component:

  • Calls the Incode API to generate a hosted verification URL
  • Creates an Incode Verification record with status Pending
  • Sends the verification link to the contact via email using the Incode_Verification_Request email template

Monitor verification status

The component displays a verification history table showing all verifications initiated from this record, newest first. Status badges update automatically:

StatusMeaning
PendingVerification link sent; contact has not completed the flow
ApprovedVerification completed successfully
DeclinedVerification failed
ErrorAn error occurred during verification — check the Raw Event Type field on the Incode Verification record

The component polls every 10 seconds while any verification is pending and stops polling once all verifications have reached a terminal state.

Automate verification with Flows

You can invoke the integration from Salesforce Flows or Process Builder to automate verification requests. For example, trigger a verification when a Lead's Status changes to Qualified, or when a new Contact is created with a specific record type.

Customizing the email template

The package ships with a default HTML email template called Incode_Verification_Request. It includes:

  • Personalized greeting using the contact's first name
  • Explanation of the verification process
  • A call-to-action button linking to the verification URL

To customize the template, navigate to Salesforce Setup → Email → Classic Email Templates, find Incode_Verification_Request, and edit the subject, body, and branding. The template uses standard Salesforce merge fields so your changes apply to all future verifications without any code changes.

Data model

The integration creates a custom object, Incode_Verification__c, with the following fields:

FieldTypeDescription
Session IDTextIncode interview ID
StatusPicklistPending, Approved, Declined, or Error
Requested DateDateTimeWhen verification was initiated
Completed DateDateTimeWhen the session finished
ScoreNumberIdentity score returned by Incode
Verification URLURLThe hosted verification URL sent to the contact
External ReferenceTextSalesforce record ID that initiated the verification
ContactLookup(Contact)Set when initiated from a Contact
LeadLookup(Lead)Set when initiated from a Lead
AccountLookup(Account)Set when initiated from an Account

Records are automatically linked to the parent Contact, Lead, or Account via the relevant lookup field.

Environment switching

The managed package supports both demo and production Incode environments through a single configuration toggle:

Use_Production_API__cNamed CredentialBase URL
Unchecked (default)IncodeAPIhttps://demo-api.incodesmile.com
CheckedIncodeAPI_Productionhttps://saas-api.incodesmile.com

To switch, update the checkbox in Custom Settings → Incode Config and update both the API_Key__c value and the password on the IncodeAPI_Production Named Credential.

Troubleshooting

Verification record stays Pending after contact completes flow

  • Confirm the webhook URL is registered correctly in the Incode Dashboard and matches your Salesforce Site URL
  • Verify the IncodeWebhook Site is active in Salesforce Setup
  • Check that the Incode_Webhook_Guest permission set is assigned to the Site Guest User
  • Check Incode Verification record's Raw Event Type field to see what event Incode sent

Email not delivered to contact

  • Confirm the contact has a valid email address on their Salesforce record
  • Check Salesforce Setup → Email Deliverability is set to All email
  • Review Email Logs in Setup for bounce messages

Request Verification button has no effect

  • Confirm the Incode_User permission set is assigned to the user
  • Verify the API Key is correctly entered in Custom Settings
  • Check the Use Production API checkbox matches the environment where your API key was issued

Unable to install the package

  • The package requires Enterprise, Unlimited, Developer, or Performance edition
  • Contact your Incode account manager if you need a production installation link — only sandbox links are provided by default