Overview

Shiftctl Documentation

Shiftctl is an on-call shift management platform for IT support teams and Managed Service Providers (MSPs). It replaces ad-hoc handoffs — Slack messages, sticky notes, verbal briefings — with a structured, accountable workflow that ensures every shift transition is documented, verified, and acknowledged.

Who is Shiftctl for? Any team that runs on-call shifts where one engineer hands over to the next — IT helpdesks, NOC/SOC teams, MSP technicians, and infrastructure engineers.

Enforced accountability

Engineers cannot skip any step of the sign-off process.

Zero context loss

Incoming engineers get a full structured brief the moment their shift begins — automatically.

Manager visibility

Trends, burden tracking, and exportable reports — all in one place.


Core concept

How Shiftctl works

Every on-call shift follows a four-stage lifecycle enforced by Shiftctl. The platform makes it structurally impossible to skip any stage — the workflow is the safeguard.

01

Clock in & read the brief

Shifts start automatically at the scheduled time. The incoming engineer receives a push and email notification, opens Shiftctl, and is immediately shown the full handoff summary from the previous shift — tickets logged, pending items, and a difficulty rating. They must acknowledge the brief before doing anything else.

02

Active shift

During the shift, the engineer works with live context from their PSA (ConnectWise, Autotask, HaloPSA) visible alongside Shiftctl. Tickets can be logged directly from the shift view.

03

Structured sign-off

When the shift ends, the engineer must complete every field: tickets resolved, pending items noted, warnings raised, and a difficulty rating (1–5) recorded. The sign-off button is locked until every section is complete.

04

Automatic handoff

The moment sign-off completes, the next scheduled engineer is notified by push notification and email. If no engineer is scheduled, the team owner is alerted. Unacknowledged handoffs trigger a follow-up after 12 hours.


Feature

Enforced sign-off

The cornerstone of Shiftctl is that sign-off is enforced — not optional, not a reminder. An engineer cannot complete their shift until every section of the handoff form is filled in.

Tickets logged

Every ticket worked during the shift must be recorded with its resolution status.

Pending items

Any unresolved work or open tasks the next engineer needs to know about.

Warnings raised

Escalations, at-risk clients, or anything that needs immediate attention.

Difficulty rating

A 1–5 rating of how demanding the shift was — feeds into manager analytics.

The sign-off button remains disabled until all four sections are completed. This is enforced at the UI level and server-validated — it cannot be bypassed.


Feature

Incoming brief

When the next engineer's shift begins, they see the full structured handoff from the outgoing shift. No digging through Slack, no verbal catch-up — the context is there, formatted, and ready to acknowledge.

Full shift summary

All tickets logged during the shift, each with resolution status and notes.

Pending items

Outstanding work items the incoming engineer needs to follow up on immediately.

Active warnings

Flagged escalations or at-risk situations requiring priority attention.

Difficulty context

The outgoing engineer's difficulty rating helps set expectations before the shift begins.

One-click acknowledgement

Once reviewed, the engineer acknowledges the brief — this timestamp is recorded for accountability.


Feature

On-call scheduling

Plan your on-call rota weeks ahead directly in Shiftctl. Assign engineers to slots, define rotation order, and spot coverage gaps before they become incidents — no more scheduling via Slack threads or shared spreadsheets.

Calendar view

Visual weekly/monthly view of all scheduled shifts with engineer assignments.

Rotation order

Define a rotation sequence and auto-assign upcoming slots in order.

Coverage gap alerts

Unscheduled slots are visually flagged so managers can act before the shift starts.

Swap requests

Engineers can request shift swaps in-app — owners approve or reject without leaving Shiftctl.

Multi-staff shifts

Assign multiple engineers to a single shift slot for high-demand periods.

Timezone support

Each team has a defined timezone; all shift times are displayed relative to it.


Migration

PagerDuty schedule import

Already running on PagerDuty? Bring your existing on-call rota into Shiftctl in minutes — without re-entering shifts manually. Shiftctl reads standard iCal feeds, which PagerDuty, Opsgenie, VictorOps, and Google Calendar all export natively.

One-time import

Download a .ics file from PagerDuty and upload it to Shiftctl via Schedule → Import. Your schedule is seeded instantly. After import, the calendar is fully editable — you own the schedule.

Live sync Recommended

