Compensation Module
The Compensation module covers salary bands, compensation review cycles, comp change requests, equity, and pay-equity analysis.
Overview
The Compensation module provides:
- Salary Bands — define pay ranges by role/level, with a Sparko global band catalog to subscribe from
- Merit Cycles — company-wide compensation review cycles with recommendations and approval
- Comp Change Requests — one-off adjustments outside a cycle, with configurable multi-level approval
- Total Rewards — a rollup of base, bonus, and equity on the employee profile
- Pay Equity — ethnicity pay-gap analysis and a UK Gender Pay Gap report
- Equity — grants and vesting (see known limitations below — this area has open bugs)
Salary Bands
Navigate to Compensation > Bands to view and manage salary bands. Each band defines a min/mid/max range for a role and level.
Sparko global band catalog: rather than building bands from scratch, browse Sparko's market-benchmark catalog, subscribe to a band to track it, or replicate it as your own tenant-owned band you can then edit freely.
Opening a band
Click a band to see who sits in it. Each person shows their salary and compa-ratio against the band midpoint, and a dot on the range shows where they land.
You only see the people you already have permission to see. Anyone withheld is counted at the bottom rather than listed, so the headcount stays honest without naming them.
Market refresh
If Sparko has a market read for the band, the drawer says how far the band's midpoint sits from it. Accept shifts min, midpoint and max by the same ratio, so the band keeps its shape. The range widens in absolute terms as it moves up, which is what scaling a band means.
The market figure comes from the band's own stored market data when it has some, and from the Sparko catalog when it doesn't. If neither exists, no suggestion appears. Every accepted refresh is written to the compensation audit log with the old and new range and your reason.
Duplicating a band
Duplicate carries the band's ranges into the Create band form. A band is identified by its career path, level and location, so the copy has to land on a different one. Pick where it goes and save.
Job families
The Job families tab holds the list of families your bands can use. A band picks its family from this list rather than having one typed in, so the same family can't end up spelled three ways.
- Add family creates a new one.
- Rename changes it everywhere at once. Every band using the old name moves with it.
- Retire takes a family out of the picker without touching the bands already filed under it. Restore it any time.
- Delete is offered only for a family no band uses.
Each row shows how many bands use that family, and Filter bands jumps to them.
Merit Cycles
Navigate to Compensation > Cycles to run a company-wide compensation review.
- Create a cycle and set its budget envelope.
- Assign employees to salary bands if they aren't already.
- Managers submit merit recommendations for their reports.
- Recommendations are approved or rejected against the cycle.
- Approved changes apply to employee compensation.
A budget tab on the cycle shows spend as recommendations come in; per-department budget allocation surfaces only once recommendations have been aggregated — there isn't yet a standalone budget-planning tool you can build an allocation in ahead of a cycle.
Merit Review Worksheet
Managers work a cycle on the merit review worksheet, a grid of their team with one row per report, at /compensation/reviews/{cycleId}/worksheet. Each row shows the person's current salary, where that salary sits in its band (below, in-band, above midpoint, or above band), their latest review rating from the cycle, and an input for a merit percent or flat amount. As you type, Sparko fills in the new salary and the budget burn bar updates against the envelope HR set for the cycle.
- The worksheet needs the raw-pay grant. Every row on it is actual salary, and the band placement beside it reconstructs that salary from the midpoint, so the grid is only open to
compensation.employee.view_allor the admin-opt-incompensation.employee.view_team_full. A manager holding onlycompensation.employee.view_teambrowses the compensation roster with pay masked and does not see the worksheet at all; an admin grantsview_team_fullto the managers who run merit. (Masking the fields instead would leave the grid unable to do the one thing it is for.) - A manager sees only their own reporting subtree. The worksheet rejects any edit to someone outside it.
- Editing the worksheet stages recommendations only. It writes to the cycle's recommendation list, never to live pay. Actual salary changes still go through cycle approval and apply afterward.
- HR (with
compensation.merit.create) sets and adjusts the cycle budget envelope. Managers propose against it but cannot change it.
Guideline chip. Next to each row's rating, Sparko shows the standard merit percent for that rating — 6.0% for a 5, 4.0% for a 4, 3.0% for a 3, 1.0% for a 2, and 0.0% for a 1. Click the chip to drop that number straight into the row's merit input. It is a starting point you can overwrite, not a rule: the chip fills the field and nothing else, and a row with no rating shows no chip.
AI suggestion. On a Business plan, each row also carries a Suggest button, and the header carries Suggest with AI for the whole team. Sparko reads the person's band placement, rating, prior raises and what is left of the cycle budget, then proposes a percent with one line of reasoning. The suggestion sits beside your number as a chip: click it to fill the merit input, or leave it. It never changes a percent you already staged, and it never touches live pay. A team run works through the rows in the background, so keep the page open; the chips all appear once the run finishes.
Bulk edit by CSV. On a large team, click Export to download the current rows, edit the merit percent column in a spreadsheet, then upload it back. Before you commit, Sparko shows a dry-run diff: which rows it would add, update, leave unchanged, or skip (already-approved rows), with a warning on any new salary that lands over the band max. Apply writes the changes to staging in one pass. Rows outside your scope or with no compensation on file are reported as errors rather than applied.
Outcome Letters
Once a raise is approved and applied, generate the employee's compensation outcome letter from the worksheet. Sparko fills a letter template with the person's outcome (new salary, effective date, and the like) and lists the generated letters for the cycle so you can review before sending.
- Templates are managed by HR (
compensation.merit.create). The merge fields a template can use are validated against an allowlist, so a template cannot pull in fields it should not. - Generating and sending letters is scoped to your team the same way the worksheet is. Generate one letter at a time from an approved change, or generate for the whole cycle to draft a letter for every approved raise in your scope at once.
- A letter can be AI-assisted (Sparko drafts the wording) or template-only. Send delivers it to the employee; once delivery succeeds the letter is frozen as Sent, a permanent record.
- If delivery does not go through, the letter shows No email on file (the employee has no address to send to) or Send failed (a delivery problem). Either way the button becomes Retry so you can send again once it's fixed.
Editing letter templates
Open Letter templates from the Outcome letters section of the merit worksheet. The page lists every active template on the left and opens the selected one in an editor on the right.
Each template has four parts:
- Template name for your own reference in the list.
- Applies to reason ties the template to one change reason (promotion, market adjustment, retention, and so on). Leave it on Every reason to make it the fallback. Exactly one template is the default at a time, so setting a new one clears the previous.
- Subject is the email subject line.
- Body is the letter itself.
Subject and body can both contain merge fields written as {{field_name}}, which are replaced with the employee's real figures when a letter is generated. Thirteen fields are available:
| Field | Fills in with |
|---|---|
{{employee_name}} |
The employee receiving the letter |
{{manager_name}} |
Their manager |
{{company_name}} |
Your company name |
{{job_title}} |
Their job title |
{{cycle_name}} |
The merit cycle the change belongs to |
{{reason}} |
The change reason in words, for example "merit increase" |
{{effective_date}} |
When the new salary takes effect |
{{currency}} |
The currency code |
{{current_salary}} |
Salary before the change |
{{new_salary}} |
Salary after the change |
{{increase_amount}} |
The change in money |
{{increase_percent}} |
The change as a percentage |
{{band_name}} |
Their salary band |
Click any field in the toolbar under the body to insert it at your cursor. Fields already used in the template are highlighted. If you type a field name that is not on the list, Sparko says so and blocks saving, so a misspelled field can never reach a real letter.
Preview letter opens the letter as an employee would read it, with merge fields filled in. It renders whatever is in the form at that moment, including edits you have not saved yet, so you can check your wording before committing. The figures shown are sample values for illustration, not any real person's pay. Close the preview with Esc or by clicking outside it.
Saving a template only affects letters generated from that point on. Letters already generated keep the wording they were created with, so an edit today never rewrites a letter someone received last week.
Comp Change Requests
For adjustments outside a merit cycle (e.g. a promotion, a market adjustment), submit a Comp Change Request.
- Requests move through submit → advance → approve/reject → apply (or can be withdrawn before a decision).
- The approval chain is frozen as a snapshot at submission time, so a later reporting-line change doesn't retroactively change who was supposed to approve it.
- Configurable approval policy: your admin sets 1–5 approval levels, whether to use the full reporting chain, whether VP-and-above changes require CEO/CFO sign-off, and designated HR/Finance approvers.
Compensation Anomaly Inbox
Sparko scores every active employee nightly against four pay-anomaly signals — low compa-ratio, level mismatch, peer gap, and long tenure without a comp change (a fifth, in-demand-skills, is coming) — and surfaces the ones that need attention as a "Needs your attention" inbox. It appears in two places:
- Compensation > Dashboard — company-wide for HR admins, your reporting subtree if you're a manager.
- My Team > Compensation tab — pre-filtered to your team.
Each anomaly shows the employee, the signal, and a short factual reason (for example the compa-ratio against the band midpoint). Take action offers three acknowledgements, all recorded with your name, timestamp, and optional note in the compensation audit trail:
- Defer until year-end review — hidden until December 31, when it re-surfaces for year-end review with its latest nightly scoring.
- Remind me later — snoozed for 30 days, then re-surfaces with its latest nightly scoring.
- Dismiss — hides it from the inbox permanently; the nightly engine won't re-open a dismissed signal.
The open-anomalies count on the dashboard stat tile matches what's in your inbox at your visibility scope.
Pay Transparency
Your admin sets a company-wide compensation transparency tier controlling what employees can see about their own pay: off, band name/level only, numeric range (min/mid/max), or full position-in-range. This is enforced on the employee's own compensation view.
Posting jurisdictions on a job
Several places require a job advert to publish its salary range. Sparko applies that rule automatically from the jurisdictions you tag on the posting.
The control lives on Recruiting › Jobs › Create job and on the job's Edit page, in both cases directly below the Salary band fields. Posting jurisdictions is a multi-select (hold Command or Ctrl to pick several) grouped into three lists:
- United States · salary range required by law — California, Colorado, New York, Washington
- European Union · salary range required by law — the 27 member states
- United States · other — every remaining state and DC
As soon as you pick at least one, a banner appears under the field:
- Pick a jurisdiction from either "required by law" group and the banner shows the exact range candidates will see, using the salary min and max you entered. If you have not entered both figures yet, it says so and names the jurisdictions forcing the disclosure.
- Pick only jurisdictions from the "other" group and the banner says the range is not legally forced, so whether it appears follows your company pay transparency setting.
Tagging a covered jurisdiction publishes the range whatever the company setting says. That is the law, not a Sparko preference, so the setting cannot switch it off.
Changing the selection on the Edit page and saving applies the new rule to the live posting immediately. Clearing every jurisdiction removes the tags, and the range then follows your company pay transparency setting alone.
Total Rewards
Each employee's profile includes a Total Rewards view that rolls base salary, bonus, and equity value into one picture. Open the employee's Compensation tab to see it. A Print statement button on the Total Rewards card opens a clean, printable Total Rewards statement covering cash and equity, which the employee or HR can print or save as a PDF from the browser.
Compensation access history
Compensation figures are among the most sensitive data in Sparko, so every time someone decrypts an employee's pay values Sparko records who looked, at which fields, and when. This read log surfaces in two places:
- For the employee: an Access history card on your own profile's Compensation tab shows a plain-language log of who viewed your compensation data (for example "Compensation details viewed," "Bank details viewed," or "Payroll export"), with the date. If no one has viewed it recently, it says so.
- For HR: anyone with company-wide compensation access can pull the same access log for a given employee. This supports data-access requests (GDPR Article 15) and periodic access reviews.
This log is a record of who read pay data, not who changed it. Edits to compensation are tracked separately in the compensation audit trail.
Pay Equity
Open Pay Equity from the Compensation Hub, or from the "More people analytics" cards on People Analytics (the page lives at /analytics/pay-equity). It gives you:
- Ethnicity pay gap — median pay comparison across ethnicity groups.
- UK Gender Pay Gap report — formatted for the UK's statutory reporting fields (median/mean hourly pay gap, quartile pay bands).
Known limitation: the UK report's quartile pay-band breakdown isn't fully implemented yet (it currently returns placeholder values), and there's no bonus-gap metric. Don't submit this as a finished statutory UK GPG filing without checking the quartile numbers by hand.
Equity
Navigate to Compensation > Equity to view and grant equity.
- Portfolio stats — employees with equity, outstanding fair value, percent vested, and grants made this year, all computed from your active grants.
- Active grants table — each grant's type (ISO/NSO/RSU and legacy option types), shares, fair value, vesting progress, and schedule. Click a row for the full grant summary including the tranche-by-tranche vesting schedule.
- Vesting milestones rail — upcoming vest events over the next 180 days, with a 30-day value/headcount summary, derived from each grant's vesting schedule and fair market value.
- Grant equity — pick the employee, grant type, shares, and per-share fair value; choose one of the vesting templates your admin manages under Admin Settings (with an optional cliff override) and a vesting start date.
Known limitation: there's no way to cancel an equity grant from the UI yet — ask your Sparko contact if you need a grant cancelled.
Payroll Run (pay + bank export, payslips)
Sparko doesn't run statutory payroll (no tax or CPF/social contribution calculation). It does produce a Payroll Run — a per-period export of each employee's gross pay plus their bank payment instructions that you hand to your own bank or accountant, and a payslip that itemizes earnings and any deductions your company entered.
Find it under Compensation › Payroll Run (HR Admin only).
- Gross pay = base pay for the period ÷ pay frequency + recurring pay components (allowances, pension, gratuity — set per employee on their Compensation tab) + any bonuses paid in the period.
- Each run reviews the changes since last period: joiners, leavers, compensation changes, and anyone missing verified bank details.
- Bank details live on each employee's profile (Personal Info). Employees enter their own; an HR Admin verifies them. A run only pays verified accounts.
- Paying entities (the legal employer that pays each employee) are managed under Admin › Compensation › Payroll. Each run groups pay and bank files per entity and currency. How many you can create depends on your plan: 1 on Core, 5 on Growth, 20 on Business, unlimited on Custom.
- Pay date is an optional field on a draft run, set before you finalize.
- Download the files as CSV, SG GIRO, ACH/NACHA, or SEPA (pain.001). Finalizing a run freezes it so re-downloads are identical.
Deductions
An employee's Compensation tab has a Deductions card alongside pay components. HR enters deductions there, for example a loan repayment or a benefits contribution. Sparko doesn't calculate tax or statutory contributions and never will, deductions are just amounts your company tells Sparko to enter. They flow into that person's next payslip as line items.
Payslips
Finalizing a run files a Payslip PDF for each person in it. Payslips appear in the employee's own Documents tab on their profile shortly after processing, so they keep a durable record of what they were paid for the period. If any payslip cannot be generated, whoever finalized the run is notified.
- It's letterheaded with the paying entity's legal name and registration number.
- It lists each item that made up the period's gross pay (base, allowances, bonuses, one-offs), any deductions entered for that employee, the pay date if one was set, and the last 4 digits of the account it was paid to.
- Net pay on the payslip is gross minus the deductions entered for that period. Sparko holds no tax or statutory contribution data, and the payslip says so on its face, this is not a substitute for a statutory payslip in jurisdictions that require one.
- The employee can see and download their own payslip. Managers cannot see their reports' payslips.
- Payslips are generated in the background just after the run is finalized, so they appear a moment later.
- Payslips can't be deleted from the Documents tab. Re-queueing generation for the run replaces them instead.
- Older Earnings Statements (gross pay only, no deductions or pay date) stay in the Documents tab as they were filed. The next time that run's generation is re-queued, its statement upgrades to a full payslip in place.
Known Limitations (summary)
- No bulk import for compensation data (salary, equity, bonus history) — enter it one employee at a time for now. (Pay + bank data export is available via the Payroll Run above.)
- No standalone Compensation Planning / budget-allocation page — budget visibility is a tab inside each merit cycle.
- Equity grants can't be cancelled from the UI yet.
- Payslips reflect deductions your company enters by hand. Sparko does not compute tax or CPF/social contributions, and doesn't validate that entered deductions are correct or complete for your jurisdiction.
Related guides
- People Module — employee directory, profiles
- Performance Module — reviews inform merit recommendations
Still need help? Reach us at [email protected].
← Back to Help Center