52 min readDeterministic automation

Implementation Guide: Trigger employee scheduling reminders and shift-fill workflows

Step-by-step implementation guide for deploying AI to trigger employee scheduling reminders and shift-fill workflows for Restaurants & Food Service clients.

Hardware Procurement

iPad 10th Generation 10.9-inch Wi-Fi 64GB

AppleMPQ03LL/A (Silver) or MPQ13LL/A (Blue)Qty: 1

$349 per unit MSP cost / $449 suggested resale (includes setup)

Dedicated manager scheduling terminal wall-mounted in the back office or near the kitchen line. Used for real-time schedule viewing, shift swap approvals, and open-shift management. Runs the 7shifts manager app in Guided Access (kiosk) mode.

Tablet Wall Mount Enclosure with Lock

Kiosk Group / Mount-It!Mount-It! MI-3774 (universal 10-11 inch) or Kiosk Group iPad EnclosureQty: 1

$45–$80 per unit MSP cost / $99 suggested resale (includes installation)

Secure VESA-compatible wall mount to position the iPad at eye level in the manager office, break room, or kitchen hallway. Prevents theft and accidental damage in a high-traffic restaurant environment.

Ubiquiti UniFi U6 Pro Access Point

UbiquitiU6-Pro (formerly U6-Pro-US)Qty: 2

$159 per unit MSP cost / $219 per unit suggested resale

Enterprise-grade 802.11ax Wi-Fi access points to ensure reliable connectivity for scheduling app push notifications, POS terminals, kitchen display systems, and employee BYOD devices. Two APs recommended for full coverage in a typical 2,000–4,000 sq ft restaurant (one FOH, one BOH).

Ubiquiti UniFi Switch Lite 8 PoE

UbiquitiUSW-Lite-8-PoEQty: 1

$119 per unit MSP cost / $169 suggested resale

Managed PoE switch to power the UniFi APs and provide wired backbone connectivity. Supports VLAN segmentation to isolate POS/scheduling traffic from guest Wi-Fi.

Ubiquiti UniFi Cloud Gateway Ultra

UbiquitiUCG-UltraQty: 1

$129 per unit MSP cost / $179 suggested resale

Gateway/router and UniFi Network controller for managing APs, switch, VLANs, and firewall rules. Provides the UniFi dashboard for remote MSP monitoring and management.

USB-C Power Adapter and Cable for iPad

USB-C Power Adapter and Cable for iPad

Apple / AnkerAnker PowerPort III 20W (A2149) + USB-C cableQty: 1

$18 per unit MSP cost / included in tablet resale bundle

Continuous power supply for the wall-mounted iPad to ensure it remains always-on as a scheduling dashboard.

Software Procurement

7shifts Entrée Plan

7shiftsEntrée PlanQty: per location per month

$29.99/location/month MSP cost / $49.99/location/month suggested resale

Primary restaurant employee scheduling platform. Provides drag-and-drop schedule creation, automated shift reminders (push notification, SMS, email), open-shift broadcasting to available employees, shift swap with manager approval, overtime and labor compliance alerts, Fair Workweek compliance engine, and POS integration for labor-to-sales data sync. Includes manager and employee mobile apps on iOS and Android.

Zapier Professional Plan

ZapierSaaS - per account per month (750 tasks included)Qty: 1

$19.99/month (annual billing) MSP cost / $39.99/month suggested resale

Workflow automation middleware to extend 7shifts native capabilities with custom escalation logic, multi-channel notifications, and integrations with Slack, Microsoft Teams, Google Sheets, and SMS services. Triggers on 7shifts webhooks to execute multi-step shift-fill escalation workflows that go beyond built-in platform features.

Twilio Programmable Messaging (SMS)

TwilioUsage-based API (pay per message + phone number rental)Qty: Per message + per phone number/month

$0.0083/SMS sent + $0.0079/SMS received + carrier surcharges (~$0.003/msg) + $1.15/month per phone number. Estimated $15–$40/month for a 30-employee restaurant.

Custom SMS notification channel for shift-fill escalation workflows. Used when the built-in 7shifts notifications are insufficient or when the MSP needs white-labeled SMS from a dedicated restaurant phone number. Integrated via Zapier or n8n webhook actions.

n8n Community Edition (Self-Hosted) — Optional

n8n GmbHOpen source (Sustainable Use License) - self-hosted, unlimited executions

$0 software cost + $5–$20/month VPS hosting (e.g., Hetzner CX22 at €4.49/month or DigitalOcean $6/month droplet). MSP resale: $49–$99/client/month as managed automation platform.

Alternative to Zapier for MSPs managing multiple restaurant clients. Self-hosted workflow automation engine with no per-task fees, enabling unlimited scheduling automations across all clients on a single instance. Fully white-labelable. Recommended when the MSP has 3+ restaurant clients to amortize hosting costs.

7shifts API & Webhook Access

7shiftsRESTful API & Webhooks

$0 incremental (included in Entrée plan subscription)

RESTful API and webhook endpoints for programmatic access to schedules, shifts, users, locations, and time punches. Webhooks fire on events such as shift.created, shift.updated, shift.published, shift.open_created, and time_punch.created — enabling real-time triggers for custom automation workflows.

Slack Pro (if client uses Slack)

Slack / SalesforceSaaS - per user per monthQty: Typically 2–5 users (managers only)

$8.75/user/month (pass-through or small markup)

Optional manager notification channel. Receives automated alerts for unfilled shifts, overtime warnings, and compliance flags via Zapier integration. Only procure if the client already uses or prefers Slack for management communication.

Prerequisites

  • Active cloud-based POS system compatible with 7shifts (Toast, Square, Clover, Lightspeed, Oracle MICROS, NCR Aloha, or SpotOn). Confirm POS vendor and version before engagement.
  • Business-grade internet connection with minimum 25 Mbps download / 10 Mbps upload at each restaurant location. Verify with speed test at site survey.
  • Existing business email domain (e.g., restaurantname.com) for creating admin accounts. Avoid personal Gmail/Yahoo for compliance and security reasons.
  • Complete employee roster in digital format (spreadsheet or existing system export) including: full name, email address, mobile phone number, role/position, hire date, employment type (FT/PT/minor), and hourly wage.
  • Manager or owner with authority to approve scheduling policies, shift swap rules, overtime thresholds, and Fair Workweek compliance parameters.
  • Determination of applicable Fair Workweek / Predictive Scheduling laws for the restaurant's jurisdiction(s). Check: NYC, San Francisco, Seattle, Chicago, Philadelphia, Oregon (statewide), Los Angeles County (effective July 2025). Document requirements before configuration.
  • All employees must have smartphones (iOS 15+ or Android 10+) with active data plans or consistent Wi-Fi access for receiving push notifications and using the 7shifts mobile app.
  • POS administrator credentials or access to the POS back-office portal to enable the 7shifts integration and authorize sales data sharing.
  • Payroll system name and credentials if payroll integration is in scope (ADP, Gusto, Paychex, Toast Payroll, or 7shifts Payroll).
  • Physical site survey completed: identify optimal wall-mount location for manager tablet, AP placement for full Wi-Fi coverage, and Ethernet drop locations for switch and gateway.

Installation Steps

Step 1: Conduct Discovery & Site Survey

Visit the restaurant location to document the current scheduling process, interview the GM/owner on pain points, audit the existing technology stack (POS, payroll, network), count employees by role, and determine Fair Workweek jurisdiction requirements. Photograph the back office, kitchen hallway, and break room for tablet mount placement. Test internet speed and Wi-Fi coverage with a mobile survey tool.

1
Run speed test from back office and kitchen using Ubiquiti WiFiman app or Ookla Speedtest CLI
2
Document findings in a discovery template
Run speed test from back office and kitchen locations
bash
speedtest-cli --simple
  • POS vendor and version
  • Number of employees (FT, PT, minor)
  • Number of locations
  • Current scheduling method (paper, spreadsheet, existing software)
  • Applicable labor laws / Fair Workweek jurisdiction
  • Existing network infrastructure (router, ISP, switches)
  • Payroll system
  • Manager communication preferences (SMS, Slack, email)
Note

Discovery is critical — do not skip this step. The jurisdiction-specific Fair Workweek requirements will directly affect how you configure shift reminder timing, advance notice periods, and premium pay alerts. Bring a printed checklist. Budget 2–3 hours on-site.

Step 2: Install and Configure Network Infrastructure

