Add a Punch In/Out button and daily punch-in for staff apps

What you’ll do

Want your staff or field team to clock in from their phone? This guide adds a
Punch In/Out button that does exactly that. It lets a signed-in user go
on duty (punch in) and off duty (punch out) from the home screen or the left
menu. While someone is punched in, the app treats them as active — and that’s the
switch that gates optional GPS/location tracking for that user.

You’ll do this in three parts:

  1. Place a Punch In/Out button in your app’s navigation (a home-screen icon or a
    left-menu entry).
  2. (Optional) Require a daily punch-in so staff are prompted to check in once per day
    when they open the app.
  3. Customize the button and messages — its title, color, and the confirmation text
    shown on punch in / punch out.

No code involved — you’ll set all of this up right in the Mobile App Manager admin.

The Punch In/Out button is one of MAM Suite’s built-in content types, registered as the
“PunchIn and Out Action” content type (vc_type punch_in_out). You place it just
like any other nav button, but there’s nothing to wire up behind it — it has
no per-button settings (“No settings required”). Everything it does comes from the
user’s punch state and the home-screen settings covered below.


Before you start

  • MAM Suite with MAM Main activated (the Punch In/Out action is part of MAM Main).
  • A draft app you can edit in Mobile App Manager → App Setup.
  • In-app accounts turned on. Punch in/out is per-user — it reads and writes the
    signed-in user’s duty state — so users must be able to sign in. If you haven’t set
    up login yet, see Add a Login button and turn on in-app accounts.

How punching in/out works (quick mental model)

One button, two faces — which one shows depends on whether the user is currently on
duty:

  • When the user is off duty, the button reads Go On Duty (punch in).
  • When the user is on duty, the button reads Go Off Duty (punch out).

Every time the app loads the user’s data, it checks their stored duty state and shows
the matching label. So you only ever place one Punch In/Out button — MAM Main swaps the
label and action for you.

That duty state lives on the WordPress user. Punch in, and they’re recorded as active
for the day; punch out, and they’re recorded as off duty. If daily punch-in is
required, anyone who hasn’t punched in yet that day sees the Go On Duty prompt the
moment they open the app.

Why this matters for tracking. The app only records optional GPS location pings
while a user is punched in — punching out stops their location from updating. That
makes the Punch In/Out button double as a privacy control: staff are only tracked while
they’re on the clock.


Part 1 — Add the Punch In/Out button

Adding it is no different from adding any other navigation button.

  1. Go to Mobile App Manager → App Setup and open the app you’re building.
  2. Choose where the button should live:
    • As a home-screen icon, or
    • As an entry in the left menu.
  3. Add a new button in that location and set its content type to
    PunchIn and Out Action.
  4. Save.

There’s no content source to configure here — the builder shows “No settings
required”
because this button doesn’t need one. Its label and behavior come from the
user’s duty state (see How punching in/out works above) and the home-screen settings
you’ll set in Part 3.

Place the button on the home screen, in the left menu, or both — it doesn’t matter.
The same duty state drives every Punch In/Out button in the app, so they all stay in
sync automatically.


Part 2 — (Optional) Require a daily punch-in

Want to make sure staff check in every day, not just when they remember? Turn on the
daily punch-in, and anyone who hasn’t punched in yet that day gets prompted to
Go On Duty the moment they open the app.

Setting Variable What it does
Check in Daily When Opening App require_daily_punch_in When Yes, users must check in (punch in) once per day when they open the app.

You’ll find this setting under the app’s Home Screen settings.

If punching in is more optional or ad-hoc for your team, leave it No — the button
still works exactly the same, users just won’t be prompted on launch.


Part 3 — Customize the button and messages

Now make it sound like your app. These are all Home Screen settings, so you set them
once and they apply everywhere the button appears. All are optional — leave any of them
blank and the app falls back to its default wording.

Setting Variable What it does
Check In Button Title punch_in_button_title Label on the Check In (punch in) button.
Check In Button Color punch_in_button_color Color of the Check In button. Default #000000.
Punch in Message punch_in_message Confirmation text shown to the user when they punch in.
Punch out Message punch_out_message Confirmation text shown to the user when they punch out.

Note on labels. You’ll notice the admin settings say “Check In,” while the button
itself defaults to Go On Duty / Go Off Duty — those two are what actually show up
in the app for each state. Check In Button Title is a separate field, so if you’d
rather the button read something else (say, “Clock In” / “Clock Out”), set it here —
then check a test build to see exactly how it renders in each state.


Putting it together — common setups

Field team with optional tracking.
Add the Punch In/Out button to the home screen · leave Check in Daily No · set a
clear Check In Button Title and an on-brand Check In Button Color. Staff punch in
when they start their shift and punch out when they’re done, and GPS only records while
they’re on duty.

Required daily check-in.
Add the button (home screen or left menu) · set Check in Daily When Opening App to
Yes · write a short, friendly Punch in Message confirming they’re on the clock.
Now anyone who opens the app without having punched in that day gets prompted to
Go On Duty.

Left-menu only.
Prefer something less prominent? Place the Punch In/Out button in the left menu, and use
the Punch in / Punch out Message settings so users still get a confirmation each time
they toggle.


Verify it

Now walk through it as a user would, to make sure everything you just set up actually works.

  1. Save the app and rebuild/refresh your preview or test build.
  2. Sign in as a test user.
  3. Find the Punch In/Out button where you placed it. Off duty, it should read
    Go On Duty (or your Check In Button Title, if it overrides the state label).
  4. Tap it to punch in. Confirm your Punch in Message appears and the button now reads
    Go Off Duty.
  5. Tap again to punch out. Confirm your Punch out Message appears and the button
    returns to Go On Duty.
  6. If Check in Daily is Yes, fully relaunch the app the next day (or with a fresh
    day’s state) and confirm the user is prompted to punch in.
  7. If you use GPS tracking, confirm location is recorded only while punched in.

  • Add a Login button and turn on in-app accounts
  • Add an Enable Location Services button
  • Configure your app’s home screen
  • App Setting: Check in Daily When Opening App (require_daily_punch_in)
  • App Setting: Check In Button Title (punch_in_button_title)
  • App Setting: Check In Button Color (punch_in_button_color)
  • App Setting: Punch in Message (punch_in_message)
  • App Setting: Punch out Message (punch_out_message)
Was this article helpful?
Contents

    Need Support?

    Can't find the answer you're looking for? Don't worry we're here to help!