PerfCopilot
HomeDocs
Documentation

Everything you need to write a fair review.

From your first connection to a sealed, delivered review. Set up PerfCopilot, connect your tools, and generate your first cited draft.

15Five Goals

15Five calls their goal objects Objectives and nests Key Results inside each one. PerfCopilot maps these directly: Objectives become Goal rows, inline Key Results become GoalKeyResult rows.

What we pull

  • Objectives — fetched from GET /objectives/?owner=<user_id>. The endpoint uses Django REST Framework pagination (results array). Fields: name, description (capped at 1,000 characters), status, start_date/end_date, created_at.
  • Key Results — pulled from the nested key_results array on each Objective. Fields: id, name, status, target_value or target.

Status mapping:

| 15Five status | PerfCopilot | |---|---| | achieved, completed, done | completed | | behind, at_risk | at_risk | | needs_attention, off_track, missed | off_track | | on_track / anything else | on_track |

needs_attention maps to off_track — in 15Five's UX this status requires the most intervention, so it's treated as the highest-risk state.

Connecting

  1. Go to /admin?tab=integrations, find the 15Five card.
  2. Generate a Personal API key in 15Five: Settings → API → Personal API Keys.
  3. Enter the key in the integration card. The base URL defaults to https://my.15five.com/api/public.
  4. Map each employee's 15Five user ID in the unmapped-employees list.

What hits a review

Goals and Key Results appear in the [GOALS] block of the review prompt, with KRs nested under their parent Objective.

Troubleshooting

Zero objectives after sync: confirm the user ID matches the owner field in 15Five. The ID is numeric and can be found in the 15Five admin user list.

Key Results missing: KRs are pulled from the key_results array embedded in each Objective response. If 15Five's API changes the field name to something other than key_results, the walk will silently find nothing. Contact support if KRs exist in 15Five but don't appear in PerfCopilot.

401 errors: Personal API keys in 15Five may have expiration dates set by your admin. Check the key's expiry in 15Five → Settings → API → Personal API Keys.

Privacy notes

  • Objective descriptions are stored up to 1,000 characters and visible to managers.
  • Key Result target values are stored as strings and visible alongside KR status in the Goals tab.