Install the Ubiquiti UniFi Cloud Gateway Ultra, USW-Lite-8-PoE switch, and U6-Pro access points. Configure VLANs to segment POS/scheduling traffic (VLAN 10) from guest Wi-Fi (VLAN 20) and IoT/cameras (VLAN 30). Set up the UniFi Network controller for remote MSP management. This ensures reliable push notification delivery for the scheduling platform.

1
Physically install gateway, switch, and APs. Connect ISP modem → UCG-Ultra WAN port → USW-Lite-8-PoE port 1. Connect APs to PoE ports on USW-Lite-8-PoE.
2
Adopt devices in UniFi Network controller (accessible at https://unifi.ui.com). Navigate to Devices → Adopt each device.
3
Create VLANs in UniFi controller: Settings → Networks → Create New Network. VLAN 10: 'POS-Scheduling' (10.10.10.0/24) for POS terminals, scheduling tablet, printers. VLAN 20: 'Guest-WiFi' (10.10.20.0/24) — isolated guest network with bandwidth limits. VLAN 30: 'IoT-Cameras' (10.10.30.0/24) for security cameras and sensors.
4
Create WiFi SSIDs: SSID 'RestaurantName-Staff' → VLAN 10 (WPA3-Personal, strong passphrase). SSID 'RestaurantName-Guest' → VLAN 20 (open or simple passphrase, bandwidth limited to 10/5 Mbps).
5
Configure firewall rules: Block inter-VLAN traffic (Guest cannot reach POS/Scheduling VLAN). Allow POS-Scheduling VLAN full internet access. Allow DNS/DHCP from all VLANs.
6
Enable remote management: Settings → System → Cloud Access → Enable. Link to MSP's Ubiquiti SSO account for remote monitoring.
Note

If the restaurant already has adequate business-grade networking (e.g., existing Meraki, UniFi, or Aruba setup), skip this step and simply verify coverage and connectivity. Run a post-installation Wi-Fi survey to confirm signal strength ≥ -65 dBm in all areas where employees will use phones (kitchen, dining floor, break room). Ensure the tablet mount location has strong Wi-Fi signal.

Step 3: Provision 7shifts Account and Configure Organization

Create the 7shifts account, set up the restaurant location(s), configure departments and roles, and establish the organizational hierarchy. This is the foundation for all scheduling and automation that follows.

1
Navigate to https://www.7shifts.com and sign up for a new account. Use the client's business email domain for the owner/admin account. Select the Entrée plan ($29.99/location/month) or start with free trial.
2
Complete initial setup wizard: Company name, Location name and address, Time zone, Week start day (typically Monday for restaurants), Fiscal week settings.
3
Configure Departments (Settings → Departments): Front of House (FOH), Back of House (BOH), Bar, Management.
4
Configure Roles within each department (Settings → Roles): FOH: Server, Host, Busser, Food Runner, Cashier. BOH: Line Cook, Prep Cook, Dishwasher, Expo. Bar: Bartender, Barback. Management: General Manager, Assistant Manager, Shift Lead.
5
Set wage rates for each role (Settings → Roles → Edit → Wage). This enables labor cost tracking against POS sales data.
6
Configure location hours of operation: Settings → Location → Operating Hours. Set open/close times for each day of the week.
Note

Use the client's business email (e.g., gm@restaurantname.com) as the primary admin. Create a secondary MSP admin account (e.g., support@mspname.com) with Admin role for ongoing management. The Entrée plan is recommended over the free Comp plan because it includes labor compliance tools, schedule enforcement, and API/webhook access needed for custom automations.

Step 4: Import Employee Roster

Bulk import all employees into 7shifts with their roles, contact information, and wage data. This step populates the system so shift assignments and notifications can function immediately.

1
Option A: Bulk CSV Import (recommended for 15+ employees)
2
Download 7shifts CSV template from Settings → Employees → Import
3
Populate template with employee data: First Name, Last Name; Email (required for account invitation); Mobile Phone (required for SMS notifications); Role(s) - can assign multiple; Department(s); Wage rate; Employment type (full-time, part-time); Date of birth (CRITICAL for minor labor law compliance)
4
Upload CSV → Review mapping → Confirm import
5
Option B: Manual Entry (for smaller teams) — Settings → Employees → Add Employee → Fill in each field manually
6
After import, verify employee count matches roster
7
Send account invitations: Settings → Employees → Select All → Send Invite — Employees will receive email + SMS to download the 7shifts app
  • iOS: https://apps.apple.com/app/7shifts-employee-scheduling/id1aborscheduling
  • Android: https://play.google.com/store/apps/details?id=com.sevenships
Note

Have the GM review the employee list before sending invitations. Flag any employees under 18 — their profiles must have date of birth entered so the system can enforce minor labor restrictions (e.g., no shifts after 10 PM, maximum hours per day/week). Employees who do not have smartphones should be flagged for alternative notification methods (email-only or manager verbal relay).

Step 5: Integrate POS System with 7shifts

Connect the restaurant's POS system to 7shifts to enable automatic sales data import, labor-to-sales percentage tracking, and demand-based scheduling insights. This integration is what transforms scheduling from guesswork into data-driven decisions.

For Toast POS

1
In 7shifts: Settings → Integrations → POS → Select 'Toast'
2
Click 'Connect' → You'll be redirected to Toast Partner Connect
3
Log in with Toast admin credentials
4
Authorize 7shifts to access: Sales data, Labor data, Menu items
5
Select the Toast location to map to the 7shifts location
6
Confirm and save

For Square POS

1
In 7shifts: Settings → Integrations → POS → Select 'Square'
2
Click 'Connect' → Authorize via Square OAuth
3
Map Square location to 7shifts location
4
Enable: Sales sync, Employee sync (optional)

For Clover POS

1
In 7shifts: Settings → Integrations → POS → Select 'Clover'
2
Click 'Connect' → Log in to Clover dashboard
3
Install 7shifts app from Clover App Market
4
Authorize data sharing
5
Map location

Post-Integration Verification

1
Navigate to 7shifts Dashboard → Sales
2
Confirm that yesterday's sales data appears
3
Check that sales data is broken down by revenue center if available
4
Set labor target percentage: Settings → Labor → Target Labor % (Typical targets: FOH 18-22%, BOH 12-16%, Total 28-35%)
Note

The POS integration typically takes 15–30 minutes and starts syncing data immediately. Historical sales data (30–90 days) may take up to 24 hours to fully import. If the restaurant uses Oracle MICROS or NCR Aloha, the integration process may require involvement from the POS vendor's support team and can take 1–3 business days. Always verify that the POS admin credentials used have sufficient permissions to authorize third-party integrations.

Step 6: Configure Automated Shift Reminders

Set up the multi-channel notification system that automatically reminds employees of upcoming shifts. 7shifts supports push notifications, SMS, and email. Configure timing, channels, and escalation for no-responses.

1
Configure notification preferences (applies to all employees): 7shifts Admin → Settings → Notifications
2
Shift Reminder Settings: Enable 'Shift Reminders' → ON | Reminder timing: 24 hours before shift start (primary) | Second reminder: 2 hours before shift start (optional, configured via Zapier - see Step 9) | Notification channels: Push Notification (primary), SMS (fallback), Email (tertiary)
3
Schedule Published Notification: Enable 'Notify employees when schedule is published' → ON — This ensures all employees are immediately aware of new schedules
4
Shift Change Notifications: Enable 'Notify employees of shift changes' → ON — Critical for Fair Workweek compliance — employees must be notified of any changes
5
Configure per-employee notification preferences: Each employee can customize in their 7shifts app: Profile → Notifications → Enable Push + SMS — MSP should set organizational defaults to require push + SMS
6
No-Show / Late Alert for Managers: Settings → Time Clocking → Late Threshold — Set to 5 minutes (employee is flagged late if not clocked in 5 min after shift start) — Enable manager notification for late clock-ins
Note

7shifts sends push notifications for free. SMS notifications count against the plan's SMS allocation (varies by plan; Entrée includes a generous allowance). If the restaurant is in a Fair Workweek jurisdiction, ensure the 'Schedule Published' notification is sent at least 14 days before the schedule period begins. Document the notification configuration in the client handoff document.

Step 7: Configure Open Shift Broadcasting and Shift Swap Rules

Set up the rules that govern how open (unfilled) shifts are broadcast to available employees and how employees can request to swap shifts. This is the core shift-fill automation that replaces the manager's manual phone calls.

1
Open Shift Settings: Navigate to 7shifts Admin → Settings → Scheduling → Open Shifts
2
Shift Pool / Broadcast Settings: Review how shifts are broadcast when a shift becomes open (employee calls off or shift is unassigned)
3
Shift Swap (Shift Trade) Settings: Navigate to Settings → Scheduling → Shift Trading
4
Availability Management: Navigate to Settings → Availability
5
Time-Off Request Settings: Navigate to Settings → Time Off
Open Shift Settings
text
# 7shifts Admin → Settings → Scheduling → Open Shifts

# Open Shift Settings:
Enable 'Allow open shifts' → ON
Open shift visibility: 'Available to all qualified employees in the role'
Auto-approve open shift pickups: OFF (recommended initially — manager reviews)
  → Can be changed to ON after trust is established
Shift Pool / Broadcast Settings
text
# automatic behavior when a shift becomes open

# Shift Pool / Broadcast Behavior:
→ 7shifts automatically sends push notification to ALL employees with the matching role
→ Employees see the open shift in their app and can claim it with one tap
→ Manager receives notification and approves/denies the pickup
Shift Swap Settings — Settings → Scheduling → Shift Trading
text
# Shift Swap (Shift Trade) Settings:
Enable 'Allow shift trading' → ON
Require manager approval: ON (recommended for compliance)
Restrict trades to same role: ON (a host can only swap with another host)
Enforce overtime limits on trades: ON
Availability Management — Settings → Availability
text
# Availability Management:
Enable 'Allow employees to set availability' → ON
Require manager approval for availability changes: ON
Advance notice for availability changes: 7 days (adjust per policy)
Time-Off Request Settings — Settings → Time Off
text
# Time-Off Request Settings:
Enable time-off requests → ON
Auto-approve: OFF
Blackout dates: Configure for known high-volume periods (Valentine's Day, Mother's Day, etc.)
Note

The open shift broadcast is the highest-value automation in this project. When a server calls in sick at 2 PM for a 5 PM shift, the manager no longer needs to call through a list of employees — 7shifts instantly notifies every available server and the first to accept gets the shift (pending manager approval). Coach the GM that enabling auto-approve for open shift pickups significantly speeds up fill rates but removes the human review step. Recommend starting with manual approval and switching to auto-approve after 30 days if the team is reliable.

Step 8: Configure Fair Workweek and Labor Compliance Guardrails

Enable jurisdiction-specific compliance features to prevent scheduling violations before they occur. This step is legally critical for restaurants in covered jurisdictions and best-practice for all others.

1. Overtime Alerts

1
Navigate to: Settings → Labor → Overtime
2
Set Weekly overtime threshold: 40 hours (federal FLSA default)
3
Set Daily overtime threshold: 8 hours (if in California or applicable state)
4
Enable 'Warn when scheduling employee into overtime' → ON
5
Enable 'Block scheduling into overtime without manager override' → ON

2. Fair Workweek / Predictive Scheduling (if applicable)

1
Navigate to: Settings → Compliance → Fair Workweek
2
Select jurisdiction: [NYC / San Francisco / Seattle / Chicago / Philadelphia / Oregon / LA County]
3
Set Minimum advance notice period: 14 days (or 10 days for Oregon)
4
Set Clopening restriction: Minimum 11 hours between closing and opening shifts
5
Enable Premium pay tracking for schedule changes within notice period
6
Enable Right to rest: clopening alerts
7
Enable Access to hours: Offer shifts to existing staff before hiring new employees

3. Minor Labor Restrictions

1
Navigate to: Settings → Compliance → Minors
2
Enable minor labor law enforcement → ON
3
Configure Maximum hours per day by state (e.g., 8 hours on non-school days)
4
Configure Maximum hours per week by state (e.g., 40 hours on non-school weeks)
5
Configure Prohibited hours by state (e.g., cannot work past 10 PM on school nights)
6
Configure Required break intervals by state

4. Break Enforcement

1
Navigate to: Settings → Compliance → Breaks
2
California: 30-min meal break before 5th hour, 10-min rest per 4 hours
3
New York: 30-min meal break for 6+ hour shifts
4
Other states: Configure per applicable law
5
Enable break reminders → ON

5. Verify Compliance Configuration

1
Create a test schedule that violates each configured rule
2
Confirm that 7shifts displays a warning or block for each violation
3
Document all enabled compliance rules in the client handoff document
Note

This step requires the MSP to know the specific labor laws for the restaurant's jurisdiction BEFORE configuring. If unsure, consult the client's employment attorney or HR advisor. 7shifts provides built-in compliance templates for major Fair Workweek jurisdictions, but the MSP should verify settings against current law. Laws change — build a quarterly compliance review into the maintenance plan. For restaurants NOT in a Fair Workweek jurisdiction, still configure overtime alerts and break enforcement as these are universal best practices.

Step 9: Set Up Zapier Escalation Workflows

Create custom automation workflows in Zapier that extend 7shifts native capabilities. The primary workflow is a timed escalation for unfilled open shifts: if an open shift is not claimed within a configurable time window, escalate notifications to progressively higher levels of management.

Workflow 1: Open Shift Escalation

Trigger: 7shifts webhook → 'Open Shift Created'

1
Create new Zap → Trigger: Webhooks by Zapier → Catch Hook
2
Copy the webhook URL from Zapier
3
In 7shifts: Settings → Integrations → Webhooks → Add Webhook — Event: 'shift.open_created', URL: [paste Zapier webhook URL], Method: POST
4
Test the trigger by creating a test open shift in 7shifts
1
Step 1 (Trigger): Catch Webhook — receives open shift data (shift_id, role, date, start_time, end_time, location)
2
Step 2 (Delay): Delay by Zapier → Wait 2 hours
3
Step 3 (Filter): 7shifts API Lookup → GET /v2/shifts/{shift_id} — Check if shift status is still 'open' (not yet claimed). Filter: Only continue if status = 'open'
4
Step 4 (Action): Send SMS via Twilio — To: Assistant Manager phone number. Body: '⚠️ UNFILLED SHIFT ALERT: [Role] shift on [Date] [Start]-[End] has been open for 2 hours. Please review in 7shifts or contact available staff.'
5
Step 5 (Delay): Delay by Zapier → Wait 2 more hours (4 hours total)
6
Step 6 (Filter): 7shifts API Lookup → GET /v2/shifts/{shift_id} — Check if shift status is still 'open'. Filter: Only continue if status = 'open'
7
Step 7 (Action): Send SMS via Twilio — To: General Manager phone number. Body: '🚨 CRITICAL: [Role] shift on [Date] [Start]-[End] is STILL unfilled after 4 hours. Immediate action required.'

Workflow 2: Daily Schedule Summary for Managers

Trigger: Schedule by Zapier → Every day at 6:00 AM

1
Step 1: 7shifts API → GET /v2/shifts?start={today}&end={today}&location_id={id}
2
Step 2: Formatter → Create summary text of today's shifts
3
Step 3: Send Email or Slack message to GM with today's schedule summary
4
Step 4: Include count of any open/unfilled shifts

Workflow 3: New Schedule Published → Team Slack Notification

Trigger: 7shifts webhook → 'schedule.published'

1
Step 1: Catch Webhook
2
Step 2: Slack → Post message to #scheduling channel. Message: '📅 New schedule published for [Date Range]. Check the 7shifts app for your shifts!'

Zapier Configuration for 7shifts API Calls

In Zapier, use 'Code by Zapier' (JavaScript) for API calls:

Code by Zapier (JavaScript)
javascript
// fetch shift status from 7shifts API

const response = await fetch('https://api.7shifts.com/v2/shifts/' + inputData.shift_id, {
  headers: {
    'Authorization': 'Bearer ' + inputData.api_key,
    'Content-Type': 'application/json'
  }
});
const data = await response.json();
output = [{status: data.data.open, shift_id: data.data.id}];
Note

Zapier Professional plan allows 750 tasks/month, which is sufficient for a single restaurant location processing approximately 20–30 automated actions per day. If the restaurant generates more volume, upgrade to Zapier Teams (2,000 tasks/month). The 7shifts API key is generated in Settings → Integrations → API Keys. Store this securely — do not embed in client-visible locations. For MSPs managing multiple restaurants, consider n8n self-hosted (Step 10) instead of Zapier to avoid per-task billing.

Step 10: (Optional) Deploy n8n Self-Hosted Automation Engine

For MSPs managing 3+ restaurant clients, deploy a self-hosted n8n instance as a multi-tenant automation platform. This replaces Zapier with unlimited executions at a fixed monthly cost, and can be white-labeled under the MSP brand.

1
Provision a VPS (DigitalOcean or Hetzner recommended) — DigitalOcean: Create Droplet → Basic → $6/month (1 vCPU, 1GB RAM, 25GB SSD), Select Ubuntu 22.04 LTS
2
SSH into the server
3
Install Docker and Docker Compose
4
Create n8n directory and docker-compose file
5
Start n8n
6
Set up Nginx reverse proxy with SSL (via Certbot)
7
Verify n8n is running
8
Access n8n web UI at https://n8n.yourmsp.com — Log in with the basic auth credentials set above, then create workflows equivalent to the Zapier workflows in Step 9
SSH into the server
bash
ssh root@your-server-ip
Install Docker and Docker Compose
bash
apt update && apt upgrade -y
apt install -y docker.io docker-compose
systemctl enable docker
systemctl start docker
Create n8n directory and docker-compose.yml config file
bash
mkdir -p /opt/n8n && cd /opt/n8n

cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - '5678:5678'
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=mspadmin
      - N8N_BASIC_AUTH_PASSWORD=CHANGE_THIS_STRONG_PASSWORD
      - N8N_HOST=n8n.yourmsp.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.yourmsp.com/
      - GENERIC_TIMEZONE=America/New_York
      - N8N_ENCRYPTION_KEY=GENERATE_A_RANDOM_32_CHAR_KEY
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:
EOF
Start n8n
bash
docker-compose up -d
Set up Nginx reverse proxy with SSL via Certbot
bash
apt install -y nginx certbot python3-certbot-nginx

cat > /etc/nginx/sites-available/n8n << 'EOF'
server {
    server_name n8n.yourmsp.com;
    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        chunked_transfer_encoding off;
        proxy_buffering off;
        proxy_cache off;
    }
}
EOF

