8.1 Workflow Action Architecture & Field/Event Context
Key Takeaways
- Workflow actions provide interactive, context-sensitive menu items in Splunk Web that enable analysts to launch external web queries, submit HTTP POST requests, or execute secondary SPL searches directly from search results without manual copy-pasting.
- Splunk supports three distinct workflow action types: GET (HTTP GET requests constructing dynamic URLs with query parameters), POST (HTTP POST requests submitting form payloads to remote web endpoints), and Search (launching dynamic secondary SPL queries within Splunk).
- Workflow actions can target specific UI locations via display_location: Event Actions menu (event_menu attached to whole event rows), Field Actions menu (field_menu attached to specific field dropdowns), or Both (both), requiring explicit field definitions for field menus.
- Dynamic variable token interpolation uses dollar-sign syntax ($fieldname$), supporting standard extracted fields, internal metadata fields ($_time$, $_raw$, $_cd$), and special context tokens ($@field_name$, $@field_value$), with $$ escaping literal dollar signs.
- A workflow action is strictly suppressed from the UI if any variable token referenced in its label, URI, search string, or POST arguments is missing or null in the target event, preventing broken links or invalid searches.
8.1 Workflow Action Architecture & Field/Event Context
Quick Summary: Workflow Actions are interactive context-menu items in Splunk Web that bridge the gap between raw log search results and external systems or secondary internal searches. Configured graphically via Settings > Fields > Workflow actions or through
workflow_actions.conf, workflow actions dynamically extract field values from the current event and interpolate them into external HTTP GET URLs, HTTP POST payload requests, or secondary SPL search queries. Precise scoping by sourcetype, host, source, event type, and field presence ensures context menus remain clean, relevant, and actionable.
1. What Are Workflow Actions?
During operational troubleshooting, security incident response, or business analytics investigations, an analyst rarely completes an entire inquiry within a single search view. When analyzing events in the Splunk Events Viewer, an investigator frequently discovers actionable indicators of compromise or operational anomalies—such as an external IP address (src_ip), a malicious file hash (file_hash), a targeted username (user), a database transaction ID (trans_id), or an application error code (error_code).
Without automation, the analyst must manually copy the indicator value, open a new browser tab or tool, navigate to the target portal (such as a threat intelligence feed, CMDB, or ticketing system), paste the indicator, and initiate the lookup. Alternatively, to cross-correlate that indicator against other internal data sources (such as firewall logs or authentication records), the analyst must open a new Splunk search tab, construct a complex SPL query from scratch, and manually set the time window.
Workflow Actions eliminate this friction by embedding automated, parameter-driven integration links directly into the Splunk Web search interface.
+------------------------------------------------------------------------------------------------+
| WORKFLOW ACTION RESOLUTION ENGINE |
| |
| Search Results Stream: |
| 2026-08-24 14:10:05 | sourcetype=access_combined | clientip=198.51.100.42 | status=500 |
| |
| +--------------------------------+ +-----------------------------------------------+ |
| | [ Event Actions Menu v ] | | [ Field Actions Menu: clientip ] | |
| |--------------------------------| |-----------------------------------------------| |
| | > Build Event Type | | > Show only this value | |
| | > Extract Fields | | > Exclude this value | |
| | > [Search] Investigate Session | | > [GET] Query VirusTotal for 198.51.100.42 | |
| | > [POST] Create Jira Incident | | > [GET] Query Cisco Talos for 198.51.100.42 | |
| +--------------------------------+ +-----------------------------------------------+ |
+------------------------------------------------------------------------------------------------+
When a user opens an Event Actions or Field Actions menu, Splunk's dynamic resolution engine evaluates the event context against configured scoping rules, replaces all variable placeholders ($fieldname$) with actual extracted field values from the event, and renders the clickable action.
2. The Three Types of Workflow Actions
Splunk supports three distinct workflow action types. Each type serves a specialized integration pattern across enterprise environments:
| Workflow Action Type | Underlying Protocol / Action | Primary Use Cases | Configuration Parameters (workflow_actions.conf) |
|---|---|---|---|
| GET (Link) | HTTP/HTTPS GET request | Directs the browser to an external or internal URL with parameters appended to the query string (e.g., threat intelligence lookups on VirusTotal/Talos, WHOIS lookups, CMDB asset records, Google searches). | type = link<br/>link.method = get<br/>link.uri = <target_URL> |
| POST (Link) | HTTP/HTTPS POST request | Submits structured key-value form data in the HTTP request body to remote web endpoints or REST APIs (e.g., opening a ServiceNow incident, logging a Jira bug, triggering a SOAR webhook). | type = link<br/>link.method = post<br/>link.uri = <target_URL><br/>link.postargs.<n>.key / link.postargs.<n>.value = <val> |
| Search | Internal Splunk SPL execution | Launches a dynamic secondary Splunk search pre-populated with extracted field values from the initiating event, targeting specific apps, views, and custom time windows. | type = search<br/>search.search_string = <SPL><br/>search.app = <app_name><br/>search.earliest / search.latest |
1. GET Workflow Actions
GET workflow actions are the most widely deployed workflow action type. They construct an HTTP GET request by appending parameter values into the URL query string. Because HTTP GET operations are idempotent (read-only and non-destructive), they are ideal for querying public threat repositories, domain registrars, external knowledge bases, and corporate intranets.
2. POST Workflow Actions
POST workflow actions generate an HTTP POST request that transmits form data within the HTTP message body. Unlike GET actions, which expose parameters in the browser address bar, POST actions encapsulate payload arguments within the request body (link.postargs). This makes POST actions necessary for state-changing operations, such as creating support tickets, dispatching notifications, or invoking webhook endpoints on remote services.
3. Search Workflow Actions
Search workflow actions keep the analyst inside Splunk by executing a secondary SPL query. Splunk extracts contextual field values from the selected event, injects them into a pre-authored SPL query template, and runs or stages the search in a specified Splunk app and dashboard view. This allows analysts to pivot instantly from a high-level summary alert into raw forensic logs (such as jumping from an authentication failure event to a network connection trace).
3. Display Locations: Event Actions vs. Field Actions Context Menus
Workflow actions appear in Splunk Web across two primary interface locations based on the configured display_location setting:
+------------------------------------------------------------------------------------------------+
| SPLUNK WEB DISPLAY LOCATIONS |
| |
| 1. EVENT ACTIONS MENU (display_location = event_menu) |
| [>] 2026-08-24 14:10:05.120 host=web-01 sourcetype=access_combined |
| | |
| +-- [ Event Actions v ] <-- Attached to the whole event row |
| |-- Show raw event |
| |-- Build Event Type |
| |-- [Workflow] Correlate all logs for host web-01 (+/- 15m) |
| \-- [Workflow] Create ServiceNow Ticket for Error 500 |
| |
| 2. FIELD ACTIONS CONTEXT MENU (display_location = field_menu) |
| +-- Expanded Event Details: |
| | Field Name | Value | Context Action Dropdown |
| |------------|----------------|--------------------------------------------------------|
| | clientip | 198.51.100.42 | [v] --> [Workflow] VirusTotal IP Lookup |
| | | | --> [Workflow] Cisco Talos Reputation Lookup |
| | user | admin_service | [v] --> [Workflow] Active Directory User Audit |
| | status | 500 | [v] --> [Workflow] Search HTTP 500 Knowledge Base |
+------------------------------------------------------------------------------------------------+
Comparison of Display Locations
| Attribute | Event Actions Menu (event_menu) | Field Actions Menu (field_menu) | Both Menus (both) |
|---|---|---|---|
| UI Location | Dropdown button on the left of each event row (or top of the event drawer). | Dropdown arrow next to a specific field name or value in the event table or Fields sidebar. | Appears in both the Event Actions menu and applicable Field Actions menus. |
| Contextual Scope | Evaluated across the entire event. | Bound strictly to the specific clicked field. | Evaluated for both event-level and field-level contexts. |
| Required Settings | display_location = event_menu | display_location = field_menu<br/>fields = <field_list> | display_location = both<br/>fields = <field_list> |
| Typical Use Cases | Actions requiring multiple event fields (e.g., ticket creation with host, user, and error; cross-index correlation queries). | Entity-specific lookups (e.g., IP reputation, domain WHOIS, user directory lookup, hash analysis). | Comprehensive investigative actions relevant from both macro and micro views. |
4. Dynamic Variable Token Interpolation Syntax
Variable interpolation allows workflow actions to dynamically adapt to the data contained in individual events. Splunk uses dollar-sign delimiters ($fieldname$) to identify variable tokens across labels, URLs, search strings, and POST arguments.
Variable Token Reference Guide
| Variable Syntax | Scope & Source | Description & Evaluation Example |
|---|---|---|
$fieldname$ | Extracted / Calculated Fields | Resolves to the extracted value of the specified case-sensitive field name. If user="jsmith", $user$ resolves to jsmith. |
$_time$ | Internal Timestamp Field | Resolves to the raw epoch timestamp integer of the event (e.g., 1755984005). Useful for passing exact timestamps to secondary searches or ticketing systems. |
$_raw$ | Internal Event Text | Resolves to the entire unparsed raw text of the event. Useful for injecting raw log messages into ticket description fields. |
$_cd$ / $_serial$ | Internal Event Metadata | Resolves to Splunk internal index block pointers and event serial numbers. |
$@field_name$ | Field Menu Context | Special token in Field Actions menus that resolves dynamically to the name of the clicked field (e.g., src_ip or dest_ip). |
$@field_value$ | Field Menu Context | Special token in Field Actions menus that resolves dynamically to the value of the clicked field (e.g., 198.51.100.42). |
$$ | Literal Character Escape | Escapes a dollar sign to prevent Splunk from interpreting it as a variable token. For example, Cost ($$ USD) renders as Cost ($ USD). |
+------------------------------------------------------------------------------------------------+
| DYNAMIC VARIABLE SUBSTITUTION |
| |
| Event Values: clientip="198.51.100.42" status="500" host="web-app01" |
| |
| 1. Label Template: "Lookup IP $clientip$ on VirusTotal (Host: $host$)" |
| Rendered Label: "Lookup IP 198.51.100.42 on VirusTotal (Host: web-app01)" |
| |
| 2. URI Template: "https://virustotal.com/gui/ip-address/$clientip$/detection" |
| Rendered URI: "https://virustotal.com/gui/ip-address/198.51.100.42/detection" |
| |
| 3. Context Tokens: fields = clientip, src_ip, dest_ip |
| URI Template: "https://whois.domaintools.com/$@field_value$" |
| Clicked clientip: "https://whois.domaintools.com/198.51.100.42" |
+------------------------------------------------------------------------------------------------+
The Critical Variable Presence & Suppression Rule
[!IMPORTANT] The Strict Suppression Rule: Splunk requires that all variable tokens referenced in a workflow action's
label,link.uri,search.search_string, orlink.postargsmust exist and be non-null within the selected event. If even a single referenced variable is missing from the event, Splunk automatically suppresses the workflow action from the menu.
For example, if an action label is configured as Investigate $user$ on host $dest_host$, but an event contains user without a dest_host field, the entire action is silently hidden for that event. This design prevents users from clicking broken links or executing malformed searches with unpopulated $token$ placeholders.
5. Granular Scoping Controls & Configuration Methods
To prevent context menus from becoming overcrowded with irrelevant options, Splunk provides multiple scoping directives to restrict when a workflow action is rendered.
Scoping Directives in workflow_actions.conf
| Scoping Parameter | Matching Logic | Configuration Example |
|---|---|---|
fields | Comma-delimited list of field names that must be present. Required for field_menu. | fields = clientip, src_ip, dest_ip, remote_ip or fields = * |
sourcetype | Restricts action to events matching the specified sourcetype string or pattern. | sourcetype = access_combined or sourcetype = WinEventLog:* |
source | Restricts action to events originating from the specified source path. | source = /var/log/nginx/access.log |
host | Restricts action to events originating from the specified host name. | host = web-prod-* |
eventtypes | Restricts action to events classified under one or more defined event types. | eventtypes = web_error, auth_failure |
Multi-Condition Evaluation (Boolean AND)
When multiple scoping conditions are configured within the same workflow action stanza, Splunk evaluates them using boolean AND logic across different criteria and boolean OR logic within comma-separated lists:
+------------------------------------------------------------------------------------------------+
| SCOPING EVALUATION PIPELINE |
| |
| Configuration: sourcetype = cisco:asa | fields = src_ip, dest_ip | eventtypes = vpn_drop |
| |
| Event A: sourcetype=cisco:asa, eventtype=vpn_drop, src_ip=10.0.0.1 --> MATCH (Action Shown) |
| Event B: sourcetype=cisco:asa, eventtype=vpn_drop (no src/dest IP) --> FAIL (Field Missing) |
| Event C: sourcetype=access_combined, src_ip=10.0.0.1 --> FAIL (Sourcetype Mis) |
+------------------------------------------------------------------------------------------------+
6. Configuration Management: Splunk Web vs. Configuration Files
Method 1: Splunk Web UI Configuration
Power Users and Administrators can create workflow actions graphically:
- Navigate to Settings > Fields > Workflow actions.
- Click New Workflow Action (or edit an existing action).
- Fill in the required fields:
- Destination app: The application container for the knowledge object (
search,SplunkEnterpriseSecuritySuite, etc.). - Name: Internal stanza name (letters, numbers, underscores).
- Label: Human-readable text displayed in the context menu (supports
$tokens$). - Apply only to the following: Select
sourcetype,source,host, oreventtypes. - Show action in: Choose
Event menu,Field menu, orBoth. - Fields: Specify field names (required when
Field menuorBothis selected). - Action type: Choose
link(for GET/POST) orsearch.
- Destination app: The application container for the knowledge object (
- Click Save and manage knowledge object permissions.
Method 2: Configuration Files (workflow_actions.conf)
In enterprise CI/CD workflows and distributed deployments, workflow actions are maintained in workflow_actions.conf files:
# $SPLUNK_HOME/etc/apps/search/local/workflow_actions.conf
[virustotal_lookup_srcip]
type = link
label = Check VirusTotal for IP $src_ip$
display_location = field_menu
fields = src_ip, clientip
link.method = get
link.uri = https://www.virustotal.com/gui/ip-address/$@field_value$/detection
link.target = blank
[escalate_incident_servicenow]
type = link
label = Create ServiceNow Incident for $host$
display_location = event_menu
sourcetype = access_combined
link.method = post
link.uri = https://instance.service-now.com/api/now/table/incident
link.target = blank
link.postargs.1.key = caller
link.postargs.1.value = splunk_alert
link.postargs.2.key = short_description
link.postargs.2.value = Web 500 error on $host$ from client $clientip$
link.postargs.3.key = urgency
link.postargs.3.value = 2
Knowledge Object Scoping & Directory Precedence
Workflow actions adhere to standard Splunk knowledge object scoping tiers:
- Private: Stored in
$SPLUNK_HOME/etc/users/<username>/<app>/local/workflow_actions.conf. Visible exclusively to the author. - App (This app only): Stored in
$SPLUNK_HOME/etc/apps/<app>/local/workflow_actions.conf. Accessible to all users within the specific app. - Global (All apps): Shared across all apps with
export = systeminlocal.meta. Accessible in every app on the search head.
A Splunk Power User creates a workflow action with the configuration display_location = field_menu and fields = clientip, src_ip, dest_ip. Where will this workflow action appear in the Splunk Web search interface?
A workflow action has a configured label of Investigate user $user$ on server $dest_server$. An analyst runs a search where an event contains user="jsmith" but the field dest_server was not extracted and is missing. What happens when the analyst opens the Event Actions menu for this event?
In a Field Actions menu workflow action that applies to multiple IP address fields (fields = src_ip, dest_ip, gateway), which variable syntax dynamically resolves to the actual value of whichever specific field was clicked by the user?