The 15–20 second delta you’re seeing isn’t purely a standard vs. custom metric distinction — it’s primarily about where and when the computation happens.
Why standard metrics are faster
Standard metrics (total opportunities, win rate, etc.) are pre-aggregated at ingestion time and stored as materialized values in Adobe’s reporting layer. The API is essentially doing a lookup with filters, not a calculation. Custom metrics that require multi-level aggregation, cross-dimensional joins, or weighted calculations are computed at query time against raw or partially rolled-up data. That’s the architectural reason for the gap.
Criteria Comparison
| Criteria |
Standard Metrics |
Custom Metrics (Query-time) |
Pre-computed Custom (ETL/Workspace) |
| Response time |
<2 sec (pre-aggregated) |
10–25 sec typical |
Near-standard, depends on refresh cadence |
| Flexibility |
Fixed definitions |
Fully customizable |
Customizable at build time |
| Maintenance overhead |
None |
Low |
High (pipeline ownership) |
| Data freshness |
Near real-time |
Near real-time |
Lag = ETL frequency |
| Complex logic support |
Limited |
High |
High |
| API payload complexity |
Simple |
High (segment stacking, inline calc) |
Simple (reads pre-built metric) |
Structural issues to investigate first
Before accepting the performance hit as inevitable, check your query structure:
- Segment stacking: Each nested segment in a custom metric compounds processing. Flatten where possible.
- Date granularity: Pulling day-level granularity when the dashboard only needs month-level forces unnecessary row expansion before aggregation — verify in your version whether
granularity parameter affects calc scope.
- Metric dependencies: If “pipeline velocity” references another calculated metric, you may be triggering chained resolution. Decompose into atomic components and combine at the application layer instead.
limit and page parameters: Large result sets without pagination force full computation before response. Paginate aggressively.
// Example: paginate to reduce compute surface per call
{
"globalFilters": [...],
"metricContainer": { "metrics": [...] },
"settings": {
"limit": 50,
"page": 0
}
}
Architectural alternatives
Option 1 — Application-layer calculation: Pull atomic standard metrics via API, compute “pipeline velocity” and “weighted opportunity value” in your dashboard backend. Keeps API calls fast; shifts CPU to your infrastructure.
Option 2 — Scheduled export + cache: Use the Reporting API on a scheduled job (hourly/nightly), store results in a lightweight data store (Redis, Postgres), and serve dashboards from cache. Eliminates user-facing latency entirely at the cost of freshness lag.
Option 3 — Adobe Customer Journey Analytics (if licensed): CJA’s architecture handles complex calculated metrics more efficiently through its columnar store — verify in your version whether this applies to your specific calculation types.
The right balance depends on context / your requirements — specifically your tolerance for data latency vs. dashboard interactivity, and whether you own the infrastructure to support an application-layer or caching approach.
This draft is based on general Adobe Experience Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.