Salesforce Knowledge

Find and display articles from Salesforce Knowledge

Give your website visitors, clients, partners, and service agents the ultimate support tool. Create and manage a knowledge base in Salesforce with your company information, and securely share it when and where it's needed.

With Meya's Salesforce Knowledge integration you can:

  • Search for articles using SOQL queries
  • Find a specific article by ID
  • Filter and sort the results so users see the most relevant information first
  • Trigger a flow when an article is found

Keep reading to learn how to set up the integration.


If you've already set up the Salesforce Cases or Salesforce CRM integrations you can skip ahead to the Find your Knowledge site URL section, since this integration uses mostly the same credentials.

Find your Salesforce instance base URL

Your instance base URL will look like this:


The instance base URL is not necessarily the URL you see in the address bar. The domain in the address bar can be affected by things like a custom My Domain. Keep reading to learn how to find your instance base URL.

To find your instance base URL, open Setup. In the search bar, type company information. Select Company Information from the search results.


Select Company Information.

In the Organization Detail section, find Instance and make a note of the value. It will start with two letters and end with a few numbers.


The Salesforce instance.

Once you have your instance, insert it into the URL like this: Keep this URL handy since you'll be adding it to the vault at a later step.

Create a connected app

A connected app allows external systems to authenticate against, and interact with, your Salesforce instance in a secure way. In this section, you'll create a connected app that your Meya app can use.

In Salesforce, click the gear icon in the top corner, then click Setup. In the search bar, type app manager. Select App Manager from the search results.


Select App Manager.

Click the New Connected App button in the top right corner.


Enter a meaningful name for your app, such as Meya. The API name will fill in automatically once you move to another input.

Add an email to the Contact Email field. You can use your own, a support address, or your Salesforce admin's address.

In the API (Enable OAuth Settings) check the Enable OAuth Settings checkbox. In the list of available OAuth scopes, choose:

  • Access and manage your data (api)
  • Perform requests on your behalf at any time (refresh_token, offline_access)

Leave the other settings as-is. Your page will look something like this:


Click Save to create the app. You'll be redirected to the connected app's detail page.


If you have login IP ranges enabled for your app, you will also need to change the IP Relaxation setting of the connected app to "Relax IP restrictions":


(This settings screen is available via Manage Connected Apps)

Retrieve the client key and secret

In Salesforce, connected apps with OAuth enabled will have a consumer key and consumer secret. These are also sometimes referred to as a client key and client secret.

In the API (Enable OAuth Settings) section of your connected app, copy the Consumer Key and Consumer Secret since you'll need those in a later step.


Find your Knowledge site URL

You likely already know your Knowledge site URL. This is the site where your users can read your knowledge base articles.

You can also find the URL within Salesforce by going to the Setup page, then searching for sites in the top search bar. Select Sites from the search results.

In the Sites section near the bottom of the page, look for your knowledge base site and copy the Site URL.


Update the vault

Now that we have all of our secrets, it's time to add them to your app's vault.

In your app's root folder, open vault.yaml and add this code to the bottom:

salesforce.client_id: xxx
salesforce.client_secret: xxx
salesforce.username: xxx
salesforce.password: xxx
salesforce.knowledge_base_url: xxx


Remember not put actual secrets in vault.yaml, since it's committed to version control. The actual values should go in vault.secret.yaml, as described below, since it is not committed to version control.

Now open vault.secret.yaml and add this code to the bottom:

salesforce.client_id: CLIENT_ID
salesforce.client_secret: CLIENT_SECRET
salesforce.username: USERNAME
salesforce.password: PASSWORD
salesforce.knowledge_base_url: URL

Replace the values to the actual values.


You may want to create a dedicated Salesforce user whose credentials will be used here. Alternatively, you can use the credentials of an existing user as long as they're okay with your developers potentially seeing them (depending on their Meya Team permissions).

Save the files and upload the secrets to your remote vault using this command in your terminal:

meya vault upload --file vault.secret.yaml

Add the integration

Now that your secrets are in the vault, you can reference them in the integration file.

In your app's integration folder, create a subfolder called salesforce. Inside that folder, create a file called salesforce.yaml and copy this code into it:

type: meya.salesforce.knowledge.integration
instance_base_url: (@ vault.salesforce.instance_base_url)
client_id: (@ vault.salesforce.client_id)
client_secret: (@ vault.salesforce.client_secret)
username: (@ vault.salesforce.username)
password: (@ vault.salesforce.password)
knowledge_base_url: (@ vault.salesforce.knowledge_base_url)

Save the file.

Add flows

The Salesforce Cases integration comes with components that allow your app to create a case, update a case, and add a comment to a case. There are also a few non-case-specific components like contact.create and query you can use as well. Let's add some flows to your app to demonstrate how they work.

In your app's flow folder, create a folder called salesforce. Inside, create a file called query.yaml and copy this code into it:

  - keyword: salesforce_knowledge_search_articles

  - ask: Please tell me how can I help you (e.g. Help)?
    regex: ^[a-zA-Z0-9]+$
  - flow_set: search_query

  - type:
    soql_query: (@ flow.search_query)
    article_body_field_name: Summary
    integration: integration.salesforce.knowledge

  - flow_set: search_result

  - if: (@ flow.search_result.articles)
      jump: render
    else: next

  - say: No results found for '(@ flow.search_query)'
  - end

  - (render)
  - type: meya.salesforce.knowledge.component.display
    search_response: (@ flow.search_result.articles)
    integration: integration.salesforce.knowledge

  - ask: Articles for '(@ flow.search_query)'
    button_style: text
    tiles: (@ flow.result)
  - expect: salesforce_knowledge
    integration: integration.salesforce.knowledge
    article_body_field_name: Answer__c

  - type: meya.salesforce.knowledge.component.display
    search_response: (@ flow.salesforce_knowledge_response.articles)
    integration: integration.salesforce.knowledge

  - ask: Articles for '(@ flow.search_query)'
    button_style: text
    tiles: (@ flow.result)

search.yaml:11: You can specify what Knowledge Article field to perform the search on. In this example, we're using the Summary field.

trigger.yaml:4: You can also specify a field to base the search on with the Salesforce Knowledge trigger. In this example, we're using the Answer__c field.

Save the files and upload them to the Grid by running these commands in your terminal:

meya format
meya push

Test it out

We're ready to test the flow!

Open your app's simulator and type salesforce_knowledge_search_articles. Enter a topic you know your knowledge base has an article about. Confirm that at least one article is displayed to the user.


Test out the Knowledge trigger, too, by entering a search term. Make sure you're not still in the search flow when you do this.


Great! You've successfully added the Salesforce Knowledge integration to your app. Your app can now help people find the right information right when they need it.

Suggested reading