ln -s /etc/nginx/sites-available/n8n /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d n8n.yourmsp.com --non-interactive --agree-tos -m admin@yourmsp.com
Verify n8n is running
bash
curl https://n8n.yourmsp.com/healthz
# Expected response: {"status":"ok"}
Note

This step is OPTIONAL and only recommended for MSPs planning to serve multiple restaurant clients. For a single-client engagement, Zapier is simpler and faster to deploy. n8n Community Edition is free for unlimited executions but does not include SSO or advanced user management. For multi-tenant MSP use, consider n8n Enterprise for team features. Back up the n8n data volume weekly: docker run --rm -v n8n_data:/data -v /backups:/backups alpine tar czf /backups/n8n-backup-$(date +%Y%m%d).tar.gz /data

Step 11: Configure Twilio SMS for Custom Notifications

Set up a Twilio account and phone number for sending custom SMS notifications beyond what 7shifts provides natively. This enables the escalation workflows from Step 9 and provides a white-labeled SMS channel.

1
Create Twilio account at https://www.twilio.com/try-twilio — Verify identity and add payment method
2
Purchase a phone number: Twilio Console → Phone Numbers → Buy a Number. Select: Local number in restaurant's area code. Capabilities: SMS enabled. Cost: $1.15/month
3
Note your Twilio credentials: Account SID (found on Console Dashboard), Auth Token (found on Console Dashboard — click to reveal), Phone Number (the number you just purchased, e.g., +15551234567)
4
Test SMS sending via CLI (see command below)
5
Configure Twilio in Zapier: In Zapier → My Apps → Add Connection → Twilio. Enter Account SID and Auth Token. Select the purchased phone number as 'From' number
6
(If using n8n) Configure Twilio credentials in n8n: n8n → Credentials → Add Credential → Twilio. Enter Account SID, Auth Token, and From number
7
Set up Twilio usage alerts to prevent unexpected charges: Twilio Console → Billing → Usage Triggers. Create trigger: Alert when monthly spend exceeds $50. Notification: Email to MSP billing contact
Test SMS sending via the Twilio API
bash
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/YOUR_ACCOUNT_SID/Messages.json' \
  --data-urlencode 'From=+15551234567' \
  --data-urlencode 'To=+15559876543' \
  --data-urlencode 'Body=Test: Shift reminder system is operational.' \
  -u YOUR_ACCOUNT_SID:YOUR_AUTH_TOKEN
