Discourse Salesforce

:discourse2: Summary Discourse Salesforce allows synchronization between Discourse Users and Salesforce leads/contacts, and enables Salesforce Social Login
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-salesforce
:open_book: Install Guide How to install plugins in Discourse

Sync between Salesforce leads/contacts & Discourse users

Screenshot 2022-02-15 at 9.19.06 PM

You can create a Salesforce lead or contact from any Discourse user using the post menu. To easily distinguish those users it will display a poster icon next to the username in posts. And it will add linkbacks to these Discourse user profiles in corresponding Salesforce objects.

Screenshot 2022-02-15 at 9.15.15 PM

Screenshot 2022-02-15 at 9.15.31 PM

Also, you can filter these leads and contacts by Discourse user groups. And you can track user activities from the Salesforce chatter wall.

Screenshot 2022-02-15 at 9.19.51 PM

Sync between Salesforce cases & Discourse topics

Screenshot 2022-02-15 at 9.57.33 PM

You can create a Salesforce case for any Discourse topic from the topic admin menu. And you can view the case number and status below to the topic’s first post content. Also, you can filter these topics by tags that are configurable through site settings. And you can view topic replies from Salesforce’s case comments list.

Screenshot 2022-02-15 at 9.52.58 PM

Social Login

This plugin will also enable a Social Login with Salesforce, making it easier for your patron to sign up on Discourse.

Screenshot 2022-02-15 at 9.12.58 PM

Configuration

  • Create a connected app with OAuth2 setting enabled in Salesforce admin interface. Then copy the client id and secret credentials to the Discourse site settings on the admin side.
    Salesforce navigation: Setup → Platform Tools → Apps → App Manager → New Connected App

  • Set “https://discourse.example.com/auth/salesforce/callback” and “https://discourse.example.com” as values for callback URL setting.

  • Select the OAuth scopes “Access the identity URL service (id, profile, email, address, phone)” and “Perform requests at any time (refresh_token, offline_access)” from the list.

  • Create a Private Key and Self-Signed Digital Certificate for the Salesforce connected app. Then enable the “Use digital signatures” setting and upload the generated certificate. After creating the connected app in Salesforce, update your non-encrypted private key content (server.key file content as per example in the URL) in Discourse’s “salesforce rsa private key” site setting.

  • Click the “Manage Consumer Details” button to get consumer key and secret values and set it in Discourse site settings “salesforce_client_id” and “salesforce_client_secret” respectively.

  • Set the username of a Salesforce admin account in the Discourse site setting “salesforce username”. It will be used to generate JIT access tokens.

  • Now enable both “salesforce_login_enabled” and “salesforce_enabled” site settings.

  • Finally navigate to “https://discourse.example.com/salesforce/admin/authorize” URL to authorize the connected app for Salesforce admin user.

:discourse2: Hosted by us? This plugin is available on our Enterprise plans.

12 Likes

Hi there,

I seem to have hit some snag along the way while trying to complete this process. As the configuration portion of this wasn’t super clear I followed a combination of this guide and This one from SalesForce

I have created the app on the sales force side with oauth and the self-signed server.crt uploaded to the app. The call back URL (Step 6 in the salesforce guide) I put in https://login.salesforce.com as the default in discord settings as the suggested local host URL didn’t make much sense. We have the consumer key and secret as well as the RSA key and my salesforce admin email address all entered in the discourse plugin settings for salesforce but we are not seeing things like the created lead generation on the discourse side. Does anyone have a step-by-step guide we can review or any insights in testing and getting this sorted out?

Thanks!
Tim

I added a few more detailed steps in the configuration section in the OP.

1 Like