Make changes below — use "Date effective from" for future changes
Full Name
Employee Code *
From Amanah HR. Required and must be unique.
Position
Country
Area Manager
Store
Also manages
For a store manager who also looks after another store. They can then review and see the induction of that store's team in Develop, as well as their own. Saved on its own with Save stores, not with Save below.
Contracted Hours / Week
⚠️ Auto-detected as Emirati (36h) — adjust if needed
Clock-In PIN (6 digits)
Leave blank to keep the existing PIN. Type 6 digits to set a new one. Reveal current PIN shows the staff's existing PIN — every reveal is audit-logged with your name and timestamp.
Privacy notice
Use this to make a single staff re-prompt for the privacy notice on their next clock-in. Useful after testing on a real account.
Day Off
Date Effective From
Leave blank (or use today's date) to apply now. Dated changes are not supported yet: a future date will not be saved, so make a transfer, name or role change on the day.
Role history
Add Staff Member
New starter or transfer from another company
Full Name
Employee Code *
From Amanah HR. Required and must be unique.
Position
Country
Area Manager
Store
Start Date (Date effective from)
Use today's date. Future start dates are not supported yet: add a new starter on their first day, or add them now with today's date.
Clock-In PIN (6 digits) *
Required. Set a PIN now and share it with the staff member. They use it to clock in/out and verify identity. Do NOT use 000000, 123456, or sequences staff might guess.
Raise a leave request
For a person in your stores. Nothing goes on the rota until it is approved.
Staff Member
Type of leave
First day
Last day
TOIL hours for one day (leave empty for whole days)
Reason for the paid leave
Annual or emergency leave
Proof of the emergency must be given to HR.Emergency leave is at most 15 days.
Local contact number while on leave
Home-town contact number
Reason for leave
Company property to return before leave (leave all unticked if none)
ShiftAdmin
Loading...
-
🔒 Concerns
Today · Daily brief
–
Total Staff
–
Stores
–
Pending Requests
–
Area Managers
⭐ Customer Satisfaction
Staff by Area Manager
Loading…
📥 Staff changes to review (Amanah)
Name and hours changes from Amanah now apply by themselves. Store transfers, leavers and new recruits wait here: click "Review Amanah changes" to see them, then approve.
People
📥 Amanah HR Import
How it works:
Drop the .xlsx file exported from Amanah — columns can vary (Smart parsing handles spelling drift, reordered columns, and new fields).
Review the store-name mapping (AI auto-matches against known app stores — fix any ⚠ rows)
Review the diff (new / changed / missing / on-notice)
Turn off Dry run to enable Apply
Upload File
📥
Drop your Amanah file(s) here
.xlsx or .csv — one or more files — click to browse
Review Changes
0 new0 changed0 missing0 unchanged0 errors
Applying…0 / 0
Scheduled Changes & History
What is the Changes tab? — This tracks administrative changes to staff records: transfers between stores, name changes, role changes, and archiving.
These are made by managers and apply when saved (dated changes are not supported yet).
Different from Requests — Requests are things staff ask for (day off, swap); Changes are things managers do (transfer, promote, archive).
Pending (future-dated)
Recent History
Leave requests
How leave requests work
Staff ask for holiday, TOIL or authorised paid leave on the till (Balances, Request leave), or you raise one here with the + button.
Two steps: the area manager checks the days and presses OK and send to HR (nothing goes on the rota), then HR (Head Office) gives the final approval. Nobody decides their own.
HR's approval puts the leave days on the rota and the balances follow. Holiday and authorised paid leave count every calendar day, days off included (the Holiday Policy); TOIL skips days off. Until then nothing is on the rota.
Targets & Budget
Upload Budget Spreadsheet
Upload the full-year budget Excel file. Columns required:
Column A — Day name (Monday, Tuesday…)
Column B — Date (2026-01-01…)
Column C onwards — Store targets by store name (header = store name)
Once uploaded, targets update automatically in the rota app for all stores.
📊
Drop your Excel file here
or click to browse — .xlsx files only
Parsed Data Preview
Current Status
Add-on KPI rate config
Global rates and average unit prices used to compute daily targets. Targets formula:
CEIL(daily_budget × rate / unit_price)
for Demo / Batteries / Wrap / Bag. Gift Cards uses CEIL on Saturdays, ROUND on other days
(matches the master spreadsheet's =IF(Saturday,…) formula).
Demo target % uses each store's currently-set demo line price (entered by store staff in the app).
Category
Rate (%)
Unit price
store-entered
Demo line management
Set the demo item + retail price at store, country, or company level for a specific ISO week.
The KPI screen picks the most-specific match: a store override beats country, country beats company.
Store staff can still set their own demo line via the staff app — those entries override anything set here.
Run rate adjustments
When a store is temporarily trading at a different rate than usual (e.g. tourism dip),
set the percentage here. Addon KPI targets (demo, batteries, wrap, bag, cards) will scale
to that percentage of the original target. Sales targets are not affected.
100% = no scaling. Leave the end date blank to make it indefinite.
% of normal (100 = unchanged)
Active run-rate entries
Upload daily actuals
Upload an .xlsx with one sheet per category. Each sheet matches the existing budget format
(Day | Date | Month | Week | store columns). Sheet names must be exactly:
Demo,
Batteries,
Gift Wrap,
Reusable Bag,
Gift Cards.
Cells are integer counts (how many units sold per store per day). Sheets you don't have are skipped.
🎁
Drop daily actuals .xlsx
5 sheets, one per category, store columns
Preview
Daily Upload — sales + KPIs
Upload a single .xlsx with one tab per metric. Sheets are detected by name (case-insensitive):
Daily Sales by Store,
Demo,
Batteries,
Gift Wrap,
Reusable Bag,
Gift Cards.
Missing sheets are skipped. Each sheet has the same wide-matrix format: Day | Date | Month | Week + 28 store columns.
Hit the Daily Upload Template button above for an empty file with the right shape.
📥
Drop daily upload .xlsx
Sales + up to 5 KPI tabs in one workbook
Preview
Run this once when first setting up the system for a year. Reads the Last Year by Store sheet (using its Date LY column) to populate prior-year sales — these power the "vs LY" comparison in the staff KPI tab.
You only need this if:
This is the first time you're using the KPI feature
A whole year's historical data was lost and needs reloading
You're correcting historical numbers found to be wrong
Why it's separate: last year's sales are fixed history — they don't change. Once loaded, daily uploads of this year automatically become next year's "last year." No annual migration needed.
📚
Drop master file with last-year sheet
or click to browse — .xlsx files only
Parsed Historical Data
Export sales + KPIs + notes
Download Excel files of sales, targets, add-on actuals, and daily notes for the chosen date range.
Useful for next year's budgeting, area-manager reviews, and audit trails.
📁 Per-store export
One workbook per store with tabs for Sales, Targets, Add-on Actuals, Notes, and Demo Lines.
🏬 All stores export
Single workbook: one tab per store, then country totals (UAE, Qatar), then a company-wide total tab. Each tab has Sales / Target / vs LY / addon actuals / notes side-by-side.
Compliance Summary
Scan the period for non-compliance across logs, checklists, clock-ins, breaks, and location services.
Use "Copy as email" at the bottom once you've reviewed the table — it formats per-area-manager text ready to paste into Slack or email.
—
Scan settings
Tick the log types and checklists you want included in compliance scans. Untick to exclude.
📋 Log templates
Loading…
✅ Checklists
Loading…
Area Manager
Store
Category
Detail
Click a period to run a scan.
Delivery Schedules
Set the regular delivery day and time window for each store. These feed into the AI rota so it can ensure staff are scheduled to receive deliveries.
Store managers can flag a one-off change from the staff app if the delivery day shifts for a particular week.
Store
Day
Window
Notes
Add Delivery
Store
Delivery Day
Window Start
Window End
Notes (optional)
Frequency
Rules cascade from broadest to most specific. A store rule overrides a city rule, which overrides a country rule, which overrides the business-wide rule.
View rules for:
Preview — what the AI receives for the selected scope
Read-only
✨ AI Rota Generator
Select a store and week — the AI applies the rules configured above and builds the rota for review.
Rules from Scheduling tab will be applied automatically — business-wide + country + city + store overrides
Clock-In / Out Log
to
✨ AI Clock Log Review
Staff
Date
Clock In
Clock Out
Break
Scheduled
Variance
Location
Store
Edit
Edit Clock Record
Clock In
Clock Out
Leave blank if still clocked in.
Break Start
Leave blank if no break taken.
Break Minutes
Total minutes of break taken.
Reason for amendment
Public Holidays
Add Public Holiday
Date
Holiday Name
Country
Public holidays are used by the AI rota generator. Staff working on a public holiday earn TOIL automatically.
🇦🇪 UAE Public Holidays 2026
Area KPIs
Loading…
📅 Daily vs target
Top 50 Weekly Report
Upload Weekly Top 50 Report
Upload the weekly Top 50 .xls file from Head Office. The file should have:
A sheet called Value (top 50 by sales value)
A sheet called Volume (top 50 by sold quantity)
A date range in cell D1 (e.g. Date:- 27/04/2026 - 03/05/2026) — auto-parsed
You'll see a preview before anything is saved. Re-uploading the same week replaces the existing report.
📦
Drop the .xls here or click to choose
Both .xls and .xlsx are supported
Preview — please review before committing
Upload History
All Top 50 reports currently stored. Newest first. Deleting a report removes it from the staff app immediately.
📷 Scan has moved
Scan has its own place in the menu: Trade, then Scan. Its switch for store devices is in App Status (the status pill at the top).
Top 50 → Store Mapping
When the Top 50 spreadsheet uses a store name that doesn't match the canonical name in our stores table,
we need an explicit alias. This screen shows the diff for the latest upload and lets you set the alias
per store. Once saved, future uploads with the same spreadsheet name auto-match — no re-entry needed.
Stores
Manage the store list used across the app. Renaming a store updates all staff assigned to it automatically.
Store Name
Country
Area
Upload Name
Staff
Status
Password
Opening Hours
Editing:
Active season (used by rota):
Regular
Per-day opening hours per store. The rota generator reads from the active season's row.
Close times earlier than open times mean "rolls past midnight" (e.g. open 09:00, close 01:00 = 9 AM to 1 AM next morning).
Empty cells = closed that day.
Store
Country
Hours summary
Action
—
Regular hours
Leave both fields blank to mark the store as closed that day. Times use 24-hour format.
Store Visits
Area Manager Weekly Planner
Where each area manager is each day — the AM version of the rota.
Talk to JACK
ask about any store, the brief, compliance, visits or the rota; he reads the live data and answers by voice
📧 Automated emails
🎓 Weekly training
📥 Sales & staff feed health
The Cubes/Amanah push feeds. Last received, applied status, success/failure, row counts, and recent failures. Read-only.
Loading…
📜 Recent shift edits
Who changed which shift. Most recent first. Default-published shifts are filtered out.
Pick a week to load.
🔓 PIN reveal audit
Every time an admin reveals a staff's PIN, it's logged here. Most recent first. Visible to all admins for transparency.
Loading…
📝 Write audit log
Every write action from the staff app — rota saves, clears, balance edits, delivery edits, log edits.
Most recent first.
Balance edits should be reviewed before each payroll close.
Loading…
Add Store
Store Name
Use format: City - Location Name
Targets Upload Name
The column header used in the targets spreadsheet. Only set this if your spreadsheet uses a different name (e.g. ELC - DUBAI - DUBAI MALL). Leave blank to use the store name above.
Area Manager
Country
Changing country updates the weekend rules and week display automatically.
Store Telephone
v129.39 — the store's landline. Shows on the staff app's 🖧 Contacts screen as a one-tap dial, so it is worth getting right. Leave blank if the store has no line yet.
Google review link
v131.64 — paste this store's own review link from Google Business Profile
(Get more reviews → copy link). The customer survey then offers
⭐ Write a Google review on its thank-you screen — to
every customer, whatever they scored. Showing it only to happy
customers is “review gating”, which Google prohibits and penalises.
Leave blank and the button simply never appears for this store.
Store location (for 📍 Find my store)
v131.72 — press this while you are standing in the shop. It reads this
device’s GPS, so the coordinate is right by construction — no lookup, no guessing, no
API key. The customer survey then offers 📍 Find my store, which replaces
the three dropdowns with one tap.
The customer’s own location never leaves their phone: the survey compares it
to the store list in their browser and submits only the store name, exactly as the
dropdown does today. Leave blank and this store is simply never matched — it is never
guessed at. You can also paste latitude, longitude from Google Maps if you are
not in the store.
Store Type
Virtual stores (like Retail Relief Managers) appear in staff assignments but are excluded from clock-in and trading reports.
Store email address (optional)
The store's own inbox — appears in Comms → 📧 Email. We set up the matching @elctoysfeedback.com letterbox automatically — that is the address the Bluehost forwarder must deliver to. Leave blank if this store has no email yet.
Balances — TOIL · Holiday · Sick
Annual Entitlements
Default values applied to all staff on 1st January each year. Individual overrides can be set per person using the Edit button below.
🌴 Holiday days per year
days
Standard UAE: 30 days. Qatar: may differ per contract.
🤒 Sick days per year
days
Standard: 14 days. UAE Labour Law minimum.
⏱ TOIL carry-over limit
hours max carry-over
TOIL above this is forfeited at year-end.
📅 Auto top-up date
1st January each year
Balances reset to entitlement on Jan 1. Unused holiday does not carry over unless manually adjusted.
📥 Bulk update from HR file
Correct holiday, TOIL & sick where they've drifted from HR. Download the template
(employee number pre-filled), VLOOKUP the three columns from the HR sheet, then upload.
A blank cell leaves that number untouched. HR's figure becomes the new
starting point and Shift keeps deducting future leave from it. You'll preview every change
before anything saves.
Use the date your HR export was taken (blank means today). The holiday and sickness Shift adds
back are only the days on or before that date; leave after it is deducted as it happens. If HR
has not yet entered some recent leave, use the last date it has entered.
Drop the filled CSV here, or click to choose
Preview — before → after
🕊️ Authorised Paid Leave — usage
Maternity / paternity / compassionate leave booked as Auth. Paid Leave on the rota — paid, deducts from no balance. This report is the usage check.
Click Load report.
Edit Balances
🔄 TOIL (Time in Lieu)
Earned — public holidays worked—
Taken — TOIL days off—
From the rota—
Manual adjustment (hours)
This is the total correction, not an amount to add. It is already
included in the balance below. Use it only when the rota cannot be fixed —
editing the rota is always the better fix.
Current balance—
🕊️ Authorised Paid Leave
Loading…
🌴 Holiday Balance
Days remaining
Annual entitlement
🤒 Sick Days Balance
Days remaining
Annual entitlement
Accounts
Manage who can log into the admin panel and the staff app as a manager or area manager.
Head Office — full access to all tabs and all stores.
Area Manager — restricted view in the staff app showing their area only.
Name
Email
Role
Scope
Add Account
Full Name
Email / Login ID
Role
Who is acting
They can sign in only on the days of an acting area manager role on their staff record (People, Directory, their name, Role history). It ends by itself.
Area
Title / Note (optional)
Department (optional)
Stores can address a whole department in one tap when they write an email. Leave blank if this person isn't part of one.
Visible tabs
Tick the admin tabs this person can see. Defaults follow their role (area managers don't see Concerns) — change any to override for this person.
Areas
Areas are management buckets — UAE / Dubai / Qatar etc. Each store and staff member belongs to one area. The
area manager is whichever account currently has role=Area Manager and is assigned to that area
(managed in the Accounts tab; this tab shows you who's assigned where and lets you reassign).
ID
Name
Region
Country
Current Manager
Stores
Staff
Add Area
Area ID
Stable identifier. Auto-suggested as the next number; only change if you have a reason. Cannot be edited after creation.
Name
Display name shown in dropdowns and labels.
Region
Sub-region label. Often the same as Name; differs when an area covers a specific city within a country.
Country / Trading Entity
Area Manager
Pick from active accounts with role Area Manager. Choose Unassigned to leave the area without a current manager. To create a brand-new manager account, use the Accounts tab first.
to
to
✨ AI Checklist Analysis
Checklist Templates
Templates appear on the staff app based on their frequency. Inactive templates are hidden.
Template
Pick one or more — e.g. tick Mon and Sun for a UAE+Qatar "start of week" checklist.
1–28 (to avoid short-month issues)
Off = stores are never flagged for missing this checklist (it stays fillable).
to
Log Types
Define what types of logs managers can record and which fields each has.
Log Type
Off = stores are never flagged for missing this log (it stays fillable).
Fields
Staff member, time, and notes are added automatically. Define any extra fields here.
Data Retention Policy
Checklist submissions and store logs are automatically purged after 365 days to keep the database lean and comply with data minimisation. Staff records, rota, and balances are NOT affected.
Clock-in/out records are kept for 7 years (pay and tax records). The exact clock-in position on them is erased after 12 months; the clock times are kept.
⚠️ Purging is permanent. Once deleted, submission history cannot be recovered. Consider exporting to CSV first if you need an archive.
Run Purge Now
Immediately delete checks, logs, and clock records older than the retention window. The automated nightly purge handles this on its own — use this only if you want it to happen straight away.
days
App Status
Control what the staff app shows. Changes propagate to all devices within ~60 seconds.
Message to show staff (optional)
Leave blank to use the default message for the selected state.