Note

Twilio SMS costs approximately $0.0083 per message sent plus carrier surcharges (~$0.003). For a 30-employee restaurant sending 2 reminders per employee per week plus escalation messages, expect $15–$40/month in Twilio charges. Consider setting up Twilio sub-accounts for each restaurant client to keep billing separate. If the restaurant prefers not to use SMS (cost or privacy concerns), the 7shifts built-in push notifications and email may be sufficient without Twilio.

Step 12: Install and Configure Manager Tablet

Set up the wall-mounted iPad as a dedicated scheduling dashboard in the restaurant's back office or kitchen hallway. Configure it in Guided Access mode to lock it to the 7shifts app.

1
Unbox and perform initial iPad setup. Connect to RestaurantName-Staff Wi-Fi network (VLAN 10). Sign in with a dedicated Apple ID created for the restaurant (e.g., ipad@restaurantname.com). Do NOT use personal Apple IDs.
2
Install 7shifts from App Store: Search '7shifts' → Install → Sign in with manager credentials.
3
Configure iPad settings for kiosk use: Settings → Display & Brightness → Auto-Lock → Never. Settings → Accessibility → Guided Access → ON. Set a Guided Access passcode (share with manager only, document for MSP).
4
Enable Guided Access: Open 7shifts app. Triple-click side button → Start Guided Access. This locks the iPad to the 7shifts app only.
5
Install wall mount: Mount the enclosure at eye level (approximately 5 feet from floor). Route power cable through wall or use cable management channel. Connect USB-C charger to continuous power. Secure iPad in enclosure with lock.
6
Test: Verify 7shifts dashboard loads and updates in real-time. Verify push notifications appear on-screen. Verify manager can approve shift swaps from the tablet. Test Guided Access exit (triple-click + passcode).
Note

The wall-mounted tablet serves as a passive information radiator — managers and staff can glance at today's schedule, see open shifts, and take action without logging into a computer. If the client prefers Android, substitute a Samsung Galaxy Tab A9+ ($219) with Samsung Knox Kiosk mode instead of Apple Guided Access. Ensure the tablet is positioned away from kitchen grease and steam — the back office hallway or break room is typically better than directly in the kitchen.

Step 13: Conduct Employee Onboarding Session

Run a 30–45 minute training session for all employees (in groups if needed to accommodate shifts). Cover app installation, notification setup, how to view schedules, request time off, pick up open shifts, and swap shifts. Run a separate 60-minute manager training session.

Employee Training Agenda (30–45 minutes)

1
Download and install 7shifts app (5 min): iOS: App Store → search '7shifts' | Android: Play Store → search '7shifts' | Sign in with the invitation link sent to their email/phone
2
Enable notifications (5 min): In 7shifts app: More → Notification Preferences → Enable ALL push notifications | On phone: Settings → 7shifts → Notifications → Allow
3
Set availability (5 min): In app: Availability tab → Set recurring weekly availability → Show how to request time off
4
View schedule (5 min): Show weekly and daily views | Show how to see who else is working
5
Open shifts and shift swap demo (10 min): Show how to pick up an open shift | Show how to offer a shift for trade | Explain manager approval process
6
Q&A (5–10 min)

Manager Training Agenda (60 minutes)

1
Schedule creation: drag-and-drop, templates, copy previous week (15 min)
2
Publishing schedules and notification behavior (5 min)
3
Managing open shifts and approving swaps (10 min)
4
Labor cost dashboard and POS sales integration (10 min)
5
Compliance features: overtime alerts, Fair Workweek warnings (10 min)
6
Running reports: labor cost %, hours by employee, schedule vs. actual (5 min)
7
Q&A (5 min)
  • Distribute printed quick-start guide to all employees (1-page, laminated)
  • Post a copy in the break room next to the tablet
Note

Schedule the employee training during a typically slow period (e.g., Tuesday 2–3 PM between lunch and dinner). You may need to run 2–3 sessions to cover all shifts. Prepare a one-page laminated quick-reference card with QR codes linking to the app download and a visual guide for the three most common actions: viewing schedule, picking up open shifts, and requesting time off. Leave 5 laminated copies with the manager. The manager training should be conducted separately and can be done 1-on-1 with the GM.

Step 14: Test All Automations End-to-End

Conduct a comprehensive test of every automated workflow before going live. Create test scenarios that exercise shift reminders, open shift broadcasting, escalation workflows, and compliance guardrails.

Test 1: Shift Reminder

1
Create a test shift for a willing employee, starting 24 hours from now
2
Publish the schedule
3
Wait 24 hours (or temporarily change reminder timing to 5 minutes for testing)
4
Verify: Employee receives push notification + SMS reminder
5
Expected: Notification received on employee's phone within 1 minute

Test 2: Open Shift Broadcast

