Linking people to their GitHub and GitLab accounts
Last updated: October 27, 2026
Span credits pull requests to a person through the GitHub or GitLab usernames on their Span profile. This article covers how Span matches accounts, how to add or fix usernames, and how to resolve "account already assigned to another person" errors.
Why it matters
A missing or wrong username means a person's pull requests don't count toward them or their team. One username on two profiles is blocked, and a bot mapped to a person inflates their numbers. Getting the mapping right is the first step to metrics people trust.
How it works
Span keeps a map from each tool's account to a person in your Span roster.
Account type | How Span matches it |
|---|---|
Accounts keyed by email: Jira, Linear, Azure DevOps, calendars, Cursor, Slack | Automatically, by matching the account's email to the person's email (not case-sensitive) |
GitHub and GitLab logins | By the usernames on the person's profile |
Commits | Through the commit author email. GitHub links a commit to an account when that email is verified on the account, and Span then follows the account's username mapping. |
Where usernames come from
Manual entry on the person's profile in Settings → People Management.
Your roster source: an HR system, the Span Sync API, or a CSV import can include Git usernames.
The Data Quality drawer: lists Git contributors who don't match anyone yet.
A weekly GitHub lookup (github.com only): for people with no GitHub username, Span searches your connected GitHub organizations for recent commits authored with the person's Span email and adds the matching username. It skips usernames that already belong to someone. Span turns this on for your organization on request.
Setup
Add or fix a person's usernames
Go to Settings → People Management and open the person.
Make sure the person is set to Contributor. The username fields only appear for Contributors.
In GitHub Usernames (or GitLab Usernames), add each login the person uses. Type the handle exactly as GitHub or GitLab shows it, with no leading
@.Save. The change shows in metrics after the next sync, about 2 hours.
The GitHub Usernames field appears once GitHub is connected, and GitLab Usernames once GitLab is connected. You need permission to edit people in People Management.
Handle new contributors in Data Quality
In People Management, click the Data Quality Issues badge when it appears.
Under New Contributors, each unmatched login shows when it started contributing.
Choose Add person to create a new person with that login, or Ignore to dismiss it.
If the login belongs to someone already in Span, don't use Add person. Add the login to that person's GitHub Usernames instead, so you don't create a duplicate.
Things to know
"GitHub account already assigned to another person: name@company.com" means the username is already on another profile. Span allows each login on only one person. Open the profile named in the message, remove the username there, save, then add it to the right person.
One person can have several logins. Add every handle someone uses, such as a work account and a personal account, to the same profile. If you only add one, PRs from the other don't count.
Worked example. Priya opens PRs as
priya-acmeand occasionally aspriyadev. Her profile lists onlypriya-acme, and last month she merged 8 PRs, 2 of them aspriyadev, so Span shows 6. Addingpriyadevgives her all 8 after the next sync. Ifpriyadevwas on a duplicate profile someone created from Data Quality, Span blocks the add until you remove it from that profile.Commits need a verified email. If a person's PRs count but their coding time or other commit metrics are blank, their commit email probably isn't verified on their GitHub account. See Troubleshooting GitHub Data Quality.
Keep bots off people. Don't add bot or CI logins to a person. Add them to Ignore Git Usernames in Settings → Metrics, or track AI agents under Agent Management.
Adding a Git username through your roster source marks the person as a Contributor, and the flag stays if the username is later removed. Change it by hand if needed.
Syncing usernames for more than one Git host? If you send usernames through the Span Sync API and have more than one Git host connected (for example GitHub and GitLab), send them in
vcsUsernamesByPlatform, keyed by host. The oldervcsUsernameslist is rejected in that case.
Related articles
Troubleshooting GitHub Data Quality
What determines contributor status in Span user profiles?
People Data & Roster Management
CSV Import of People + Team Data
Need help?
Contact your Span account team or reach out to support@span.app.