Design your KYC approval flow with Integromat

KYC requires solid control

We’ve already touched upon KYC within a previous post where we intended to share best practices to collect business critical information from your Customers.

But this is not enough as a proper KYC process must rely on a sharp validation flow to assess the quality of information your Customers upload. What if they would update wrong bank details or non-compliant ID?

Now, it’s time to understand how Integromat can help your company follow a strict approval process to guarantee that any KYC document is valid prior to being stored into your CRM.

Start approval flow from your CRM

In order to make it as easy as possible, the approval process shall start from within your CRM (Salesforce or Hubpsot for instance), and ideally in the form of a basic link to click to perform the action.

Do not underestimate the need for over-simplifying any process you can to help internal users as they need to cope with tens of procedures all along the day. In our example below, we made it available in the form of an explicit dynamic link named “Click here to review KYC documents“.

KYC approval link into Salesforce

As depicted in most of our posts, we mostly use Typeform as our preferred interface for collecting information from either customers or internal users.

Thus, when clicking the link, internal users can easily navigate through a really straight forward questionnaire to either approve or discard an uploaded KYC document. We made the decision to ask for additional information in case of rejection so that we could notify customers and ask them to submit a new version.

Typeform approval questionnaire – Quick & easy

Processing approvals and rejections

Once in Integromat, we then need to retrieve KYC document status so that we know whether we can approve or discard them.

The below flow illustrate the practice that we always stick to which consists in separating data collection from the processing for easier maintenance.

As you already know, our HTTP module will call an Integromat webhook which will trigger the next scenario to start processing answers.

Which leads us to the core of our approval processing scenario which is illustrated in the picture below. As you see, we are dealing with some more complexity but overall, this scenario remains quite simple.

Approval processing scenario in Integromat

This scenario comprises 3 different branches as this example aims to deal with 3 types of documents : customer ID, company registration ID and bank details. And we created a flow for each to cope with differences in terms of processing. But for the sake of simplicity, we’ll only focus on the IBAN branch which is more than useful.

Listing all uploaded documents

First step consists in retrieving all documents uploaded by a Customer to date. The idea is to process them based upon :

  • their age (the most recent the one to assess)
  • the decision made by internal user (approved or discarded)

The most practical way to list such documents is to use an SOQL request, which is Salesforce’s querying framework and that is pretty similar to SQL.

The one we use in this context is:

SELECT Id, CreatedDate, Name, description, body, isPrivate, isDeleted, ownerID
FROM Attachment
ParentId = '{{69.value}}'
Name LIKE '{{121.value}}_%'

ParentID points to the Account that we are currently looking at (which is passed from Salesforce to Typeform in the form of an hidden field).

Then we make sure that we only consider pending documents (not yet reviewed) and which contain the “IBAN” tag (thanks to the {{121. value}} Integromat field).

SOQL request in Salesforce to list uploaded documents

Discriminate viable documents from obsolete ones

According to our SOQL request, we order results in a descending way, which means that the most recent document will come first.

It allows us to distinguish the document to be processed from obsolete ones that we instantly discard as illustrated below.

Working with most recent file as others are obsolete

Obsolescence happens through a simple renaming where we modify our _PENDING_ tag with an _OBSOLETE_ one. Therefore, attachments in Salesforce we’ll be easily recognizable by their plain name.

Renaming obsolete documents in Salesforce attachment

Managing approved and discarded KYC documents

Overall, the approach is similar in both cases. But for the sake of maintenance simplicity, it’s always better to design a clean visual scenario to foster fast fixing and/or improvement when required.

Approved and Discarded documents follow the same process in Integromat

As a first step, we are going to rename the document based upon their status. We use the same taxonomy showed above where _PENDING_ shall be replaced by either _APPROVED_ or _DISCARDED_.

But the most important part lies into the Account updating step where we have to capture contextual information to enrich our Salesforce CRM.

In that example, we are approving an IBAN which invites us to stamp a “YES” value into our "kyc_iban_approved__c" custom field.

But we also want to keep track of key timestamps, and especially the ones that relate to both the effective approval date but also the last review date.

Finally, we record the user which processed that flow for this specific document in order to investigate properly when needed.

Documents accessibility to Salesforce users

See below how the “Notes & Attachment” section of a given account would look like after a couple of tests.

As you see, an interal user would have instant access to all uploaded documents, seeing at a glance whether some of them need approval (_PENDING_) or whether they are either discarded (_DISCARDED_) or even obsolete (_OBSOLETE_).

But more importantly, all files are renamed with a specific prefix to immediately understand which type of KYC document has been, or needs to be investigated for final approval (IBAN, REGID or IDCARD).

Lastly, as you see in the picture hereafter, Salesforce keeps track of all sensitive information, thus enabling advanced reporting capabilities for managers, but this is another story. 🙂


We’ve seen how to trigger an approval flow from our CRM (Salesforce) by designing a specific URL pointing to a straight forward Typeform questionnaire.

We’ve stressed the need for separating the data collection scenario from the processing one for easier maintenance and improvements.

We’ve reviewed how to pass information from one scenario on to the other using HTTP calls, webhooks and JSON payloads.

We’ve touched some SOQL query to simplify the way to list items within Salesforce in a quite elegant and effective way.

And we’ve focused on basic but useful taxonomy in order to sort documents into Salesforce so that internal users can immediately gain access to critical information, without any pain.

5 1 vote
Article Rating
Notify of
Inline Feedbacks
View all comments