MPH WMS
Settings

Team

Invite people and control what each of them can do

Access in MPH WMS is a list of 53 permissions across 17 domains. A role is a preset that fills that list in; you can adjust any member's permissions individually afterwards.

Requires team:read to view, team:invite, team:remove and team:change_role to manage.

Inviting

Settings → Team → Invite, enter the email address and pick a role. The invitation appears under pending invitations until it is accepted, and can be resent or cancelled.

Tell the person to use the invitation link rather than signing up separately - signing up cold creates a second, empty organization.

Roles

RoleWhat it is
OwnerFull access. Bypasses the permission list entirely
AdminEverything operational, plus settings, integrations, carriers and the team. Excludes all returns permissions, user groups, and managing billing
MemberRead and operate: pick, pack, receive, adjust and count stock, book shipments, create and edit orders. No deleting, no cancelling, no settings

The gaps in admin are deliberate. Returns and billing changes are owner decisions in most operations, so they are not handed out with an admin role by default. Grant them individually to the people who should have them.

Member notably includes stock:adjust and stock:count but not stock:count:approve, and includes shipments:book but not shipments:cancel. Counting is a floor task; approving the resulting adjustments is a supervisory one.

Per-member overrides

A role is a starting point. Open a member and add or remove individual permissions - a picker who should also approve stock counts, or an admin who should not touch integrations.

The permission list

DomainPermissions
Productsitems:read, items:create, items:update, items:delete
Ordersorders:read, orders:create, orders:update, orders:cancel, orders:ship
Returns / RMAreturns:read, returns:create, returns:receive
Freight claimsclaims:read, claims:create, claims:manage
Picking & packingfulfillment:pick, fulfillment:pack
Receivingreceiving:read, receiving:receive
Stockstock:read, stock:adjust, stock:count, stock:count:approve
Warehouseswarehouse:manage
Shipmentsshipments:read, shipments:book, shipments:cancel
Carrierscarriers:read, carriers:manage
Integrationsintegrations:read, integrations:manage
Reportsreports:read
Teamteam:read, team:invite, team:remove, team:change_role, team:groups
Settingssettings:tenant, settings:printers
Billingbilling:read, billing:manage
Walletwallet:read, wallet:topup
Accountingaccounting:read, accounting:manage

returns:create covers approving and declining returns. stock:count:approve is what closes a count and writes the adjustments.

What permissions actually do

Sections you have no permission for are hidden, not greyed out. Two people can see very different sidebars and settings menus. Enforcement is on the server as well as the UI, so hiding a page is not the only thing stopping access to it.

Requiring 2FA

An owner or admin can require two-factor authentication for the whole organization. Anyone without it is redirected to set it up before they can use the app. Worth turning on once everyone has a login they use regularly.

Suggested setup

PersonStart fromThen
Warehouse operatorMemberRemove orders:create and orders:update if they should not edit orders
Shift supervisorMemberAdd stock:count:approve, shipments:cancel, returns:receive
Customer serviceMemberAdd returns:read, returns:create. Remove fulfillment:*
Operations managerAdminAdd returns:*
Owner or financeOwner-

Removing someone

Remove them from the team as soon as they leave. Also revoke any API keys they created - those are separate credentials and are not removed with the user.

On this page