1
Create an open shift for 'Server' role
2
Publish the schedule
3
Verify: All employees with 'Server' role receive push notification about open shift
4
Have a test employee claim the shift
5
Verify: Manager receives approval request notification
6
Manager approves
7
Verify: Employee receives confirmation notification
8
Expected: Full round-trip in under 5 minutes

Test 3: Escalation Workflow (Zapier)

1
Create an open shift and do NOT have anyone claim it
2
Wait for Zapier delay (2 hours) — or temporarily set to 5 minutes for testing
3
Verify: Assistant Manager receives Twilio SMS escalation
4
Continue waiting for second escalation
5
Verify: GM receives Twilio SMS escalation
6
Expected: Both SMS messages arrive at correct times with correct content

Test 4: Compliance Guardrails

1
Try to schedule an employee for more than 40 hours in one week — Verify: 7shifts displays overtime warning
2
Try to schedule a clopening shift (close at 11 PM, open at 7 AM = 8hr gap) — Verify: 7shifts displays rest period warning (if Fair Workweek enabled)
3
Try to schedule a minor employee past restricted hours — Verify: 7shifts blocks the shift assignment

Test 5: POS Data Sync

1
Check 7shifts Dashboard → Sales
2
Verify yesterday's sales figures match the POS report
3
Verify labor cost percentage is calculating correctly

Test 6: Shift Swap

1
Have Employee A offer their shift for trade
2
Have Employee B accept the trade
3
Verify: Manager receives swap approval request
4
Manager approves
5
Verify: Both employees receive updated schedule notifications
Note

For time-sensitive tests (like the 2-hour delay in the escalation workflow), temporarily modify the Zapier Zap to use a 5-minute delay during testing, then change back to 2 hours before go-live. Keep a test log documenting each test case, expected result, actual result, and pass/fail status. Any failures should be resolved before proceeding to the parallel run period.

Step 15: Go Live with Parallel Run and Cutover

Run the automated system in parallel with the existing manual process for one full schedule cycle (typically one week). After confirming everything works correctly, cut over fully to the automated system.

Week 1: Parallel Run

1
Manager creates schedule in 7shifts AND continues any existing manual process
2
Monitor: Are all shift reminders firing? Check 7shifts notification log — 7shifts Admin → Reports → Notifications
3
Monitor: Are employees seeing and responding to open shift broadcasts?
4
Monitor: Are Zapier workflows executing correctly? — Zapier → Zap History → Review all runs for errors
5
Monitor: Is POS data syncing daily?
6
Collect feedback from managers and employees

End of Week 1 Review

  • Compare automated results vs. manual process results
  • Document any issues or adjustments needed
  • Get manager sign-off to proceed to full cutover

Week 2: Full Cutover

1
Disable/discontinue the old manual scheduling process
2
Manager relies 100% on 7shifts for schedule creation and communication
3
MSP monitors Zapier task history and 7shifts notification logs daily for first week
4
Address any issues same-day

Post-Cutover (Week 3–4)

1
Review scheduling efficiency metrics: average time to fill open shifts, no-show rate (compare to pre-automation baseline), manager hours spent on scheduling, labor cost % vs. target
2
Fine-tune automation rules based on real-world data
3
Schedule 30-day review meeting with client
Note

The parallel run is essential — do not skip it. Restaurants cannot afford a scheduling failure during a busy Friday dinner service. If any critical issues are found during the parallel run, extend it by another week. Common issues during parallel run: employees not enabling push notifications (follow up individually), Zapier webhook URL misconfiguration (verify in Zap history), POS integration time zone mismatch (verify in 7shifts location settings).

Custom AI Components

Open Shift Escalation Workflow

Type: workflow A multi-step automation workflow that monitors unfilled open shifts and progressively escalates notifications to management. When an open shift is created in 7shifts, the workflow waits for defined time intervals and checks whether the shift has been claimed. If not, it sends SMS alerts to increasingly senior managers. This is the primary value-add automation beyond native 7shifts capabilities.

Implementation

Zapier Implementation

Platform: Zapier (Professional Plan) or n8n (self-hosted) Trigger: 7shifts Webhook — shift.open_created Zap Name: 'Open Shift Escalation - [Location Name]'

1
Trigger — Webhooks by Zapier (Catch Hook): Event: Catch Hook. Webhook URL is auto-generated by Zapier; copy to 7shifts webhook config. Payload fields expected: shift_id (integer), role_name (string), location_name (string), start_date (ISO 8601 datetime), end_date (ISO 8601 datetime).
2
Formatter by Zapier — Format Dates: Action: Date/Time → Format. Input: {{start_date}}, To Format: 'MMM D, YYYY h:mm A' (e.g., 'Jan 15, 2025 5:00 PM'), store as: formatted_start. Repeat for end_date → formatted_end.
3
Delay by Zapier: Action: Delay For. Duration: 2, Unit: Hours. This is the Level 1 escalation delay.
4
Code by Zapier (JavaScript) — Check Shift Status: Input Data: shift_id from Step 1, api_key stored in Zapier secret field. See code block below.
5
Filter by Zapier: Condition: is_still_open (Text) Exactly matches 'yes'. If no match → Zap stops (shift was claimed, no escalation needed).
6
Twilio — Send SMS (Level 1 Escalation): Action: Send SMS. From Number: +15551234567 (Twilio number). To Number: +1XXXXXXXXXX (Assistant Manager mobile — hardcode or use lookup table). See message body below.
7
Delay by Zapier: Action: Delay For. Duration: 2, Unit: Hours. Level 2 escalation — 4 hours total since shift was posted.
8
Code by Zapier (JavaScript) — Re-check Shift Status: Same code as Step 4.
9
Filter by Zapier: Same filter as Step 5.
10
Twilio — Send SMS (Level 2 Escalation): From Number: +15551234567. To Number: +1XXXXXXXXXX (General Manager mobile). See message body below.
Step 4 & 8: Code by Zapier
javascript
// Check Shift Status via 7shifts API

const response = await fetch(
  `https://api.7shifts.com/v2/company/YOUR_COMPANY_ID/shifts/${inputData.shift_id}`,
  {
    method: 'GET',
    headers: {
      'Authorization': `Bearer ${inputData.api_key}`,
      'Content-Type': 'application/json',
      'x-api-version': '2022-05-01'
    }
  }
);
const data = await response.json();
const isOpen = data.data.open === true && data.data.open_offer_type !== null;
output = [{ is_still_open: isOpen ? 'yes' : 'no', shift_id: inputData.shift_id }];
Step 6: Twilio SMS Body
text
# Level 1 Escalation (to Assistant Manager)

⚠️ OPEN SHIFT ALERT
{{role_name}} shift at {{location_name}}
{{formatted_start}} - {{formatted_end}}
This shift has been open for 2 hours with no takers.
Please review in 7shifts and contact available staff.
Reply STOP to opt out.
Step 10: Twilio SMS Body
text
# Level 2 Escalation (to General Manager)

🚨 CRITICAL SHIFT ALERT
{{role_name}} shift at {{location_name}}
{{formatted_start}} - {{formatted_end}}
UNFILLED for 4+ hours. Immediate action required.
Options: Approve overtime for existing staff, call in backup, or cover personally.
Reply STOP to opt out.

n8n Implementation (Alternative)

