SourcesSource TypesSalesforceEvent Logs

Salesforce Event Logs

Capture detailed information about user activities, system operations, and performance metrics within a Salesforce organization.

Salesforce Event Logs — Create External Client App

Ingest Methods

RunReveal offers the following ways to ingest Salesforce Event Logs logs:

API Polling

Salesforce Event Logs supports API polling to collect event logs from your Salesforce organization using OAuth 2.0 client credentials. The setup steps are the same as for Salesforce Audit Trail; you can use the same Connected App credentials for both Event Logs and Audit Trail if you want to run both sources.

API and polling: We use Salesforce API v65.0. Backfill is limited to 30 days. We poll daily by default; while we can poll hourly, daily polling is recommended to reduce the chance of missing late-arriving logs from the Salesforce API.

Step 1: Create the External Client App

  1. In Salesforce, go to Setup (click the gear icon)
  2. In the Quick Find box, search for “External Client App Manager” (or go to AppsExternal Client AppsExternal Client App Manager in the sidebar)
  3. Click “New External Client App” in the top right
  4. Fill in the basic information:
    • Connected App Name: Your integration name (e.g. “RunReveal”)
    • API Name: (auto-fills based on the name)
    • Contact Email: Your email

Salesforce Setup sidebar — path to External Client App Manager

External Client App Manager — New External Client App button

Step 2: Configure OAuth Settings

  1. Check “Enable OAuth Settings”
  2. Set Callback URL to: https://login.salesforce.com/services/oauth2/callback (or your specific callback URL if different)
  3. Under Selected OAuth Scopes, add:
    • Perform requests at any time (refresh_token, offline_access)
    • Manage user data via APIs (api)
  4. Check “Enable Client Credentials Flow”
  5. Click “Create”

OAuth Settings — Enable OAuth, Callback URL, scopes, and Client Credentials Flow

Step 3: Enable Client Credentials Flow

  1. Edit the app you just created
  2. Check “Enable Client Credentials Flow”
  3. In the “Run As” field, search for and select the execution user
⚠️

The Run As user must have “View All Data” and “API Enabled” permissions.

Client Credentials Flow — Run As (Username) set to integration user

Step 4: Save and Retrieve Credentials

  1. Click “Save”
  2. Click “Continue” on the confirmation page
  3. You’ll see the Consumer Key displayed immediately
  4. Click “Manage Consumer Details” to view the Consumer Secret
  5. Salesforce will send a verification code to your email — enter it to proceed
  6. Copy both the Consumer Key and Consumer Secret for use in RunReveal

External Client App Settings — Consumer Key and Secret under OAuth Settings

Step 5: Connect in RunReveal

  1. Go to Sources in RunReveal
  2. Click the Salesforce Event Logs source tile
  3. Give it a name and fill in the required fields:
    • Salesforce Instance Host: Your Salesforce instance URL (e.g. company.my.salesforce.com)
    • Client ID: The Consumer Key from Step 4
    • Client Secret: The Consumer Secret from Step 4
  4. Click Connect Source

RunReveal will poll the Salesforce Event Logs API daily and backfill the last 30 days on first sync.

Video Walkthrough

Schema

The following columns are exposed for this source. RunReveal applies schema normalization across all sources, ensuring uniform field names and data types for cross-source queries and reusable detection logic.

Table: salesforce_logs (36 columns)

ColumnType
workspaceIDString
sourceIDString
sourceTypeLowCardinality(String)
sourceTTLUInt32
receivedAtDateTime
idString
eventTimeDateTime
eventNameString
eventIDString
srcIPString
srcASCountryCodeString
srcASNumberUInt32
srcASOrganizationString
srcCityString
srcConnectionTypeString
srcISPString
srcLatitudeFloat64
srcLongitudeFloat64
srcUserTypeString
dstIPString
dstASCountryCodeString
dstASNumberUInt32
dstASOrganizationString
dstCityString
dstConnectionTypeString
dstISPString
dstLatitudeFloat64
dstLongitudeFloat64
dstUserTypeString
actorMap(String, String)
tagsMap(String, String)
resourcesArray(String)
serviceNameString
enrichmentsArray(Tuple(data Map(String, String), name String, provider String, type String, value String))
readOnlyBool
rawLogString

Table: salesforce_login_logs (70 columns)

ColumnType
workspaceIDString
sourceIDString
sourceTypeLowCardinality(String)
sourceTTLUInt32
receivedAtDateTime
idString
eventTimeDateTime
eventNameString
eventIDString
srcIPString
srcASCountryCodeString
srcASNumberUInt32
srcASOrganizationString
srcCityString
srcConnectionTypeString
srcISPString
srcLatitudeFloat64
srcLongitudeFloat64
srcUserTypeString
dstIPString
dstASCountryCodeString
dstASNumberUInt32
dstASOrganizationString
dstCityString
dstConnectionTypeString
dstISPString
dstLatitudeFloat64
dstLongitudeFloat64
dstUserTypeString
actorMap(String, String)
tagsMap(String, String)
resourcesArray(String)
serviceNameString
enrichmentsArray(Tuple(data Map(String, String), name String, provider String, type String, value String))
readOnlyBool
ColumnType
rawLogString
eventTypeString
timestampString
requestIdString
organizationIdString
userIdString
runTimeString
cpuTimeString
uriString
sessionKeyString
loginKeyString
userTypeString
requestStatusString
dbTotalTimeString
loginTypeString
browserTypeString
apiTypeString
apiVersionString
userNameString
tlsProtocolString
cipherSuiteString
useApiTokenString
httpRefererString
loginUrlString
countryCodeString
authenticationMethodReferenceString
loginSubTypeString
authenticationServiceIdString
timestampDerivedString
userIdDerivedString
clientIpString
uriIdDerivedString
loginStatusString
sourceIpString
forwardedForIpString

Table: salesforce_logout_logs (54 columns)

ColumnType
workspaceIDString
sourceIDString
sourceTypeLowCardinality(String)
sourceTTLUInt32
receivedAtDateTime
idString
eventTimeDateTime
eventNameString
eventIDString
srcIPString
srcASCountryCodeString
srcASNumberUInt32
srcASOrganizationString
srcCityString
srcConnectionTypeString
srcISPString
srcLatitudeFloat64
srcLongitudeFloat64
srcUserTypeString
dstIPString
dstASCountryCodeString
dstASNumberUInt32
dstASOrganizationString
dstCityString
dstConnectionTypeString
dstISPString
dstLatitudeFloat64
ColumnType
dstLongitudeFloat64
dstUserTypeString
actorMap(String, String)
tagsMap(String, String)
resourcesArray(String)
serviceNameString
enrichmentsArray(Tuple(data Map(String, String), name String, provider String, type String, value String))
readOnlyBool
rawLogString
eventTypeString
timestampString
requestIdString
organizationIdString
userIdString
runTimeString
cpuTimeString
sessionKeyString
userTypeString
requestStatusString
dbTotalTimeString
browserTypeString
userNameString
timestampDerivedString
userIdDerivedString
clientIpString
sessionLevelString
sessionTypeString