Skip to main content

Temporal Cloud Actions

Temporal Cloud Actions are the primary unit of consumption-based pricing for Temporal Cloud. They track billable operations within the Temporal Cloud Service, such as starting Workflows, recording a Heartbeat, or sending Signals.

Actions can be largely placed in the following categories:

Some additional Temporal Cloud features are billed as Actions:

Billable Actions are visible in the OpenMetrics endpoint, Workflow History and Usage Dashboards, and the Billing API. Action types and categories can help estimate usage, identify specific Action types that are driving usage, optimize workflows by tracking usage spikes, and troubleshoot errors. For example:

  • You can see if a new Workflow type on a Namespace is driving a significant usage increase
  • You can identify the aggregate usage of Activity Heartbeats on a Namespace

The following is the mapping of Action Categories to Action types. The Action Types that are visible on various endpoints can differ based what is visible to a system. Note: Action Categories and Action Types are not available in the billing API.

Usage and Billing data will have the most complete Actions data while wWrkflow history and metrics will help with detailed estimates. For example, History Event Types are provided for transparency, but do not always have a simple 1:1 relationship with Action Types. The Categories, Action types, and available endpoints are listed in the following sections:

Workflow

  • Workflow started
    • Occurs via client start, Continue-As-New, Child Workflow start.
    • If a Workflow start fails, an Action is not recorded.
    • De-duplicated Workflow starts that share a Workflow ID do not count as an Action.
  • Workflow reset
    • Occurs when a Workflow is reset.
    • Actions that occur before a Reset are counted on the original workflow. These events are not counted on the newly created workflow.
  • Search Attribute upsert requested
    • Occurs for each invocation of UpsertSearchAttributes command.
    • Multiple Search Attributes updated in a single UpsertSearchAttributes command count as one Action.
    • Search Attributes specified during Workflow start are excluded from Action counts.
    • The TemporalChangeVersion Search Attribute, used for Workflow versioning, is also exempt from Action counting.
  • Workflow Execution Options updated.
  • Start Child Workflow Execution initiated.
    • Occurs when the parent Workflow durably records the intent to start a Child Workflow.
    • Results in two Actions, one for durably storing the intent to start a Child Workflow and one for the attempt to start it.
  • Workflow started via Multi-Operation.
    • Occurs when a Workflow is started as part of an ExecuteMultiOperation request — a single atomic RPC that bundles a Workflow start with one or more Workflow Updates. The start counts as one Action.
    • Each bundled Update that is accepted or rejected counts as an additional Action.
    • If the Workflow was already running and the start is de-duplicated, no Action is charged for the start (though an update_workflow_options_via_start Action may still apply).
Usage NameMetric NameHistory Event Type
Start Workflowstart_workflowEVENT_TYPE_WORKFLOW_EXECUTION_STARTED
Start Child Workflowstart_child_workflowEVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED
Continue As New Workflowcontinue_as_new_workflowEVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW Note: The UI shows a billable action only for the EVENT_TYPE_WORKFLOW_EXECUTION_STARTED event of the newly started Workflow, not for this history event.
Start Workflow (Multi-Operation)start_workflow_multi_operationEVENT_TYPE_WORKFLOW_EXECUTION_STARTED
Update Workflow Optionsupdate_workflow_optionsEVENT_TYPE_WORKFLOW_EXECUTION_OPTIONS_UPDATED
Update Workflow Options (Via Start)update_workflow_options_via_startEVENT_TYPE_WORKFLOW_EXECUTION_OPTIONS_UPDATED
Upsert Workflow Search Attributesupsert_workflow_search_attributesEVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES
Reset Workflowreset_workflowEVENT_TYPE_WORKFLOW_TASK_FAILED Note: When cause == WORKFLOW_TASK_FAILED_CAUSE_RESET_WORKFLOW
Record Workflow Heartbeatrecord_workflow_heartbeatN/A

Activity

  • Activity started or retried. Occurs each time an Activity is started or retried.
  • Local Activity started. All Local Activities associated with one Workflow Task count as a single Action. Temporal Cloud counts all RecordMarkers from each Workflow Task as one action, and not N actions. Note:
    • Each Workflow Task Heartbeat counts as an additional Action.
    • Local Activities retried following a Workflow Task Heartbeat count as one Action (capped at 100 Actions).
  • Activity Heartbeat recorded. A Heartbeat call from Activity code counts as an Action only if it reaches the Temporal Server. Temporal SDKs throttle Activity Heartbeats. The default throttle is 80% of the Heartbeat Timeout. Heartbeats don't apply to Local Activities.
