Performance and API plans

Date-range fetch vs filter, API plan tiers, open-task fetch toggle, and reuse settings.

Pulse minimizes API traffic while staying within provider rate limits.

Date range: fetch vs filter

User actionWhat Pulse does
Widen date rangeFetches the union range from Jira/ClickUp
Narrow within already-loaded rangeRecomputes metrics from cached tickets, no API calls
Compare to previous periodUses cached data when the previous period falls inside the loaded window. otherwise shows a small “comparison unavailable” note (no extra fetch)

The UI shows Filtering cached data… when narrowing. Loading metrics… when fetching.

API plan tiers

Set your subscription tier in config.yml. Defaults match free plans.

api:
  clickup_plan: free            # free | business | business_plus | enterprise
  jira_plan: free               # free | standard | premium | enterprise
PlanClickUp workersClickUp rate reserveClickUp req/min (docs)Jira search page sizeJira changelog workers
free (default)410100504
business / Unlimited610100--
business_plus12501,000--
enterprise1610010,000--
jira standard---1006
jira premium---1008
jira enterprise---10010

What this controls:

  • ClickUp workers, parallel list fetches and bulk_time_in_status batches
  • ClickUp rate reserve, pause when X-RateLimit-Remaining drops below this (adaptive throttling before 429)
  • Jira page size, issues per search page (100 on paid plans = fewer pages)
  • Jira changelog workers, parallel per-issue changelog fetches

If ClickUp returns 429 during sync, the dashboard shows a warning banner. Wait for the rate-limit window to reset, then refresh. On a paid ClickUp plan, set api.clickup_plan to match your workspace.

PULSE_CLICKUP_PARALLEL can only reduce workers below the plan cap (never raise it). PULSE_JIRA_CHANGELOG_WORKERS=0 (default) uses the plan default.

Skip open-task fetch (ClickUp)

metrics:
  clickup:
    fetch_open_tasks: false   # default true

When false, Pulse skips open-task list calls (~half of ClickUp list API traffic). Open bug backlog metrics become incomplete. a health warning appears in the UI.

Reuse toggles (performance)

All default on. Disable when squads need fully independent fetches or use different Jira field configs.

performance:
  reuse_fetch_window: true       # filter cached tickets when narrowing dates (no API call)
  reuse_api_responses: true      # TTL cache for Jira/ClickUp HTTP responses (see PULSE_CACHE_TTL_SECONDS)
  jira_shared_field_cache: true  # share /rest/api/3/field lookups across squads on the same site
SettingWhen true (default)When false
reuse_fetch_windowNarrowing the date range recomputes from memoryEvery date change refetches from the provider
reuse_api_responsesRepeat API calls within TTL return cached responsesEvery request hits Jira/ClickUp (slower, freshest)
jira_shared_field_cacheOne field lookup per Jira site + configured field namesEach squad fetch calls /rest/api/3/field separately

Set jira_shared_field_cache: false when squads use different custom_fields names and you want isolation. When true, the cache key includes the configured field names so "Story Points" and "T-Shirt Size" do not collide.

Restart Pulse after changing performance settings.

Shared Jira field metadata cache

When performance.jira_shared_field_cache is true (default), Jira custom fields (Story Points, Priority, etc.) are resolved via GET /rest/api/3/field. Pulse caches that response once per Jira site and field-name pair for PULSE_CACHE_TTL_SECONDS (default 300s), shared across squads on the same site, not one call per squad per load.