Paste your PagerDuty iCal feed URL and Shiftctl keeps the schedule in sync automatically, every hour. Changes made in PagerDuty appear in Shiftctl without any manual action. The calendar becomes read-only while sync is active.

How live sync works

Hourly automatic sync

Shiftctl fetches your iCal feed every hour and diffs it against the current schedule — adding new slots, updating changed times, and removing cancelled ones.

Read-only calendar

While live sync is active, the Shiftctl calendar is locked to visual browsing only. All scheduling changes must be made in PagerDuty. Disconnect sync at any time to regain full edit access.

Engineer mapping

iCal feeds contain engineer names. During setup, you map each name to a Shiftctl team member. The mapping is saved and applied automatically on every future sync.

Zero re-entry switching

Teams evaluating Shiftctl can connect it to their existing PagerDuty schedule in minutes — no disruption to their current scheduling workflow.

Before importing: Your Shiftctl schedule must be empty. Use Schedule → Import → Clear entire schedule if you have existing slots. Active (in-progress) shifts are never affected by a clear.

Where to find your PagerDuty iCal URL

  1. Log in to PagerDuty and click your name → My Profile
  2. Go to User settings
  3. Copy the On-Call iCalendar feed URL (starts with webcal://)
  4. Paste it into Shiftctl at Schedule → Import → Live sync

Feature

Automatic handoff notifications

When sign-off completes, Shiftctl automatically notifies the next engineer — no manual action required. The notification chain is designed to ensure no handoff is ever silently missed.

Instant push + email

The moment sign-off is complete, the scheduled next engineer receives both a browser push notification and an email.

Unscheduled slot alerts

If no engineer is scheduled for the next slot, the team owner is immediately alerted so they can assign cover.

12-hour follow-up escalation

If the handoff brief is not acknowledged within 12 hours, an escalation alert is sent to the engineer, their manager, and posted to Slack.

Configurable channels

Each engineer can choose which notification channels are active for them — push, email, or both.


Integration

Slack integration

Connect Shiftctl to a Slack channel via an Incoming Webhook and get real-time visibility into your on-call operation without leaving Slack. Requires the Team plan. Configure from Manage → Notifications.

Handoff summary

When an engineer completes sign-off, the full handoff brief is posted to Slack — tickets, pending items, warnings, and difficulty rating. Engineers are @mentioned by name using their mapped Slack user IDs.

On-call change

When the incoming engineer acknowledges their handoff and becomes active on-call, a change notification is posted with a direct link to the brief.

Shift start and shift end

Post to Slack when a shift begins (with the scheduled end time) and when it ends after sign-off completes. Enables real-time visibility into shift boundaries without checking the app.

Unacknowledged escalation

If an engineer has been on-call for 12 hours without acknowledging their handoff, a Slack alert fires alongside the email and push escalation.

Coverage gap alert

When a shift slot has no engineer assigned within 2 hours of its start time, Shiftctl posts a Slack alert with a direct link to the schedule so cover can be assigned immediately.

Daily on-call digest

Post a daily summary at a configured UTC hour showing every engineer on call that day, their shift window, and layer — so the whole team knows who to contact without opening the app.

Report summary to Slack

When scheduled PDF reports are enabled, Shiftctl can also post a key-stats summary (shifts, avg duration, ack time, ticket resolution rate) to Slack at the same time the PDF is emailed.

Slack user ID mapping

Map each team member to their Slack user ID (starts with U) so all alert messages @mention the relevant engineer directly, generating a notification ping in Slack.

Test webhook button

Send a clearly labelled test message to verify your webhook URL is correct and messages are landing in the right channel before enabling live alerts.

Slack integration requires the Team plan. All alert types are independently toggleable — enable only the events relevant to your team.

Full setup guide — Advanced Slack integration

Integration

Microsoft Teams

Keep your team informed without leaving Microsoft Teams. ShiftCtl posts rich, actionable cards directly into your Teams channels — shift starts, handoff summaries, coverage gaps, and escalations arrive automatically so nothing falls through the cracks.

Shift started alerts

Get notified in Teams the moment an on-call shift begins, with an @mention for the assigned engineer.

Handoff summaries

Full shift handoff posted to your channel — tickets, pending items, difficulty rating, and duration at a glance.

On-call change alerts

See who just acknowledged their shift and is now actively on-call.

Escalation warnings

If an engineer hasn't acknowledged after 12 hours, Teams lights up so the team can follow up.

Shift ended confirmation

Know exactly when an engineer completes their shift and how it went.

Coverage gap warnings

Automated heads-up when an upcoming slot has no engineer assigned.

Daily on-call digest

One card every morning listing who's on-call today, across every layer.

Report summaries

Weekly or monthly stats posted alongside the PDF report — shifts, resolution rates, acknowledgement times.

@mention support

Map each engineer's Microsoft email to enable @mentions in every card. Falls back to bold names gracefully.

Works alongside Slack — enable both channels independently, or choose one. Available on Team plans and above.

Set up Microsoft Teams step by step

Feature

Manager insights

The Data Hub gives managers a complete view of how their on-call operation is performing over time. Spot trends, track engineer workload, and export clean reports — all without leaving Shiftctl.

What managers can track

Shift difficulty trends over time
Engineer on-call burden (hours, shift count)
Ticket resolution rates per shift
Brief acknowledgement times
Warning frequency and escalation patterns
Coverage gap history

PDF reports: Export a clean summary report at any time (Starter plan and above), or schedule automated weekly or monthly reports (Team plan and above).


PSA integrations

Connect your PSA

Shiftctl connects directly to the PSA your team already uses. When an engineer logs a ticket during a shift, it is created automatically in your PSA. When a technician resolves or updates it in the PSA, the status syncs back to Shiftctl in real time — no copy-pasting, no duplicate entry, no context lost between systems.

Automatic ticket creation

Tickets logged in Shiftctl are pushed to your PSA instantly — including title, notes, on-call engineer, handover timeline, and a deep-link back to Shiftctl.

Two-way status sync

Status changes in your PSA (resolved, in progress) are reflected in Shiftctl within seconds via webhook.

Zero workflow disruption

Tickets land on your existing boards and queues. Your PSA workflows, SLAs, and automations continue as normal.

PSA integrations are available on the Enterprise plan. Enable from Manage → Integrations once upgraded.


PSA integration

ConnectWise Manage

The most widely deployed PSA in the MSP industry. Shiftctl pushes tickets directly onto a ConnectWise service board of your choosing and listens for status changes via the ConnectWise Callbacks API. Works with both cloud-hosted and self-hosted ConnectWise environments.

Any service board

Choose an existing board or create a dedicated On-Call board — tickets land exactly where you want them.

Callbacks webhook

ConnectWise fires a callback to Shiftctl the moment a ticket status changes — synced in seconds, not minutes.

Real Basic auth

Uses ConnectWise's standard API member authentication — no OAuth dance, no token refresh headaches.

Status name mapping

Shiftctl maps open → New, monitoring → In Progress, resolved → Resolved. Statuses must exist on your chosen board.

What you will need

  • An API Member with Public + Private keys (System → Members → API Members tab)
  • A Client ID from developer.connectwise.com (free registration)
  • The numeric Board ID of your target service board
  • Your CW login Company ID (the text string, not a number)
  • Existing MSPs: verify your board has statuses named exactly "New", "In Progress", and "Resolved" — these are board-scoped in ConnectWise and commonly customised
Full setup guide — ConnectWise Manage

PSA integration

Autotask PSA

Datto's enterprise PSA, used by MSPs who run tight service desk operations with multi-queue routing and contract-level billing. Shiftctl creates tickets in the queue you specify and receives status updates via Autotask's outbound webhook system.

Queue-based routing

Specify exactly which Autotask queue ShiftCtl tickets land in — keep on-call tickets separate from client-facing queues.

Outbound webhooks

Autotask fires a webhook to Shiftctl when a ticket is modified. Status changes typically sync within 30–90 seconds.

API Integration Code

Uses Autotask's standard three-header auth: Integration Code, API username, and API key — no OAuth required.

Custom status IDs

Autotask status IDs are tenant-specific. Shiftctl ships with sensible defaults and lets you override all three.

What you will need

  • An API User (username + API key) with Tickets: View, Add, Edit permission
  • An API Integration record — the Tracking Identifier is your Integration Code
  • Your zone URL (look it up at webservices.autotask.net/ATServicesRest/V1.0/zoneInformation?user=YOUR_EMAIL)
  • The numeric Queue ID and your own Company ID from Autotask
  • Existing MSPs: your status IDs are almost certainly not the defaults — check Admin → Service Desk → Ticket Statuses and set the correct IDs in Shiftctl
Full setup guide — Autotask PSA

PSA integration

HaloPSA

A modern, flexible PSA popular with growing MSPs. HaloPSA uses OAuth 2.0 client credentials for API access — Shiftctl handles token management automatically. Tickets can be routed to a specific team and ticket type, giving you full control over where they land in your workflow.

OAuth 2.0 auth

Shiftctl handles token management automatically with smart caching — no manual token rotation needed.

Team and type routing

Optionally set a Team ID and Ticket Type ID so Shiftctl tickets route correctly in your existing HaloPSA structure.

Near real-time webhooks

HaloPSA webhooks fire immediately on ticket updates — status changes appear in Shiftctl within seconds.

Custom status IDs

All three status mappings (open, monitoring, resolved) are configurable to match your HaloPSA status configuration.

What you will need

  • An API Application with Client Credentials auth and read:tickets + edit:tickets permissions
  • Your HaloPSA tenant URL (e.g. https://yourcompany.halopsa.com)
  • Optionally: Team ID and Ticket Type ID for precise routing
  • Existing MSPs: if your HaloPSA has mandatory fields or ticket type validation rules, you must set a Ticket Type ID or ticket creation will fail
  • Self-hosted: your server must be reachable over HTTPS with a valid TLS certificate
Full setup guide — HaloPSA

PSA integration

Syncro

The combined PSA + RMM platform built for lean MSPs who value simplicity. Syncro's API uses plain Bearer token authentication — the simplest integration to set up. Tickets are created with an "On-Call" problem type and can be linked to a customer record for clean billing separation.

Simple API key auth

Just a subdomain and a Bearer API key — no OAuth, no Client IDs, no zone lookups.

Customer linking

Optionally link Shiftctl tickets to a specific customer record in Syncro for clean billing and reporting.

On-Call problem type

All Shiftctl tickets are tagged with problem type 'On-Call' so they are easy to filter in Syncro reports.

Trigger-based webhooks

Syncro's Trigger system fires in near real-time — status changes typically sync to Shiftctl within seconds.

What you will need

  • A Syncro API key with Tickets: read + write scope (Admin → API Keys)
  • Your Syncro subdomain (the part before .syncromsp.com)
  • Optionally: a Customer ID to link tickets to your own company record
  • Existing MSPs: Syncro matches statuses by text string. Shiftctl sends "New", "In Progress", "Resolved" — these must exist in Admin → Ticket Statuses or updates will fail
  • Existing MSPs: "On-Call" must exist as a Problem Type in Syncro (Admin → Problem Types) or ticket creation may be rejected
Full setup guide — Syncro

Authentication

Microsoft 365 sign-in

Shiftctl supports sign-in via Microsoft 365 (Azure AD / Entra ID) as an alternative to email and password. M365 sign-in means engineers authenticate through their company Microsoft account — no separate Shiftctl password is created or required. All identity management stays in your existing Azure Active Directory.

No extra passwords

Engineers sign in with the Microsoft credentials they already use every day — no new password to create, forget, or rotate.

Automatic team join

When an invited engineer signs in with Microsoft for the first time, Shiftctl automatically adds them to the correct team. No manual approval step.

Works alongside standard accounts

Teams can mix M365 and email/password accounts freely. Both sign-in methods coexist — there is no forced migration.

M365 sign-in is available on all paid plans (Starter and above). There is no Azure app registration required on your end — Shiftctl uses its own Microsoft OAuth application. Your engineers just need a valid Microsoft 365 account with the same email address you invite them with.


Microsoft 365

Inviting new members via M365

When you invite a member using the Microsoft 365 option, Shiftctl sends them an email with a link that opens the Microsoft sign-in page directly. There is no Shiftctl password to set — the engineer authenticates with their existing Microsoft account and is automatically added to your team.

01

Go to Team → Members

Open the sidebar and navigate to Team → Members. You will see the "Invite team members" panel at the top. If it is collapsed, click the header to expand it.

02

Enter the engineer's email and select their role

In the "Invite by email" form, type the engineer's work email address — this must be the email associated with their Microsoft 365 account. Use the role selector on the right to choose Member (standard on-call engineer) or Admin (full team management access). If you are unsure, use Member — you can promote them later.

03

Switch the account type to Microsoft 365

Below the email and role row, you will see two account type buttons: "Standard" and "Microsoft 365". Click the Microsoft 365 button (it turns blue with the Microsoft logo). The note below will confirm: "Recipient will get a Microsoft sign-in link. No Shiftctl password needed." This is the key difference — a standard invite sends a link to create a Shiftctl password. An M365 invite sends a link that redirects straight to Microsoft sign-in.

04

Click Send

Click the Send button. Shiftctl stores a pending invite for that email address in the database and sends the engineer an invitation email. The email contains a link that points to the Microsoft sign-in page via Shiftctl's OAuth flow.

05

Engineer accepts the invite (their view)

The engineer opens the invitation email and clicks the sign-in link. They are taken to Microsoft's login page. After signing in with their Microsoft 365 credentials, Microsoft redirects them back to Shiftctl. Shiftctl detects the pending invite for their email, creates their Shiftctl account automatically, adds them to your team, and redirects them to the onboarding screen to complete their profile.

06

The member appears in your team

Once the engineer has completed sign-in, they appear in Team → Members with a "pending" badge removed. Their account is fully active — they can be assigned to on-call shifts immediately. All future sign-ins use the "Sign in with Microsoft" button on the Shiftctl login page.

Bulk inviting with M365 via CSV

For teams of five or more, use the CSV bulk invite. Download the template from Team → Members → Bulk import CSV. The template includes an m365 column — set it to yes for any engineer who should receive an M365 invite, and no (or leave blank) for standard email/password accounts. All other columns (email, role, full_name, phone_internal, phone_mobile) apply to both invite types.

  • Mixed teams are fine — some rows m365=yes, others m365=no
  • Invites are sent immediately on upload — one email per row
  • If a row fails (e.g. already a member, seat limit reached), the error is shown per-row — successful rows are still sent

Important:The email you invite must exactly match the email on the engineer's Microsoft account. If there is a mismatch (e.g. you invite jane@company.com but her Microsoft account is jane.smith@company.com), the automatic team join will not fire and she will land on the onboarding screen without a team. Contact support to resolve this — do not create a duplicate invite.

Full setup guide — Inviting members with Microsoft 365


Enterprise

SCIM provisioning

Automate user lifecycle management with SCIM 2.0. Connect your identity provider (Microsoft Entra ID, Okta, OneLogin) to automatically provision and deprovision Shiftctl users when they join or leave your organisation.

Automatic provisioning

Users assigned to Shiftctl in your IdP are automatically created as team members. No manual invites needed.

Automatic deprovisioning

Unassigned users are deactivated immediately. They cannot log in and stop counting towards your seat limit.

Attribute sync

Name, email, and external ID are synced from your IdP. Changes propagate on the next sync cycle.

Audit trail

Every SCIM operation (provision, deprovision, link, update) is logged with timestamps, user details, and success/error status.

SCIM provisioning is available on the Enterprise plan. Generate a SCIM token from Manage → Integrations.


Billing

Billing & subscriptions

Shiftctl uses Stripe for all billing. Your card details are never stored in Shiftctl. All plan changes, seat adjustments, and interval switches go through a confirmation modal showing exact Stripe-calculated amounts before any charge is applied.

Plans & upgrades

Upgrade or downgrade between Free, Starter, Team, and Enterprise at any time. Upgrades take effect immediately with prorated charges. Downgrades take effect at the end of your billing period — you keep full access until then. The confirmation modal shows the exact amount, what you are gaining or losing, and your next billing date.

Seat management

All paid plans support unlimited members. Seats are billed per user per month (or per year on annual billing). Add seats at any time — the prorated cost is charged immediately. Remove seats and the credit appears on your next invoice. You cannot reduce seats below your current number of active members — deactivate users first from Team → Members.

Invoices & billing history

View all past invoices, download PDFs and receipts, and see your projected next charge from Manage → Billing → View billing history. Each invoice shows a line-item breakdown including proration credits, refunds, and account credits applied.


Trust & compliance

Security & compliance

Shiftctl is built on enterprise-grade infrastructure with security built in at every layer.

TLS encryption in transit

All data is encrypted in transit using TLS 1.2+.

Row-level security

Database access is scoped per team using Supabase row-level security — no cross-team data leakage is possible.

Hashed passwords

Passwords are hashed using bcrypt and never stored in plaintext.

MFA support

Engineers and managers can enrol TOTP-based multi-factor authentication — prompted during onboarding or at any time from Manage → Account.

GDPR / Privacy Act compliant

Data processing complies with the EU GDPR, UK GDPR, and Australian Privacy Act 1988. See our Privacy Policy for full details.

Stripe-handled payments

We never store card details. All payment data is handled by Stripe.

Infrastructure is hosted on Vercel (edge) and Supabase (EU data region). Read our Privacy Policy →


Help center

Account recovery

Lost access to your Shiftctl account? There are several ways to regain access depending on your situation.

Forgot your password

01

Go to the login page

Visit the Shiftctl login page and click "Forgot password?" beneath the password field.

02

Enter your email

Enter the email address associated with your Shiftctl account. You'll receive a password reset link.

03

Check your inbox

Click the link in the email. It will open Shiftctl and prompt you to set a new password. The link expires after 1 hour.

04

Set your new password

Choose a strong password (minimum 8 characters). You'll be signed in automatically after saving.

Using your recovery email

If you set up a recovery email in Manage → Security, you can use it to receive a password reset link when you no longer have access to your primary email. Contact support@shiftctl.com with proof of identity and your recovery email address, and the team will verify and send a reset link to your recovery email.

Locked out of MFA

If you have MFA enabled but lost access to your authenticator app:

  • Recovery codes — If you saved your single-use recovery codes when enabling MFA, use one to sign in. Each code can only be used once.
  • Backup SMS (Enterprise) — If you verified a backup phone number, request an SMS code from the login page to bypass your authenticator.
  • Admin assistance — Ask a team admin to contact support on your behalf. The admin can verify your identity and request an MFA reset.
  • Support — Email support@shiftctl.com with your account email and proof of identity. MFA resets require manual verification and typically take 1 business day.

Microsoft 365 SSO users:If your account is linked to Microsoft 365, you can sign in using the “Sign in with Microsoft” button — this bypasses your Shiftctl password entirely. You can then reset your Shiftctl password from Manage → Security while signed in.


Help center

Setting up multi-factor authentication

Multi-factor authentication (MFA) adds an extra layer of security by requiring a time-based code from an authenticator app each time you sign in. We strongly recommend enabling MFA for all team members.

Enabling MFA

01

Navigate to Security settings

Go to Manage → Security. Scroll to the "Two-factor authentication" section.

02

Click "Enable MFA"

Shiftctl generates a unique QR code and a manual entry key. Both are tied to your account only.

03

Scan the QR code

Open your authenticator app (Authy, Google Authenticator, 1Password, Microsoft Authenticator, etc.) and scan the QR code. If you can't scan, enter the manual key shown below the QR code.

04

Enter the verification code

Your authenticator app will display a 6-digit code that refreshes every 30 seconds. Enter this code in the verification field and click "Verify & enable".

05

Save your recovery codes

After enabling MFA, you'll be shown a set of single-use recovery codes. Save these in a secure location (password manager, printed copy in a safe). Each code can only be used once and they are your last resort if you lose your authenticator.

Disabling MFA

To disable MFA, go to Manage → Security → Two-factor authentication and click “Disable MFA”. You must be signed in to disable it. After disabling, you will no longer be prompted for a code at login. Your recovery codes will be invalidated.

Supported authenticator apps

Any TOTP-compatible authenticator app works with Shiftctl. Popular choices include:

  • Authy (recommended — supports multi-device sync and cloud backup)
  • Google Authenticator
  • Microsoft Authenticator
  • 1Password (built-in TOTP support)
  • Bitwarden (built-in TOTP support on Premium)

Changing devices?Before wiping or replacing your phone, either transfer your authenticator entries to the new device or disable MFA in Shiftctl first. If you lose access without doing this, you'll need to use a recovery code or contact support.


Help center

Admin management

Admins have full control over team settings, member management, billing, and integrations. Shiftctl enforces safety guardrails to prevent accidental lockouts.

Adding an admin

To promote a team member to admin, go to Manage → Members, find the member, and change their role to “Admin”. Admins can manage team settings, invite or remove members, and access billing — but they cannot delete the team unless they are the original owner.

Removing an admin

To demote an admin back to a regular member, go to Manage → Members, find the admin, and click “Remove admin”. The member keeps their account, shift history, and team access — only their elevated permissions are removed.

Last-admin protection

Shiftctl prevents the last remaining admin from being removed or demoted. This applies across all interfaces — the web app, the API, and SCIM provisioning. If you need to transfer ownership:

  • Promote the new admin first (Manage → Members → change role)
  • Then demote yourself or have the new admin demote you
  • The team will always have at least one admin

Single-admin warning

If your team is on a paid plan and has only one admin, a dismissible amber banner appears across all pages reminding you to add a co-admin. This is a business continuity safeguard — if the sole admin leaves the organisation or loses account access, the team would need to contact support to regain admin control. Adding a second admin takes 30 seconds and eliminates this risk.

Best practice: Every paid team should have at least two admins. This ensures continuity if one admin is unavailable, leaves, or loses account access.


Help center

Exporting your data

Shiftctl lets team admins export a complete copy of their team's data at any time. The export is a ZIP archive containing JSON files for each data type.

How to export

01

Navigate to Team settings

Go to Manage → Team. Scroll to the "Data export" section. You must be a team admin to access this.

02

Click "Export team data"

A ZIP file will be generated and downloaded automatically. The file is named shiftctl-export-YYYY-MM-DD.zip.

03

Review the contents

The archive contains: team.json, members.json, shifts.json, shift_slots.json, handoffs.json, tickets.json, pending_items.json, audit_log.json, and export_metadata.json.

What's included

Team metadata

Team name, ID, settings, timezone, and creation date.

Members

All current team members with roles, contact details, and rotation order. Sensitive fields (passwords, tokens) are never included.

Shifts & schedule

The most recent 1,000 shifts and 5,000 shift slots with start/end times, assigned engineers, and completion status.

Handoffs

The most recent 1,000 handoff records including tickets logged, pending items, difficulty ratings, and acknowledgement status.

Tickets & pending items

The most recent 5,000 shift tickets and pending items created during shifts.

Audit log

The most recent 10,000 audit log entries covering all team actions — logins, role changes, settings updates, and more.

When to export

  • Before deleting a team — Once the 30-day grace period expires, all data is permanently removed. Export first.
  • Compliance or auditing — Provide an offline copy of your team's activity to auditors or compliance teams.
  • Migration — Moving to a different tool? The JSON format makes it straightforward to transform and import elsewhere.
  • Regular backups — Schedule periodic exports as part of your data governance policy.

Data retention: Enterprise teams can configure automatic data retention policies from Manage → Team. Data older than the configured retention period is purged automatically. Export your data before the retention window closes if you need a long-term archive.


Plans

Plans & pricing

Simple per-user pricing — pay only for the members on your team.

Every paid plan includes unlimited members. Upgrade to unlock the features your team needs.

MonthlyAnnualSave ~20%

Free

Free

Try ShiftCtl with your first teammate.

  • 2 members
  • Shift sign-off & handover briefs
  • Acknowledgements & escalation
  • Pending items & ticket logging
  • Warnings & coverage gap detection
  • Push & email notifications
Get started free

Starter

$7USD/user/month
$9-22%

Billed $84/year

Scheduling, analytics and reporting for growing teams.

  • Unlimited members
  • Everything in Free
  • Auto-scheduling by rotation order
  • iCal export — Google Calendar & Outlook
  • Shift swap requests
  • Data Hub — analytics & PDF reports
  • Microsoft 365 sign-in
Get started
Most popular

Team

$15USD/user/month
$19-21%

Billed $180/year

Full-stack integrations for established operations teams.

  • Unlimited members
  • Everything in Starter
  • Multiple on-call teams
  • PagerDuty / Opsgenie import & live sync
  • Slack notifications
  • Scheduled PDF reports (weekly/monthly)
  • Priority support
Get started

Enterprise

$39USD/user/month
$49-20%

Billed $468/year

For large organisations scaling on-call operations.

  • Unlimited members
  • Everything in Team
  • PSA integrations (ConnectWise, Autotask, HaloPSA, Syncro)
  • SCIM provisioning for Microsoft Entra ID
  • Custom data retention policies
  • Admin audit log
  • Dedicated support & SLA
Get started

Ready to end context loss on your team?

Set up your first on-call team in under 5 minutes.