This guide shows you how to connect Leapwork Performance to Datadog so you can monitor run results with Datadog dashboards. You will create an API key, configure the connection, and verify that metrics flow into Datadog.
Use this guide when you want to send Leapwork Performance run data latency, throughput, error rates, and status codes to Datadog for visualization and alerting.
Prerequisites
Before you begin, make sure you have:
-
A Datadog account
-
A Datadog API key (or the ability to create one)
-
A Leapwork Performance company with access to Settings → App Monitoring
-
At least one completed run in Leapwork Performance (for validation)
Create a Datadog API key
-
Open Organization Settings in Datadog.
-
Select API Keys.
-
Select New Key.
-
Copy the full API key immediately — you cannot retrieve it later.
Note: Leapwork Performance requires a Datadog API Key, not an Application Key. Use the Datadog site that matches your account region — for example,
datadoghq.com(US) ordatadoghq.eu(EU).
Add the Datadog connection in Leapwork Performance
-
Open Settings → App Monitoring in Leapwork Performance.
-
Select the Datadog APM provider tile.
-
Fill in the connection details using the values below.
-
Select Save.
Recommended values
|
Field |
Value |
|---|---|
|
Provider |
|
|
Connection name |
|
|
Site |
|
|
Description |
Optional |
|
API key |
Your Datadog API key |
|
Metric namespace |
|
|
Default tags |
Optional — for example, |
|
Enable automatic publishing |
|
Example stored configuration:
{
"site": "datadoghq.eu",
"apiKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"defaultTags": ["env:prod", "team:perf"],
"metricNamespace": "lp.run_results"
}
Understand how publishing works
Leapwork Performance publishes metrics to Datadog automatically when a run reaches a terminal state: Finished, Stopped, or Failed.
The backend checks whether your company has an enabled Datadog connection. If it does, Leapwork Performance sends metrics to:
https://api.<site>/api/v1/series
For example:
https://api.datadoghq.eu/api/v1/series
Metric catalog
Leapwork Performance publishes the following metric groups.
Per-step terminal metrics
These metrics are emitted for each step in each selected track item after a run completes.
|
Metric |
Description |
|---|---|
|
|
Total requests sent for the step |
|
|
Total failed requests for the step |
|
|
Total request body bytes sent |
|
|
Total response bytes received |
|
|
Minimum latency in milliseconds |
|
|
Average latency in milliseconds |
|
|
Median latency in milliseconds |
|
|
P90 latency in milliseconds |
|
|
P95 latency in milliseconds |
|
|
P99 latency in milliseconds |
|
|
Maximum latency in milliseconds |
Run-level summary metrics
These metrics are emitted once per run from the weighted summary data.
|
Metric |
Description |
|---|---|
|
|
Weighted run-wide average latency |
|
|
Weighted run-wide P90 latency |
|
|
Weighted run-wide P95 latency |
|
|
Weighted run-wide P99 latency |
|
|
Peak throughput for the run |
|
|
Run-wide error rate percentage |
|
|
Run duration in seconds |
|
|
Peak virtual users for the run |
Track-item summary metrics
These metrics are emitted from aggregated track-item statistics.
|
Metric |
Description |
|---|---|
|
|
Total sequences completed |
|
|
Throughput for the run or track item |
|
|
Current virtual users |
|
|
Number of alive agents |
|
|
Sequences still running |
|
|
Virtual User Minutes (VUM) consumed |
Historical timeseries metrics
These metrics are emitted from historical run_data graph points so Datadog can display the run over time.
|
Metric |
Description |
|---|---|
|
|
Requests over time for a track item |
|
|
Average latency over time for a track item |
Status-code breakdown metrics
These metrics are emitted from aggregated step status-code counts.
|
Metric |
Description |
|---|---|
|
|
Count of responses for a specific status code |
Tags added to metrics
Leapwork Performance adds tags to every metric so you can filter, group, and build dashboards.
Base tags
These tags appear on most or all published metrics.
|
Tag |
Description |
|---|---|
|
|
Leapwork Performance run ID |
|
|
Terminal run status |
|
|
Leapwork Performance company ID |
|
|
Project ID |
|
|
Timeline asset ID |
|
|
Timeline title |
Step-level tags
These tags appear on per-step metrics.
|
Tag |
Description |
|---|---|
|
|
Track item ID |
|
|
Step ID |
|
|
Step title |
|
|
Whether the track item was selected for the run |
Track-item and status-code tags
These tags appear where applicable.
|
Tag |
Description |
|---|---|
|
|
Track item geo location |
|
|
HTTP status code — for example, |
Default tags
Any default tags you configured on the connection are also attached. For example:
-
env:prod -
team:perf
Example metrics and tags
Per-step metric
metric: lp.run_results.latency.p95_ms
value: 821
tags:
run_id:r8_ynth
run_status:finished
company_id:v_smt_rpx
project_id:abc123
timeline_asset_id:new_timeline
timeline_name:new_timeline
track_item_id:track1
step_id:step_login
step_title:login
track_item_selected:true
geo_location:northeurope
env:prod
team:perf
Run summary metric
metric: lp.run_results.run.peak_throughput
value: 642
tags:
run_id:r8_ynth
run_status:finished
company_id:v_smt_rpx
project_id:abc123
timeline_asset_id:new_timeline
timeline_name:new_timeline
Track-item summary metric
metric: lp.run_results.track_item.vum_used
value: 150
tags:
run_id:r8_ynth
run_status:finished
company_id:v_smt_rpx
project_id:abc123
timeline_name:new_timeline
Timeseries metric
metric: lp.run_results.timeseries.latency.avg_ms
value: 412
timestamp: 1713701900
tags:
run_id:r8_ynth
run_status:finished
company_id:v_smt_rpx
project_id:abc123
timeline_name:new_timeline
track_item_id:track1
geo_location:northeurope
Status-code metric
metric: lp.run_results.status_code.count
value: 638
tags:
run_id:r8_ynth
run_status:finished
company_id:v_smt_rpx
project_id:abc123
timeline_name:new_timeline
track_item_id:track1
step_id:step_login
step_title:login
status_code:200
geo_location:northeurope
Validate that Leapwork Performance is publishing
Check Leapwork Performance logs
Look for log entries from RushRunner:
-
Success:
Published ... Datadog series for run ... -
Failure:
Failed to publish run ... to Datadog
Check Datadog API key usage
Open API Keys in Datadog. Your key should show usage after Leapwork Performance publishes metrics.
Check Datadog Metrics Explorer
Search for any of these metrics to confirm data is arriving:
-
lp.run_results.latency.avg_ms -
lp.run_results.run.latency.p95_ms -
lp.run_results.timeseries.requests_per_second -
lp.run_results.status_code.count
Create a Datadog dashboard
Create the dashboard
-
Open Dashboards in Datadog.
-
Select New Dashboard.
-
Enter a name — for example, Leapwork Performance Dashboard.
Recommended widgets
Widget 1 — Run P95 latency
-
Widget type:
Timeseries -
Metric:
lp.run_results.run.latency.p95_ms
Widget 2 — Run average latency
-
Widget type:
Timeseries -
Metric:
lp.run_results.run.latency.avg_ms
Widget 3 — Run peak throughput
-
Widget type:
Query ValueorTimeseries -
Metric:
lp.run_results.run.peak_throughput
Widget 4 — Run error rate
-
Widget type:
Query ValueorTimeseries -
Metric:
lp.run_results.run.error_rate_pct
Widget 5 — Step latency
-
Widget type:
Timeseries -
Metric:
lp.run_results.latency.p95_ms -
Group by:
step_title
Widget 6 — Status-code table
-
Widget type:
Top List,Table, orBar Chart -
Metric:
lp.run_results.status_code.count -
Group by:
status_code
Widget 7 — Track-item throughput over time
-
Widget type:
Timeseries -
Metric:
lp.run_results.timeseries.requests_per_second -
Group by:
track_item_id
Widget 8 — Track-item latency over time
-
Widget type:
Timeseries -
Metric:
lp.run_results.timeseries.latency.avg_ms -
Group by:
track_item_id
Recommended dashboard filters
Add dashboard template variables for:
-
run_status -
timeline_name -
project_id -
track_item_id -
geo_location -
status_code
Note:
run_idis high-cardinality and may not display well as a dashboard variable. Use it as a widget-level filter when investigating a specific run.
Example widget queries
Run P95 latency
avg:lp.run_results.run.latency.p95_ms{*}
Step P95 latency by step title
avg:lp.run_results.latency.p95_ms{*} by {step_title}
Requests per second by track item
avg:lp.run_results.timeseries.requests_per_second{*} by {track_item_id}
Status-code counts by code
sum:lp.run_results.status_code.count{*} by {status_code}
Understand graph differences
Leapwork Performance front-end graphs use custom scaling for some overlays. Datadog charts do not reproduce that scaling automatically.
Differences you may notice:
-
Leapwork Performance can scale latency and throughput independently on the same chart.
-
Datadog
Timeserieswidgets plot real metric values on the Y-axis. -
Two different units may look visually different in Datadog — this is expected.
To work around this:
-
Use separate widgets for latency and throughput.
-
Use Datadog formulas or normalization for visualization-only graphs.
Troubleshooting
Datadog connection is missing apiKey
Symptom: Publishing fails with an error about a missing API key.
Likely cause: JSON property casing mismatch or the API key was not saved in the connection configuration.
Fix:
-
Open the stored connection configuration.
-
Confirm it contains the
apiKeyproperty. -
Confirm the backend deserializes the configuration case-insensitively.
Metrics not visible in Datadog
Check these in order:
-
The Datadog connection is enabled in Leapwork Performance.
-
The Site value is correct — for example,
datadoghq.eu. -
The API key is valid.
-
A Leapwork Performance run has completed.
-
RushRunnerlogs show a successful publish.
Dashboard filter tags do not appear
Datadog does not always surface custom metric tags immediately.
Try these steps:
-
Complete another run in Leapwork Performance.
-
Wait a few minutes for Datadog to index the tags.
-
Reopen the dashboard variable editor.
-
Use widget-level tag filters if the dashboard variable still does not show the tag.