Usage NameMetric NameHistory Event Type
Schedule Activityschedule_activityEVENT_TYPE_ACTIVITY_TASK_SCHEDULED
Retry Activityretry_activityEVENT_TYPE_ACTIVITY_TASK_STARTED Note: Intermediate retry attempts do not produce separate history events. Total attempt count is recorded in the ActivityTaskStartedEventAttributes.attempt field on this event. The user should subtract 1, because the first attempt is not a retry. If the Workflow is terminated while Activity retry is in progress, this STARTED event is not written, so this data may not always be available.
Retry Local Activityretry_activity_localEVENT_TYPE_WORKFLOW_TASK_COMPLETED Note: the retry count is recorded in WorkflowTaskCompletedEventAttributes.metering_metadata.nonfirst_local_activity_execution_attempts field on this event.
Record Activity Heartbeatrecord_activity_heartbeatN/A
Record Activity Heartbeat by IDrecord_activity_heartbeat_by_idN/A
Record Activity Markersrecord_activity_markersEVENT_TYPE_MARKER_RECORDED
Start Standalone Activitystart_standalone_activityN/A
Retry Standalone Activityretry_standalone_activityN/A
Record Standalone Activity Heartbeatrecord_standalone_activity_heartbeatN/A
Record Standalone Activity Heartbeat By IDrecord_standalone_activity_heartbeat_by_idN/A

Timer

  • Timer started. Includes implicit Timers that are started by a Temporal SDK when timeouts are set, such as AwaitWithTimeout in Go or condition in TypeScript.
Usage NameMetric NameHistory Event Type
Start Timerstart_timerEVENT_TYPE_TIMER_STARTED

Signal

  • Signal sent. An Action occurs for every Signal, whether sent from a Client or from a Workflow. Also, one total action occurs for any Signal-With-Start, regardless of whether the Workflow starts.
Usage NameMetric NameHistory Event Type
Signal Workflowsignal_workflowEVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED
Signal External Workflowsignal_external_workflowEVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED (signaler workflow history) EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED (signaled Workflow history) Note: The UI shows a billable action only in the signaled Workflow history, not in the signaler Workflow history.
Signal Workflow With Startsignal_workflow_with_startEVENT_TYPE_WORKFLOW_EXECUTION_STARTED followed by EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED if the workflow didn’t exist, or only EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED if the Workflow existed.

Query

  • Query received by Worker. An Action occurs for every Query, including viewing the call stack in the Temporal Cloud UI, which results in a Query behind the scenes. __temporal_workflow_metadata is a built-in query used to retrieve workflow metadata at runtime and is excluded.
Usage NameMetric NameHistory Event Type
Query Workflowquery_workflowN/A

Update

  • Update received by Worker.
    • Occurs for every successful Update and every rejected Update.
    • This includes Update-With-Start, and is in addition to the start Action in the case when the Workflow starts as well.
    • De-duplicated Updates that share an Update ID do not count as an Action.
NameAction IDHistory Event Type
Accept Workflow Updateaccept_workflow_updateEVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ACCEPTED
Reject Workflow Updatereject_workflow_updateEVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_REJECTED Note: this event is never written to history.

Schedule

Schedules allows you to schedule a Workflow to start at a particular time. Each execution of a Schedule accrues three actions:

  • Schedule Start. This accounts for two actions.
  • Workflow started. This is a single action to start the target Workflow. It includes initial Search Attributes as part of the start request.
Usage NameMetric NameHistory Event Type
Create Schedulecreate_scheduleN/A
Update Scheduleupdate_scheduleN/A
Patch Schedulepatch_scheduleN/A
Delete Scheduledelete_scheduleN/A
Schedule Workflowschedule_workflowEVENT_TYPE_WORKFLOW_EXECUTION_STARTED Note: event.WorkflowExecutionStartedEventAttributes.indexedFields.TemporalScheduledById tells if a Workflow was started by a Schedule`

Temporal Nexus

  • For Nexus Operation scheduled, the caller Workflow starting a Nexus Operation results in one Action on the caller Namespace.
  • For Nexus Operation canceled, the caller Workflow canceling a Nexus Operation results in one Action on the caller Namespace.
  • The underlying Temporal primitives (such as Workflows, Activities, and Signals) created by a Nexus Operation handler (directly or indirectly) result in the normal Actions for those primitives billed to the handler’s Namespace. This includes retries for underlying Temporal primitives like Activities but not for handling the Nexus Operation itself or a retry of the Nexus Operation itself.
Usage NameMetric NameHistory Event Type
Schedule Nexus Operationschedule_nexus_operationEVENT_TYPE_NEXUS_OPERATION_SCHEDULED
Request Nexus Operation Cancellationrequest_nexus_operation_cancellationEVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUESTED

Export

Workflow History Export enables you to export closed Workflow Histories to a cloud storage sink of your choice.

  • Workflow exported. Each Workflow exported accrues a single action.
  • Excluded from APS calculations.
Usage NameMetric NameHistory Event Type
Export Workflow HistoryN/AN/A

Fairness

For each hour a Namespace has the Fairness feature enabled, an additional 0.1 Action will be charged per Action in the Namespace.

  • Excluded from APS calculations.
Usage NameMetric NameHistory Event Type
Enable FairnessN/AN/A

Capacity

  • For Namespace Capacity Temporal Resource Units (TRUs), Actions are generated up to the included hourly allocation for TRUs in any hour where TRUs are set and actual usage falls beneath the included hourly Action allocation.
  • Excluded from APS calculations.
Usage NameMetric NameHistory Event Type
Enable Provisioned CapacityN/AN/A

Actions usage can be tracked in multiple areas depending on the needed granularity. Reference *Link to New Action Usage, Metrics & Visibility