Appendix G — Status reference
Every record in Operentra that moves through a workflow carries a status. This appendix lists, for each of those records, every status the product stores, the English label the screens show for it, what it means, and the action or scheduled job that puts a record into it. A "Flow" line after each table shows the normal path, then the side exits.
Read the tables this way:
- Status (as shown) is the English label on the screen. Where the admin screens and the employee portal word it differently, both are given. "(shown raw)" means no screen has a label for it, so the stored value appears as-is.
- Value is what the database stores. You see it in exports and in the public API.
- Reached by names who or what sets the status. "Automatic" means no one clicks anything: the system sets it as a consequence of another action, or a scheduled job sets it.
Statuses that nothing in Operentra sets are left out.
Status flows by record
Employee
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| New (Pending Activation) (portal: New) | new | The record exists, but the person is kept out of payroll, attendance, leave accrual and headcount. | Every new employee starts here, whether HR adds them or recruitment converts a candidate. A rehired former employee returns here too. |
| Active | active | The person is a working employee. | Activation, which happens when the employee accepts their contract in the portal, when HR uploads a signed copy of the contract, when HR picks Active on the profile Status control of a New employee, or when HR uses bulk activation on the Employees list. Activation also opens the pro-rata leave balance. HR can also set Active on the Status control from On Leave or Suspended, and from Terminated, Resigned or Retired (which also clears the separation date). |
| On Leave | on_leave | HR has marked the person as away. | HR picks it on the Status control of an Active or Suspended employee. Approving a leave application does not set this. Approval writes On Leave into the daily attendance days, not into the employee status. |
| Suspended | suspended | Temporarily suspended. | HR picks it on the Status control of an Active or On Leave employee. |
| Terminated | terminated | Employment ended by the company. | Nothing sets it any more. Only older records carry it, set by hand when the Status control still offered it. |
| Resigned | resigned | The employee left of their own accord. | As Terminated. |
| Retired | retired | The employee retired. | As Terminated. |
| Separated | separated | Offboarding is finished and the final settlement is done. | Automatic: set when HR clicks Complete Settlement on the offboarding record. Final: the Status control offers no status from it, only Rehire. |
Flow: New (Pending Activation) → Active → Separated (through offboarding and Complete Settlement), and Separated → New (Pending Activation) only through Rehire, which starts a new employment on the same record with a new joining date and keeps the earlier one. Side moves, made by HR on the Status control: Active ↔ On Leave, Active ↔ Suspended, On Leave ↔ Suspended. An older Terminated, Resigned or Retired record can go back to Active or be offboarded. No status pick returns to New, and no leaving status can be picked by hand: the Status control offers Start offboarding instead. Editing the employee never changes the status, and the public API cannot set it.
Note: starting an offboarding separation does not change the employee status. The status changes only when Complete Settlement runs.
Contract
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Draft | draft | The contract has been drawn up but is not in force. | HR creates a contract. |
| Active | active | The contract is in force. | HR activates a Draft contract (this also issues the appointment letter automatically). Renewing a contract also creates a new contract that starts directly as Active. |
| Expired | expired | The term has ended. | Automatic: an hourly job (minute 50) expires an Active contract once its end date is before today in the company's own time zone. A company with no time zone set is skipped. Complete Settlement also sets Expired when the separation type is End of Contract. |
| Terminated | terminated | The contract was ended early. | HR terminates an Active contract. Complete Settlement also sets Terminated for any separation type other than End of Contract. The hourly job applies the same rule to employees who were settled before this rule existed. |
| Renewed | renewed | The contract was replaced by a renewal. | HR renews an Active or Expired contract. The old contract becomes Renewed and a new Active contract is created. |
Flow: Draft → Active → Expired or Renewed. Side exit: Active → Terminated.
Note: when the employee accepts the contract in the portal, or HR uploads a signed copy, the contract's status does not change. Either action activates the employee.
Leave application
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Waiting for a decision. | The employee applies for leave. |
| Approved | approved | Leave granted. The balance is used, and every day in the range is written into attendance as On Leave. | An approver with leave approval rights approves the application. The approver must be in scope for the employee and cannot approve their own request. |
| Rejected | rejected | Leave refused, with a reason. | An approver rejects a Pending application. |
| Cancelled | cancelled | Withdrawn by the employee. | The employee cancels their own application. They can cancel a Pending application at any time, or an Approved one only if it has not started yet. Cancelling an Approved application gives the days back to the balance and resets those attendance days to Not Marked. |
Flow: Pending → Approved. Side exits: Pending → Rejected. Pending or Approved (not yet started) → Cancelled.
Attendance regularisation and overtime request
Both request types use the same three statuses and the same labels.
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Waiting for a decision. | The employee submits a regularisation (a corrected status or corrected times for one day) or an overtime request. Only one Pending request is allowed per employee per day. |
| Approved | approved | Accepted. | An approver approves it. The approver must be in scope and cannot decide their own request. An approved regularisation overwrites that day's attendance with the requested status and times, and records what the day showed before. Overtime only: if Attendance Settings require overtime approval and auto-approve is on, the request is created already Approved, with no approver recorded. |
| Rejected | rejected | Refused. | An approver rejects it. |
Flow: Pending → Approved. Side exit: Pending → Rejected. Neither request type can be cancelled.
Attendance day statuses (Daily Attendance)
Daily Attendance shows two kinds of day. Stored days have a saved attendance record. Synthesized days have no record, so the screen works out a status from the calendar. Synthesized statuses are never saved. If a stored day also falls on a holiday or a weekly off-day, the screen adds a small Holiday or Weekend tag beside the main status.
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Present | present | Worked, on time. | Stored. Set when the employee clocks in within the grace period (portal, geo or biometric punch). Also set by the daily auto-present job, which runs at 00:30 company time and marks the previous day for staff on an Auto-Present shift; by HR marking the day; by the bulk upload; and by an approved regularisation. A clock-out that arrives with no clock-in also creates a Present day. |
| Late | late | Clocked in after the grace period. | Stored. Set automatically from the clock-in time (first late threshold), or by HR marking, the bulk upload or a regularisation. |
| Early Leave | early_leave | Left before the shift ended, beyond the grace period. | Stored. Set when the clock-out time is graded: when HR marks the day with times, when biometric punches are merged, when a shift change re-grades past days, or through the bulk upload or a regularisation. A clock-out from the portal or a geo punch records the early minutes but does not change the status. |
| Half Day | half_day | Counted as half a day. | Stored. Set automatically when lateness or early leaving passes a threshold whose action is Half Day, or by HR marking, the bulk upload or a regularisation. |
| Absent | absent | Did not work. | Stored: a threshold whose action is Absent, HR marking, the bulk upload or a regularisation. Synthesized: any past working day with no record, no approved leave and no exempt shift. |
| On Leave | on_leave | On approved leave. | Stored: written for every day of a leave application when it is approved. Synthesized: a day with no record that falls inside an approved leave. |
| Holiday | holiday | A public or company holiday. | Stored: the auto-present job (Auto-Present shifts) or HR marking. Synthesized: a day with no record that is a holiday. |
| Weekend | weekend | The employee's weekly off-day. | Stored: the auto-present job (Auto-Present shifts) or HR marking. Synthesized: a day with no record that is a weekly off-day, or the substitute rest day of a rest-day swap. |
| WFH | work_from_home | Worked from home. | Stored only: HR marking, the bulk upload or a regularisation. |
| Comp Off | compensatory_off | Compensatory day off. | Stored only: HR marking, the bulk upload or a regularisation. |
| Not Marked (portal: Pending) | not_marked | No attendance yet. | Synthesized: today, with no record yet. Stored: the days of an approved leave revert to Not Marked when the leave is cancelled. HR can also mark a day Not Marked. |
| Upcoming | upcoming | A future day. | Synthesized only: any day after today. |
| Exempt | exempt | No punch required. The day counts as worked. | Synthesized only: a working day with no record for an employee whose shift uses the Punch Not Required mode. |
When the calendar decides a synthesized status, the first rule that applies wins: Holiday, then Weekend, then On Leave, then Exempt, then Absent (a past day), then Not Marked (today), then Upcoming (a future day).
Flow (a normal working day): Upcoming → Not Marked (today) → Present or Late at clock-in → possibly Early Leave or Half Day when the day is graded → Absent if the day passes with no record.
When the day is graded, the most severe status wins: Absent, then Half Day, then Late or Early Leave, then Present. Punches never overwrite On Leave, Holiday, Weekend, WFH or Comp Off, and never overwrite a day HR has locked with Force.
Payroll run
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Review (portal: Under Review) | review | Calculated and open for checking. It can be reprocessed. | HR clicks Process Payroll for a month. Reprocessing a Review run keeps it in Review. |
| Approved | approved | Signed off. Nothing is committed yet. | HR approves a Review run. Approval is refused while the pre-flight check finds a blocker. |
| Locked | locked | Closed. Entries are final, bonuses and adjustments are marked paid, loan instalments are settled, and expense claims become Paid. | HR clicks Lock on an Approved run. A run is also locked automatically when HR records any payment on it while it is Approved. Runs created by the salary-history CSV import start as Locked. |
| Disbursed | disbursed | Salaries have been paid out. | HR clicks Mark as Paid for the whole run (this sends the acknowledgment-request emails), or Finalize Run when every entry already has payment details (this sends no emails). Both work on an Approved or Locked run; an Approved run is locked first. |
Flow: Review → Approved → Locked → Disbursed. Side move: Approved → Review (Send back to review). A Locked or Disbursed run can no longer be reprocessed.
Salary slip acknowledgment
The slip has no status field of its own. What the screens show comes from two dates on the payroll entry: when it was paid, and when the employee acknowledged it.
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Unpaid (portal: Awaiting payment) | no paid date | The salary has not been recorded as paid. | The initial state after processing. Also reached again when HR uses Clear payment on the entry, or when the cheque that paid it bounces or is cancelled. Either way, any acknowledgment already given is cleared too. |
| Awaiting Ack (portal: Action Needed) | paid date set, no acknowledgment date | Paid, and waiting for the employee to confirm receipt. | HR records payment: Mark as Paid for the run, payment for a single entry, or issuing a cheque from the Cheque Register. The acknowledgment-request email goes out unless HR turns emails off. A daily job, shortly after 09:00 in the workspace's time zone, sends at most two reminders, about 2 days and 5 days after the first email. |
| Acknowledged | acknowledgment date set | The employee confirmed receipt. | The employee clicks Acknowledge Receipt in the portal. The time and IP address are recorded, and the signed PDF slip is emailed to them. |
Flow: Unpaid → Awaiting Ack → Acknowledged. Side move: back to Unpaid through Clear payment or a bounced or cancelled cheque.
The entry also stores calculated (after processing) and finalized (after lock or payment), but no screen shows those values.
Loan and loan instalment
Loan
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Waiting for a decision. | The employee applies in the portal. Loans are not available to employees whose loan eligibility is switched off. |
| Active | active | Being repaid through payroll. | An approver approves a Pending loan. The approver cannot approve their own loan. |
| Paused | paused | Repayment stopped. | HR clicks Pause on an Active loan's page. Its Upcoming instalments that no processed run has claimed become Skipped. |
| Completed | completed | Fully repaid. | Automatic: set when a payroll lock settles the last instalment. Resume also completes a loan that has nothing left to collect. |
| Rejected | rejected | Refused, with a reason. | An approver rejects a Pending loan. |
Flow: Pending → Active → Completed. Side exits: Pending → Rejected. Active → Paused, and back to Active with Resume.
Loan instalment
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Upcoming | upcoming | Not yet recovered. | Every instalment is created as Upcoming when the loan is applied for. An instalment also returns to Upcoming when the run that claimed it is reprocessed, and when HR resumes a paused loan: an instalment whose month passed while the loan was paused moves to the end of the schedule, and the instalments are renumbered. |
| Paid | paid | Recovered through payroll. | Automatic: payroll processing claims the instalments of Active loans whose month is now or earlier, and locking the run marks them Paid. An instalment claimed before the loan was paused is still marked Paid when its run is locked. |
| Skipped | skipped | Not recovered while the loan is paused. | Automatic: set when HR pauses the loan, on Upcoming instalments that no processed run has claimed. |
Flow: Upcoming → Paid. Side move: Upcoming → Skipped when the loan is paused, and back to Upcoming when it is resumed.
Expense claim
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Draft | draft | Being prepared. Only the employee sees it. | The employee saves a claim without submitting it. Only Draft claims can be edited. |
| Awaiting Manager | submitted | Waiting for the reporting manager. | The employee submits, either when creating the claim or from a Draft. |
| Awaiting HR | manager_approved | The manager approved it. Waiting for HR. | The employee's reporting manager approves it. |
| Approved | approved | HR approved it, and the reimbursement is queued as a non-taxable payroll addition in the first open payroll month. | HR approves it, from Awaiting Manager (HR override) or from Awaiting HR. |
| Paid | paid | Reimbursed through payroll. | Automatic: set when the run that paid the reimbursement is locked, marked as paid or finalized. |
| Rejected | rejected | Refused, with a reason. | The reporting manager rejects it while it is Awaiting Manager, or HR rejects it while it is Awaiting Manager or Awaiting HR. |
| Cancelled | cancelled | Withdrawn by the employee. | The employee cancels their own claim from Draft, Awaiting Manager or Awaiting HR. |
Flow: Draft → Awaiting Manager → Awaiting HR → Approved → Paid. Side exits: Awaiting Manager → Approved (HR skips the manager step). Rejected (from Awaiting Manager or Awaiting HR). Cancelled (before HR approval).
Separation and clearance (offboarding)
Separation (clearance status)
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | No checklist item is done yet. | HR opens a separation. The default checklist is created with it. Only one open separation is allowed per employee. |
| In Progress | in_progress | Some checklist items are done or waived. | Automatic: recalculated every time a checklist item changes or the record is opened. |
| Ready to Settle | completed | Every item is done or waived (the Provident Fund item is not required here). | Automatic: the same recalculation. HR is emailed when it is first reached. |
| Settled | settled | Final settlement is done. The employee becomes Separated, and their Active contract is closed. | HR clicks Complete Settlement on a Ready to Settle separation. Nothing can be edited after this. |
| Cancelled | cancelled | The separation was abandoned. | HR cancels any separation that is not Settled. |
Flow: Pending → In Progress → Ready to Settle → Settled. Side exit: Cancelled (from anything except Settled).
Clearance checklist items
Items have no status label. The screen shows a tick for done, an extra "waived" tag for waived items, and an "auto" tag for items the system checks. Stored values: pending (open), completed (HR clicks Mark done on a manual item; automatic items complete themselves once there are no outstanding assets or loans, or once the Provident Fund option is chosen at settlement; the Provident Fund item is only on the checklist of someone with a provident fund, and an older separation that lists it for someone without one shows it as done), and waived (HR clicks Waive; Reopen sets the item back to pending).
Onboarding pipeline
Pipeline
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Preparing | preparing | Created before the joining date. | Automatic: created with every new employee whose joining date is in the future. |
| Day 1 | day_1 | The joining date has arrived. | Automatic: the starting status when the joining date is today or earlier. A Preparing pipeline becomes Day 1 the first time it is opened, or a task on it is changed, once the joining date has passed. |
| Completed | completed | Every required task is done or waived. | Automatic: set as soon as the last required task is done or waived. HR is emailed. A Completed pipeline cannot be reopened. |
| Cancelled | cancelled | Closed early. | HR cancels the pipeline, or Complete Settlement cancels it when the employee leaves with it still open. |
Flow: Preparing → Day 1 → Completed. Side exit: Cancelled.
Onboarding tasks
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Not done. | Every task starts here. HR's Reopen sets a task back to Pending. |
| Done | completed | Done. | HR marks it done. A system-action task (for example, push to biometric device or send the welcome email) is marked Done when its action succeeds. Automatic checks also mark Done the tasks whose work is already finished elsewhere, such as a salary already assigned or an asset already issued. |
| Waived | waived | Skipped on purpose, with an optional note. | HR waives it. |
| Blocked | blocked | A system action failed. The failure message is kept as the task's note. | Automatic: set when a system-action task's action fails. |
Appraisal cycle and appraisal
Appraisal cycle
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Draft | draft | Set up, but not rolled out. | HR creates a cycle. |
| Active | active | Rolled out. Reviews are under way. | Automatic: set on the first roll-out of a Draft cycle. Probation review cycles are created directly as Active. |
| Closed | closed | Finished. Nothing in it can be edited, reviewed or finalized. | HR closes the cycle. A Closed cycle cannot be reopened. |
Flow: Draft → Active → Closed.
Appraisal (one per employee in a cycle)
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Waiting for the employee's self review. | Created by the roll-out, or for a probation review, when self review is enabled in Appraisal Settings. |
| Self Review (Draft) | self_in_progress | The employee has saved a draft of their self review. | The employee saves a self-review draft. |
| Awaiting Manager | self_done | Waiting for the reviewer. | The employee submits their self review while manager review is enabled. Created at this status by the roll-out when self review is off but manager review is on. Also set when HR changes the reviewer while the old reviewer's draft was in progress. |
| Manager Review (Draft) | manager_in_progress | The reviewer has saved a draft. | The reviewer saves a draft after the self review has been submitted. |
| Awaiting Finalization | manager_done | The reviews are in. Waiting for HR. | The reviewer submits, at any point before this status (a reviewer's submission closes the self review even if the employee had not finished it). Also reached when the employee submits a self review while manager review is off, and created at this status when both reviews are off. |
| Finalized | finalized | The final rating is calculated and recommendations are recorded. | HR finalizes an appraisal that is Awaiting Finalization, in a cycle that is not Closed. |
Flow: Pending → Self Review (Draft) → Awaiting Manager → Manager Review (Draft) → Awaiting Finalization → Finalized. Phases switched off in Appraisal Settings are skipped.
Job opening
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Draft | draft | Being prepared. | HR creates an opening. |
| Open | open | Accepting applications. Only an Open opening can be published on the careers site. | HR sets the status to Open (this records the budget approval). |
| On hold | on_hold | Paused. | HR sets it. Leaving Open takes a published posting off the careers site. |
| Filled | filled | The headcount is reached. | HR sets it. It is also set automatically when converting a hire to an employee brings the number of hires up to the headcount. |
| Cancelled | cancelled | Closed without filling. | HR sets it. |
Flow: Draft → Open → Filled. Side exits: Open → On hold (and back to Open). Cancelled. HR can choose any of the five statuses on the opening's page.
Candidate application stages (recruitment pipeline)
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Applied | applied | New application. | The candidate applies on the careers site, or HR adds the candidate to an opening by hand. Either way the opening must be Open. Applying again does not change the stage. |
| Screening | screening | Being screened. | HR moves the application to the next stage. |
| Interview | interview | In interviews. | HR moves it to the next stage. Scheduling an interview also moves an Applied or Screening application here automatically. |
| Offer | offer | An offer has been made. | Automatic: set when HR extends an offer. The screen does not let HR move an application to Offer any other way. |
| Hired | hired | Hired. | The candidate accepts the offer on the public offer page, or HR converts the candidate to an employee. HR can also move the application to Hired when no offer is waiting for the candidate's answer. |
| Rejected | rejected | Turned down by the company. | HR rejects the application with a reason. The candidate is emailed. |
| Withdrawn | withdrawn | The candidate stepped away. | The candidate declines the offer on the public offer page. |
Flow: Applied → Screening → Interview → Offer → Hired. Side exits: Rejected (HR, at any point). Withdrawn (the candidate declines the offer).
Offer
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Sent — awaiting candidate (lists: Sent) | sent | Sent to the candidate, waiting for an answer. | HR extends an offer. Extending it again updates the same offer, keeps the same link, and sets it back to Sent. |
| Accepted | accepted | The candidate accepted. | The candidate clicks Accept on the public offer page before the expiry date. The application moves to Hired. |
| Declined | declined | The candidate declined, with a reason. | The candidate declines on the public offer page. The application moves to Withdrawn, and a declined offer cannot be extended again. |
| Withdrawn | withdrawn | The company withdrew the offer. | Only through the API; no screen offers it. |
Flow: Sent → Accepted. Side exit: Sent → Declined.
HR letter request
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Waiting for HR. | The employee requests a letter in the portal. |
| Issued | issued | The letter has been issued and linked to the request. | HR issues a letter from the request. The employee is emailed the letter. |
| Rejected | rejected | Refused, with a reason. | HR rejects the request. |
| Cancelled | cancelled | Withdrawn. | The employee cancels their own Pending request. |
Flow: Pending → Issued. Side exits: Pending → Rejected. Pending → Cancelled.
Asset (and asset assignment return outcomes)
Asset
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Available | available | In stock and free to issue. | HR adds an asset, or the asset is returned with the outcome Returned (intact). HR can also set it on the edit form. |
| Issued | issued | With an employee. | HR issues an Available asset to an active employee. The edit form cannot set Issued, and it locks the status while the asset is Issued, so the only way out is a return. |
| Maintenance | maintenance | Out for repair. | The asset is returned with the outcome Returned (damaged), which also sets its condition to Poor unless HR picks a condition. HR can also set it on the edit form. |
| Retired | retired | Out of service. | HR sets it on the edit form. |
| Lost | lost | Missing. | The asset is returned with the outcome Lost / not returned, or HR sets it on the edit form. |
Assignment (one row per issue, shown in the asset's history)
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Active | active | Currently held. | HR issues the asset. |
| Returned | returned | Returned intact. | Return outcome Returned (intact). |
| Damaged | damaged | Returned unusable. | Return outcome Returned (damaged). |
| Lost | lost | Never came back. | Return outcome Lost / not returned. |
Flow: Available → Issued → Available (Returned (intact)). Other ways out of Issued: Maintenance (Returned (damaged)). Lost (Lost / not returned). Retired is set by HR.
Field visit
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| In progress | checked_in | The rep is at the client. | The rep checks in from the portal. |
| Completed | completed | The visit is over. | The rep checks out, which records the duration and the outcome. A visit is also completed automatically when the rep checks in to the next visit and agrees to close the open one. Admin can also close an In progress visit as Completed, and the duration is then left unknown. |
| Cancelled | cancelled | Not a real visit. | Admin cancels it, from In progress or from Completed. |
Flow: In progress → Completed. Side exit: Cancelled.
Each visit also gets a verification result at check-in: Verified (verified, inside a confirmed client pin's radius), Unverified (unverified, the client has no pin or only a provisional one) or Flagged (flagged, outside the radius, or the GPS reading was too inaccurate).
Employee document
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Pending | pending | Waiting for HR review. | The employee uploads a document in the portal while document verification is on (the default). |
| Uploaded | uploaded | On file. No review needed. | The employee uploads a document while document verification is switched off for the company. |
| Verified | verified | HR checked it. | HR verifies the document. The employee is emailed. |
| Rejected | rejected | Not accepted, with a reason. | HR rejects the document, or revokes an earlier verification. The employee is emailed. |
| Missing | none stored | No document of a required type is on file. | Shown only on the Document Compliance matrix. It is calculated when the matrix is built and never stored. |
Flow: Pending → Verified. Side exits: Pending → Rejected. Verified → Rejected (revoke). With verification off: Uploaded.
Subscription (billing)
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Trial | trialing | On the free trial. | The workspace signs up (a 14-day trial). Also: a checkout with an offer code (Stripe holds the trial with the card on file), the operator extending the trial (this also revives an Expired trial), or Stripe reporting the subscription as trialing. |
| Active | active | Paying, and fully usable. | Stripe Checkout completes, Stripe reports active, the operator assigns a plan with manual billing, or an AppSumo licence is activated. |
| Payment overdue | past_due | A payment failed. The workspace stays writable while Stripe retries. | Stripe reports a failed invoice payment, or a subscription status of past due or unpaid. |
| Canceled | canceled | Ended. The workspace is read-only. | Stripe deletes the subscription (for example, at the end of the period after an in-app cancellation, since that cancellation only schedules the end), Stripe reports canceled or incomplete-expired, the operator cancels the Stripe subscription, or an AppSumo licence is refunded or detached. |
| Incomplete | incomplete | Stripe has not completed the subscription. | Stripe reports any other status, such as incomplete or paused. |
| Expired | expired | The trial ran out without a purchase. The workspace is read-only. | Automatic: a daily job at 03:10 server time expires a self-serve trial that has no card on file once its end date has passed. Operator-managed workspaces are skipped. |
Flow: Trial → Active. Side exits: Trial → Expired (and back to Trial if the operator extends it, or to Active on purchase). Active → Payment overdue → Active, or Canceled.
The tenant's Billing page labels all six statuses.
Webhook endpoint and delivery
Endpoint
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Not verified | pending | Created, but not yet proven to receive events. Events are not sent to it. | The tenant adds an endpoint. Changing an endpoint's URL also puts it back here. |
| Active | active | Receiving events. | Send test succeeds. Resume also sets Active (the button is shown only once the endpoint has left Not verified). |
| Switched off | disabled | Not receiving events. | The tenant clicks Pause. Also automatic: set after 20 deliveries in a row fail. |
Flow: Not verified → Active. Side exits: Active → Switched off (Pause or 20 failures), and back to Active with Resume or a successful Send test.
Delivery (one per event per endpoint)
| Status (as shown) | Value | Meaning | Reached by |
|---|---|---|---|
| Queued | pending | Waiting to be sent. | Created for each Active endpoint subscribed to the event. A failed attempt with retries left also returns here, with the next try after 1, 5, 30, 120, 300, 600 and then 1200 minutes. Send again also puts a delivery back here and restarts the attempt count. |
| Sending | dispatching | Claimed by the sender. | Automatic: the delivery worker claims it. A claim held for more than 10 minutes is picked up again. |
| Delivered | succeeded | The receiver answered with a success (2xx) code. | Automatic, on a successful attempt. Delivered rows are later removed by the retention job. Failed rows are kept. |
| Gave up | exhausted | Retries ran out. The row stays visible and can be sent again. | Automatic: set after the 8th failed attempt, or at once if the failure is permanent (the endpoint URL is refused, or its secret cannot be read). |
Flow: Queued → Sending → Delivered. Side path: Sending → Queued (retry) → … → Gave up. Send again returns any delivery that is not Sending to Queued.