n8n Workflow JSON — import directly into n8n
json
{
  "name": "Open Shift Escalation",
  "nodes": [
    {
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [250, 300],
      "parameters": {
        "httpMethod": "POST",
        "path": "open-shift-webhook",
        "responseMode": "onReceived"
      }
    },
    {
      "name": "Wait 2 Hours",
      "type": "n8n-nodes-base.wait",
      "position": [450, 300],
      "parameters": {
        "amount": 2,
        "unit": "hours"
      }
    },
    {
      "name": "Check Shift Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [650, 300],
      "parameters": {
        "method": "GET",
        "url": "=https://api.7shifts.com/v2/company/{{$env.SEVENSHIFTS_COMPANY_ID}}/shifts/{{$json.shift_id}}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            { "name": "Authorization", "value": "=Bearer {{$env.SEVENSHIFTS_API_KEY}}" },
            { "name": "x-api-version", "value": "2022-05-01" }
          ]
        }
      }
    },
    {
      "name": "Is Still Open?",
      "type": "n8n-nodes-base.if",
      "position": [850, 300],
      "parameters": {
        "conditions": {
          "boolean": [{ "value1": "={{$json.data.open}}", "value2": true }]
        }
      }
    },
    {
      "name": "SMS to Asst Manager",
      "type": "n8n-nodes-base.twilio",
      "position": [1050, 200],
      "parameters": {
        "from": "+15551234567",
        "to": "+1XXXXXXXXXX",
        "message": "=⚠️ OPEN SHIFT: {{$node['Webhook Trigger'].json.role_name}} on {{$node['Webhook Trigger'].json.start_date}}. Open 2+ hrs. Review in 7shifts."
      }
    },
    {
      "name": "Wait 2 More Hours",
      "type": "n8n-nodes-base.wait",
      "position": [1250, 200],
      "parameters": { "amount": 2, "unit": "hours" }
    },
    {
      "name": "Re-check Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [1450, 200],
      "parameters": { "method": "GET", "url": "=https://api.7shifts.com/v2/company/{{$env.SEVENSHIFTS_COMPANY_ID}}/shifts/{{$node['Webhook Trigger'].json.shift_id}}" }
    },
    {
      "name": "Still Open L2?",
      "type": "n8n-nodes-base.if",
      "position": [1650, 200],
      "parameters": {
        "conditions": { "boolean": [{ "value1": "={{$json.data.open}}", "value2": true }] }
      }
    },
    {
      "name": "SMS to GM",
      "type": "n8n-nodes-base.twilio",
      "position": [1850, 100],
      "parameters": {
        "from": "+15551234567",
        "to": "+1YYYYYYYYYY",
        "message": "=🚨 CRITICAL: {{$node['Webhook Trigger'].json.role_name}} shift STILL unfilled after 4hrs. Immediate action needed."
      }
    }
  ],
  "connections": {
    "Webhook Trigger": { "main": [[{ "node": "Wait 2 Hours" }]] },
    "Wait 2 Hours": { "main": [[{ "node": "Check Shift Status" }]] },
    "Check Shift Status": { "main": [[{ "node": "Is Still Open?" }]] },
    "Is Still Open?": { "main": [[{ "node": "SMS to Asst Manager" }], []] },
    "SMS to Asst Manager": { "main": [[{ "node": "Wait 2 More Hours" }]] },
    "Wait 2 More Hours": { "main": [[{ "node": "Re-check Status" }]] },
    "Re-check Status": { "main": [[{ "node": "Still Open L2?" }]] },
    "Still Open L2?": { "main": [[{ "node": "SMS to GM" }], []] }
  }
}

7shifts Webhook Configuration

1
In 7shifts Admin, navigate to Settings → Integrations → Webhooks.
2
Add a new webhook with the following settings: Event: shift.open_created, Method: POST, Status: Active.
3
Set the URL to your platform endpoint: Zapier: https://hooks.zapier.com/hooks/catch/XXXXXX/YYYYYY/ — or — n8n: https://n8n.yourmsp.com/webhook/open-shift-webhook

Daily Manager Briefing Workflow

Type: workflow

An automated daily workflow that compiles today's schedule summary, highlights any open or unfilled shifts, reports yesterday's labor cost percentage against target, and delivers it to the GM via email or Slack every morning at 6:00 AM. This gives managers a proactive daily briefing without needing to log into any system.

Implementation:

  • Platform: Zapier or n8n
  • Trigger: Daily schedule at 6:00 AM local time

Zapier Implementation

Zap Name: 'Daily Manager Briefing - [Location Name]'

