Announcing RUNWAY: The conference for teams securing what's nextRegister Now
RunReveal
SourcesSource TypesWorkOS

WorkOS Audit Logs

WorkOS Audit Logs record the security-relevant actions taken in your application and organizations — capturing the actor, action, target, timestamp, and contextual metadata for each event. RunReveal ingests them from a WorkOS Audit Log stream so you can retain, search, and build detections on administrative and end-user activity.

WorkOS Audit Logs source tile

Ingest Methods

RunReveal offers the following ways to ingest WorkOS Audit Logs:

The webhook method imports events with the lowest latency. Object storage can be cheaper at high volume but adds some delay.

If using an AWS S3 bucket use the following SNS topic ARN to send your bucket notifications.

arn:aws:sns:<REGION>:253602268883:runreveal_workos_audit

Replace <REGION> with the AWS region where your S3 bucket is located (e.g., us-east-1, us-west-2, eu-west-1).

SNS topic & Custom SQS. Use the ARN above in your event notification tied to your S3 bucket—the topic name must match (runreveal_…; hyphens in the source id become underscores). For Custom SQS, set the queue URL and region in RunReveal; see AWS S3 Bucket with Custom SQS.

Note: BYOC, On-Prem, and BYODB customers must use their AWS account ID in the ARN instead of 253602268883.

Setup

Create the RunReveal Source

  1. Go to Sources in RunReveal
  2. Click the WorkOS Audit Logs source tile
  3. Give it a name and select the Webhook ingest method
  4. Click Connect Source
  5. Copy the generated Webhook URL and bearer token — you'll need both in the next step

Create the WorkOS Audit Log Stream

  1. Sign in to the WorkOS Dashboard
  2. Navigate to Audit Logs and open Log Streams (or Streaming)
  3. Create a new log stream and choose the Generic HTTPS destination
  4. Set the Endpoint URL to the RunReveal Webhook URL you copied
  5. Add an Authorization header whose value is the bearer token from RunReveal (for example, Bearer <token>)
  6. Save the log stream

WorkOS Audit Log Streams authenticate using the header you configure. RunReveal validates the bearer token on the standard Authorization header — there is no separate HMAC signature to configure.

Emit Audit Log Events

Audit Log events are emitted by your application through WorkOS (via the Audit Logs API or WorkOS-managed actions). Once the stream is active and events are being emitted, they will begin flowing to RunReveal.

Regardless of ingest method, events are stored under the single workos-audit source type, so your queries and detections work the same whether you use the webhook or object storage.

Verify It's Working

Once configured, logs should begin flowing as audit events are emitted.

You can validate we are receiving your logs by running the following SQL query.

SELECT * FROM runreveal.logs WHERE sourceType = 'workos-audit' LIMIT 1

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: workos_audit_logs (49 columns)

ColumnType
workspaceIDString
sourceIDString
sourceTypeString
sourceTTLUInt32
receivedAtDateTime
idString
eventTimeDateTime
eventNameString
eventIDString
srcIPString
srcASCountryCodeString
srcASNumberUInt32
srcASOrganizationString
srcCityString
srcConnectionTypeString
srcISPString
srcLatitudeFloat64
srcLongitudeFloat64
srcUserTypeString
dstIPString
dstASCountryCodeString
dstASNumberUInt32
dstASOrganizationString
dstCityString
dstConnectionTypeString
ColumnType
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
actionString
eventVersionUInt32
actorIDString
actorNameString
actorTypeString
locationString
userAgentString
organizationIDString
targetTypeString
targetIDString
targetNameString
targetsString
metadataString

On this page