1
Trigger — Schedule by Zapier: Event: Every Day | Time of Day: 6:00 AM | Timezone: (restaurant's timezone, e.g., America/New_York)
2
Code by Zapier (JavaScript) — Fetch Today's Shifts: Input Data: api_key (stored in secret field), company_id: YOUR_COMPANY_ID, location_id: YOUR_LOCATION_ID
3
Gmail / Outlook — Send Email: To: gm@restaurantname.com | Subject: '📋 Schedule Briefing {{date}} - {{open_count}} Open Shifts' | Body: {{summary}} | (Or use Slack → Post Message if client uses Slack)
4
Step 4 (Conditional): IF open_count > 0 — Additional SMS via Twilio to GM: '⚠️ You have {{open_count}} unfilled shift(s) today. Check email for details.'
Step 2: Code by Zapier (JavaScript)
javascript
// Fetch Today's Shifts and build schedule summary

const today = new Date().toISOString().split('T')[0];
const url = `https://api.7shifts.com/v2/company/${inputData.company_id}/shifts?location_id=${inputData.location_id}&start[gte]=${today}T00:00:00&start[lte]=${today}T23:59:59&sortBy=start&sortDir=asc`;

const response = await fetch(url, {
  headers: {
    'Authorization': `Bearer ${inputData.api_key}`,
    'x-api-version': '2022-05-01'
  }
});
const data = await response.json();
const shifts = data.data || [];

let totalShifts = shifts.length;
let openShifts = shifts.filter(s => s.open === true).length;
let filledShifts = totalShifts - openShifts;

let scheduleLines = shifts.map(s => {
  const start = new Date(s.start).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit'});
  const end = new Date(s.end).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit'});
  const name = s.user ? `${s.user.first_name} ${s.user.last_name}` : '⚠️ OPEN';
  const role = s.role ? s.role.name : 'Unknown';
  return `${start}-${end} | ${role} | ${name}`;
}).join('\n');

let summary = `📋 DAILY SCHEDULE BRIEFING - ${today}\n`;
summary += `━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`;
summary += `Total Shifts: ${totalShifts} | Filled: ${filledShifts} | ⚠️ Open: ${openShifts}\n`;
summary += `━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`;
summary += scheduleLines;

if (openShifts > 0) {
  summary += `\n\n🚨 ACTION REQUIRED: ${openShifts} shift(s) still need to be filled!`;
}

output = [{ summary: summary, open_count: openShifts, total_count: totalShifts, date: today }];
Note

Configuration Notes: - Replace YOUR_COMPANY_ID and YOUR_LOCATION_ID with actual 7shifts IDs - 7shifts company ID is visible in the URL when logged into the admin dashboard - Location ID can be found via API: GET /v2/company/{company_id}/locations - For multi-location clients, duplicate this Zap for each location - API key is generated at: 7shifts → Settings → Integrations → API Keys

Shift-Fill Rate Tracker

Type: integration A Google Sheets integration that logs every open shift event and its resolution (filled/unfilled, time to fill, who filled it) to provide the restaurant owner with a weekly KPI dashboard showing shift-fill rates, average time to fill, and most reliable employees for pickups. This data justifies the automation investment and identifies staffing gaps.

Implementation

Google Sheet Setup

Create a Google Sheet named Shift Fill Tracker - [Restaurant Name] with Sheet 1: Open Shift Log

  • A: Timestamp (when shift was posted as open)
  • B: Shift ID
  • C: Shift Date
  • D: Shift Start Time
  • E: Shift End Time
  • F: Role
  • G: Department
  • H: Status (Open / Filled / Unfilled)
  • I: Filled By (employee name, if filled)
  • J: Time to Fill (hours, calculated)
  • K: Escalation Level Reached (0=none, 1=asst mgr, 2=GM)
  • L: Location

Zapier Implementation — Zap 1: Log Open Shift Created

1
Trigger: Webhooks by Zapier → Catch Hook (same webhook as escalation workflow)
2
Action: Google Sheets → Create Spreadsheet Row
3
Spreadsheet: 'Shift Fill Tracker'
4
Worksheet: 'Open Shift Log'
Zap 1 column mappings for Create Spreadsheet Row action
text
A (Timestamp): {{zap_meta_human_now}}
B (Shift ID): {{shift_id}}
C (Shift Date): {{start_date formatted as MMM D, YYYY}}
D (Start Time): {{start_time}}
E (End Time): {{end_time}}
F (Role): {{role_name}}
G (Department): {{department_name}}
H (Status): 'Open'
I (Filled By): ''
J (Time to Fill): ''
K (Escalation): 0
L (Location): {{location_name}}

Zapier Implementation — Zap 2: Update When Shift Filled

1
Trigger: 7shifts Webhook → shift.updated (filter: was open, now assigned)
2
Step 1: Catch Hook
3
Step 2: Filter → Only continue if shift was previously open and is now assigned
4
Step 3: Google Sheets → Lookup Spreadsheet Row — Lookup Column: B (Shift ID), Lookup Value: {{shift_id}}
5
Step 4: Google Sheets → Update Spreadsheet Row — H (Status): 'Filled', I (Filled By): {{assigned_user_first_name}} {{assigned_user_last_name}}, J (Time to Fill): (calculate hours between original timestamp and now)

Weekly Dashboard — Sheet 2 Formulas

Create Sheet 2 named Weekly Dashboard and add the following formulas:

Google Sheets formulas for the Weekly Dashboard tab
excel
Total Open Shifts This Week:
=COUNTIFS('Open Shift Log'!C:C,">="&(TODAY()-7),'Open Shift Log'!C:C,"<="&TODAY())

Fill Rate:
=COUNTIFS('Open Shift Log'!H:H,"Filled",'Open Shift Log'!C:C,">="&(TODAY()-7))/COUNTIFS('Open Shift Log'!C:C,">="&(TODAY()-7))

Avg Time to Fill (hours):
=AVERAGEIFS('Open Shift Log'!J:J,'Open Shift Log'!C:C,">="&(TODAY()-7),'Open Shift Log'!H:H,"Filled")

Escalation Rate:
=COUNTIFS('Open Shift Log'!K:K,">0",'Open Shift Log'!C:C,">="&(TODAY()-7))/COUNTIFS('Open Shift Log'!C:C,">="&(TODAY()-7))

Top Pickup Employees:
=COUNTIF on column I to find most frequent names
Note

Share the Google Sheet with the restaurant owner (view-only) and the MSP team (edit).

Fair Workweek Compliance Monitor

Type: workflow

A weekly automated compliance check that reviews published schedules against Fair Workweek requirements and sends a summary report to the restaurant manager. While 7shifts has built-in compliance warnings during schedule creation, this workflow provides a secondary audit layer that catches any violations that may have been overridden or missed, creating a documented compliance trail.

Implementation:

  • Platform: Zapier with Code by Zapier or n8n
  • Trigger: Weekly on Monday at 7:00 AM
  • Purpose: Audit next week's published schedule for compliance violations

Zapier Implementation — Zap Name: Weekly Compliance Audit - [Location Name]

1
Trigger — Schedule by Zapier: Every Week on Monday at 7:00 AM
2
Code by Zapier (JavaScript) — Fetch Next Week's Shifts (see code block below)
3
Send Email: To gm@restaurantname.com, msp-support@mspname.com | Subject: 'Compliance Audit {{period}} - {{violation_count}} Violations, {{warning_count}} Warnings' | Body: {{report}}
4
Conditional — If violation_count > 0: Send SMS to GM via Twilio: '🚨 Schedule compliance violations detected for next week. Check email for details. Action required before schedule takes effect.'
Step 2: Code by Zapier (JavaScript)
javascript
// Fetch and audit next week's shifts for compliance violations

const api_key = inputData.api_key;
const company_id = inputData.company_id;
const location_id = inputData.location_id;

// Calculate next week date range
const today = new Date();
const nextMonday = new Date(today);
nextMonday.setDate(today.getDate() + (1 + 7 - today.getDay()) % 7);
const nextSunday = new Date(nextMonday);
nextSunday.setDate(nextMonday.getDate() + 6);

const startDate = nextMonday.toISOString().split('T')[0];
const endDate = nextSunday.toISOString().split('T')[0];

// Fetch all shifts for next week
const url = `https://api.7shifts.com/v2/company/${company_id}/shifts?location_id=${location_id}&start[gte]=${startDate}T00:00:00&start[lte]=${endDate}T23:59:59&sortBy=start&sortDir=asc`;

const response = await fetch(url, {
  headers: {
    'Authorization': `Bearer ${api_key}`,
    'x-api-version': '2022-05-01'
  }
});
const data = await response.json();
const shifts = data.data || [];

// Group shifts by employee
const employeeShifts = {};
shifts.forEach(s => {
  if (s.user) {
    const name = `${s.user.first_name} ${s.user.last_name}`;
    if (!employeeShifts[name]) employeeShifts[name] = [];
    employeeShifts[name].push(s);
  }
});

let violations = [];
let warnings = [];

Object.entries(employeeShifts).forEach(([name, empShifts]) => {
  // Check 1: Total weekly hours > 40 (overtime risk)
  let totalHours = 0;
  empShifts.forEach(s => {
    const start = new Date(s.start);
    const end = new Date(s.end);
    totalHours += (end - start) / 3600000;
  });
  if (totalHours > 40) {
    violations.push(`⚠️ OVERTIME: ${name} scheduled for ${totalHours.toFixed(1)} hours (exceeds 40)`);
  } else if (totalHours > 35) {
    warnings.push(`📋 ${name}: ${totalHours.toFixed(1)} hours (approaching overtime)`);
  }

  // Check 2: Clopening (less than 11 hours between shifts)
  const sorted = empShifts.sort((a, b) => new Date(a.start) - new Date(b.start));
  for (let i = 1; i < sorted.length; i++) {
    const prevEnd = new Date(sorted[i-1].end);
    const currStart = new Date(sorted[i].start);
    const gap = (currStart - prevEnd) / 3600000;
    if (gap < 11 && gap > 0) {
      violations.push(`🚫 CLOPENING: ${name} has only ${gap.toFixed(1)}hr gap between shifts on ${prevEnd.toLocaleDateString()} and ${currStart.toLocaleDateString()}`);
    }
  }
});

// Check 3: Open/unfilled shifts
const openShifts = shifts.filter(s => s.open === true);
if (openShifts.length > 0) {
  warnings.push(`📭 ${openShifts.length} open shift(s) still need to be filled for next week`);
}

let report = `📋 WEEKLY COMPLIANCE AUDIT\n`;
report += `Schedule Period: ${startDate} to ${endDate}\n`;
report += `Total Shifts Scheduled: ${shifts.length}\n\n`;

if (violations.length > 0) {
  report += `🚨 VIOLATIONS (${violations.length}):\n${violations.join('\n')}\n\n`;
} else {
  report += `✅ No compliance violations detected.\n\n`;
}

if (warnings.length > 0) {
  report += `⚠️ WARNINGS (${warnings.length}):\n${warnings.join('\n')}\n`;
}

output = [{
  report: report,
  violation_count: violations.length,
  warning_count: warnings.length,
  period: `${startDate} to ${endDate}`
}];
Note

This workflow checks for the two most common Fair Workweek violations: overtime and clopening. Extend the code to check jurisdiction-specific rules. The MSP receives a copy of every audit report for documentation. This creates a paper trail demonstrating proactive compliance monitoring. Adjust the 11-hour clopening threshold based on jurisdiction (some require 10 or 12 hours).

Testing & Validation

  • SHIFT REMINDER TEST: Create a test shift assigned to the MSP technician's phone number, set to start in 24 hours. Publish the schedule. Verify that a push notification is received on the technician's phone within 5 minutes. Then verify a second reminder arrives approximately 2 hours before the shift start time (if configured).
  • OPEN SHIFT BROADCAST TEST: Create an open shift for the 'Server' role on tomorrow's schedule. Publish it. Verify that at least 3 employees with the Server role receive push notifications about the open shift within 5 minutes. Have one employee tap 'Pick Up' in the app and verify the manager receives an approval request notification.
  • SHIFT SWAP TEST: Assign Employee A to a test shift. Have Employee A open the 7shifts app and offer the shift for trade. Have Employee B (same role) accept the trade. Verify the manager receives a swap approval notification, approves it, and both employees receive updated schedule confirmations.
  • ZAPIER ESCALATION WORKFLOW TEST: Create an open shift and ensure no one claims it. Temporarily set the Zapier delay to 5 minutes (instead of 2 hours). Verify that the Assistant Manager receives an SMS from the Twilio number within 6 minutes. Continue waiting and verify the GM receives the Level 2 SMS within 12 minutes. After testing, reset delays to production values (2 hours and 4 hours).
  • POS SALES DATA SYNC TEST: Log into the 7shifts admin dashboard and navigate to the Sales section. Verify that yesterday's total sales figure matches the POS system's daily sales report within a 1% tolerance. Verify that the labor cost percentage is displaying and calculating correctly (scheduled labor cost / sales revenue).
  • COMPLIANCE GUARDRAIL TEST - OVERTIME: Attempt to schedule one employee for 42 hours in a single week using the 7shifts schedule editor. Verify that 7shifts displays an overtime warning before publishing. Document the warning message text and screenshot it.
  • COMPLIANCE GUARDRAIL TEST - CLOPENING: Attempt to schedule an employee for a closing shift ending at 11:00 PM and an opening shift starting at 7:00 AM the next day (8-hour gap, less than 11 hours). Verify that 7shifts displays a clopening/rest period violation warning if Fair Workweek is configured for the jurisdiction.
  • COMPLIANCE GUARDRAIL TEST - MINOR RESTRICTIONS: If the restaurant employs anyone under 18, attempt to schedule a minor for a shift ending after 10:00 PM on a school night. Verify that 7shifts blocks or warns against this assignment.
  • DAILY BRIEFING WORKFLOW TEST: Manually trigger the Daily Manager Briefing Zap in Zapier (or run the n8n workflow manually). Verify that the GM receives an email within 5 minutes containing today's schedule summary with accurate shift counts, employee names, and open shift count. Verify the format is readable and all data matches the 7shifts schedule.
  • NETWORK CONNECTIVITY TEST: On the wall-mounted iPad in the back office, force-close and reopen the 7shifts app. Verify it loads the current schedule within 10 seconds. Walk through the restaurant with a smartphone connected to the Staff Wi-Fi and verify signal strength remains above -65 dBm in the kitchen, dining area, and break room using the WiFiman app.
  • EMPLOYEE NOTIFICATION DELIVERY AUDIT: After one full day of operation, log into the 7shifts admin panel and navigate to Reports → Notifications. Verify that all scheduled shift reminders were delivered successfully. Identify any employees who did not receive notifications and troubleshoot (app not installed, notifications disabled on phone, invalid phone number).
  • GOOGLE SHEETS LOGGING TEST: After the escalation workflow runs at least once, verify that the Shift Fill Tracker Google Sheet has been populated with a row containing the correct shift ID, date, role, timestamps, and status. Verify that the 'Filled By' and 'Time to Fill' columns update correctly when the open shift is subsequently claimed.
  • END-TO-END CALL-OFF SCENARIO TEST: Simulate a realistic call-off scenario: a scheduled Server calls off (manager marks them as absent in 7shifts), the shift becomes open, open shift broadcast fires to all Servers, one Server claims it, manager approves, the claiming Server receives confirmation, and the Google Sheet logs the entire event. Time the entire process from call-off to confirmed replacement.

Client Handoff

The client handoff meeting should be a 60–90 minute on-site session with the General Manager and any Assistant Managers. Cover the following topics:

1
SCHEDULE CREATION WALKTHROUGH: Demonstrate how to create a weekly schedule using drag-and-drop in 7shifts, use the schedule template feature to copy the previous week, and publish the schedule with the required advance notice for Fair Workweek compliance.
2
OPEN SHIFT AND SWAP MANAGEMENT: Show how to create open shifts, how the auto-broadcast notification works, how to approve/deny shift pickups and swaps from both the web dashboard and the mobile app.
3
NOTIFICATION SYSTEM OVERVIEW: Explain the multi-channel notification flow (push → SMS → email), the escalation workflow timing (2-hour and 4-hour alerts), and who receives each level of escalation. Provide a printed diagram of the escalation flow.
4
COMPLIANCE DASHBOARD: Walk through the compliance alerts, show where overtime and clopening warnings appear, and demonstrate how to interpret and act on the weekly compliance audit email.
5
REPORTING: Show how to access labor cost reports, schedule vs. actual reports, and the Shift Fill Tracker Google Sheet. Review the KPI definitions (fill rate, time to fill, escalation rate).
6
EMPLOYEE APP SUPPORT: Provide a troubleshooting FAQ for common employee issues: app won't load, notifications not working, can't see schedule, etc. Leave 5 laminated quick-reference cards for distribution to new hires.
7
MSP SUPPORT PROCESS: Define the support contact method (email, phone, ticketing system), response time SLA (e.g., 4-hour response during business hours, next business day for non-urgent), and escalation path.
8
DOCUMENTATION PACKAGE: Leave behind a printed and digital binder containing: system architecture diagram, login credentials (sealed envelope to GM), notification flow diagram, compliance configuration summary, Zapier workflow descriptions, weekly compliance audit sample, employee quick-start guide, and MSP support contact card.
9
SUCCESS CRITERIA REVIEW: Review the pre-defined success metrics with the client: target shift fill rate >90%, average time to fill <3 hours, no-show rate reduction >30% from baseline, manager scheduling time reduction >50%, and zero compliance violations. Schedule a 30-day review meeting to assess these metrics.

Maintenance

Weekly Responsibilities

  • Review Zapier task history for failed executions (Zapier → Zap History → filter by errors)
  • Check 7shifts notification delivery logs
  • Review the Shift Fill Tracker Google Sheet for trends
  • Estimated time: 15–20 minutes per client per week

Monthly Responsibilities

  • Run a comprehensive test of all automation workflows (shift reminder, escalation, daily briefing, compliance audit)
  • Verify POS integration is syncing daily sales data
  • Review Twilio usage and charges
  • Update employee roster in 7shifts if there have been hires/terminations that the manager hasn't entered
  • Review and update the compliance configuration if any labor law changes have occurred
  • Generate a monthly KPI report for the client (fill rate, time to fill, compliance score)
  • Estimated time: 1–2 hours per client per month

Quarterly Responsibilities

  • Conduct a compliance regulation review — check for new or updated Fair Workweek laws in the client's jurisdiction
  • Review 7shifts platform release notes for new features that could benefit the client
  • Assess whether escalation timing or notification rules need adjustment based on 3 months of data
  • Review network performance (Wi-Fi coverage, AP health, switch logs via UniFi dashboard)
  • Meet with the client to review quarterly KPIs and discuss optimization
  • Estimated time: 2–3 hours per client per quarter

Annual Responsibilities

  • Renew 7shifts subscription (verify plan still meets needs; consider upgrading from Entrée to The Works if multi-location or advanced features needed)
  • Review and renegotiate Zapier plan based on actual task volume
  • Audit all user accounts and remove former employees
  • Update the iPad (iOS update, app update)
  • Full network health check

SLA Considerations

Critical

Scheduling system downtime during peak hours (Friday 4–8 PM, Saturday 5–9 PM) is critical — define a 1-hour response time for P1 issues during these windows.

  • P1 issues: system completely down, notifications not sending, compliance engine disabled
  • P2 issues: single workflow failure, one employee can't access app, reporting discrepancy
  • P3 issues: feature requests, minor UI issues, documentation updates

Escalation Path

1
Employee issue → Manager resolves via 7shifts app
2
Manager issue → MSP L1 support (password resets, app troubleshooting, basic configuration)
3
Automation failure → MSP L2 support (Zapier/n8n debugging, API issues, webhook repair)
4
Platform outage → 7shifts vendor support (https://support.7shifts.com) + MSP monitors status page
5
Network issue → MSP L2/L3 (UniFi remote management, on-site visit if needed)

Model Retraining / Rule Review

Note

Not applicable — this is deterministic automation, not ML-based. However, automation rules should be reviewed and adjusted quarterly based on data: if the average time to fill is consistently under 1 hour, the first escalation delay can be extended from 2 hours to 3 hours. If certain roles are harder to fill, role-specific escalation rules can be created.

Alternatives

Homebase as Primary Scheduling Platform

HotSchedules (Fourth) for Multi-Unit Chains

Replace 7shifts with HotSchedules for restaurant groups with 5+ locations. HotSchedules is the industry incumbent with the deepest enterprise features: labor demand forecasting, cross-location shift sharing, corporate-level reporting, and native integrations with Oracle MICROS and NCR Aloha POS systems. Requires annual commitment and custom pricing.

Microsoft Power Automate Instead of Zapier

Replace Zapier with Microsoft Power Automate for the workflow automation layer. Best suited for restaurants whose management team already uses Microsoft 365 (Outlook, Teams, SharePoint). Power Automate provides similar trigger-action workflows with deeper Microsoft ecosystem integration.

n8n Self-Hosted as Primary Automation Engine

Replace Zapier entirely with a self-hosted n8n Community Edition instance managed by the MSP. This provides unlimited workflow executions at a fixed infrastructure cost, can serve multiple restaurant clients from a single instance, and is fully white-labelable under the MSP brand.

Note

Implement proper backups and consider a high-availability setup for production use to mitigate the single point of failure risk when serving multiple restaurant clients.

Sling for Budget-Conscious Single Location

Replace 7shifts with Sling, which offers the most generous free tier in the market: free scheduling for up to 30 users with no location restrictions. Sling includes shift alerts, shift offers, messaging, and basic time tracking at no cost.

Fully Custom Solution with Twilio + Google Sheets + Apps Script

Skip the scheduling platform entirely and build a lightweight custom solution using Google Sheets as the schedule database, Google Apps Script for automation logic, and Twilio for SMS notifications. Employees view their schedule via a shared Google Sheet or simple web app.

Warning

RECOMMENDATION: Almost never recommended. Only consider for a restaurant with 5 or fewer employees where the owner refuses all software subscriptions and only needs basic shift reminders via SMS. The long-term maintenance cost will likely exceed the cost of a proper scheduling platform subscription.

Want early access to the full toolkit?