> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# GPS restrictions

> Draw a circle around a site in TimeTracker so people can only clock in from there. How places work, why desktops fail them, and what GPS cannot prove.

A **place** is a circle you draw on the map. Someone standing inside it counts as
being at work.

This is the check for phones and field work.

<Warning>
  **A place can be faked.** The location comes from the person's own device.
  TimeTracker says so on the rule page: *"A place comes from the person's own device
  and can be faked. Office networks are much harder to work around, so treat places
  as a nudge rather than proof."*
</Warning>

## What a place is

Three things: a name, a point, and a radius.

| Part      | Example                |
| --------- | ---------------------- |
| **Name**  | `Head office`          |
| **Point** | `51.507400, -0.127800` |
| **Area**  | 100 m                  |

The person's device reports where it thinks it is. If that point is inside your
circle, they pass.

## When to use it

* Site work, warehouses, shops – anywhere people are not on your network.
* Teams who clock in from phones.
* Alongside an office network rule, so desks and field work are both covered.

## When not to use it

* **Alone, for a desk-based team.** A laptop works out its location from nearby
  Wi-Fi and is routinely hundreds of metres to kilometres out. It will fail an
  office-sized circle.
* **As proof of attendance.** It is a nudge, not evidence.

## Adding a place

Open a rule and find the **Places** card: *"Named locations someone can be
standing in."* Click **Add a place**.

The dialog says: *"Stand in the building and use your device, or paste a maps link
for somewhere you are not."*

| Field                        | What it does                                                           |
| ---------------------------- | ---------------------------------------------------------------------- |
| **Name**                     | Required. Shown in the activity log when someone matches it.           |
| **Where is it**              | Paste a maps link, or type `51.5074, -0.1278`, then click **Use this** |
| **Use my current location**  | Fills it from your own device                                          |
| **Latitude** / **Longitude** | Filled in for you. Editable.                                           |
| **Area**                     | The radius of the circle                                               |
| **Check this place**         | Tells you how far you are from it right now                            |
| **Open in maps**             | Opens the point in your map app                                        |

### Area options

| Option                   | Radius                   |
| ------------------------ | ------------------------ |
| **50 m – one floor**     | 50 metres                |
| **100 m – a building**   | 100 metres. The default. |
| **250 m – a city block** | 250 metres               |
| **500 m – a campus**     | 500 metres               |
| **1 km – a wide site**   | 1000 metres              |

The **Save place** button becomes available once you have a name and a point.

### What you can paste into "Where is it"

| Works                       | Example                   |
| --------------------------- | ------------------------- |
| A Google Maps pin link      | Any share link with a pin |
| A maps URL with coordinates | `?q=51.5074,-0.1278`      |
| A plain pair                | `51.5074, -0.1278`        |

If nothing usable is found: *"We couldn't find a location in that. Paste a maps
link or a latitude and longitude."*

## Checking your work

Two buttons make this concrete before you commit:

| Button                      | What it tells you                                                                   |
| --------------------------- | ----------------------------------------------------------------------------------- |
| **Use my current location** | *"Placed from your device – accurate to about N m"*                                 |
| **Check this place**        | *"You're 34 m from Head office – inside the circle."* or *"…– outside the circle."* |

<Tip>
  Walk to the far corner of your site and click **Check this place**. If it says
  outside, your circle is too small. This is the fastest way to size a place
  correctly.
</Tip>

## Accuracy is a gate, not a bonus

This is the part that surprises people.

Every position comes with an accuracy figure – how confident the device is. If
that figure is worse than **100 metres**, the position is **thrown away**.

The result is **"Couldn't check"**, not "outside" and not "inside".

| Device                        | Typical accuracy   | Result against a 100 m office    |
| ----------------------------- | ------------------ | -------------------------------- |
| Phone with GPS outdoors       | 5–20 m             | Usually works                    |
| Phone indoors                 | 20–100 m           | Often works                      |
| Laptop on Wi-Fi               | 100 m – several km | Usually **Couldn't check**       |
| Desktop on a wired connection | Kilometres         | Almost always **Couldn't check** |

<Warning>
  This is why a place rule alone will not work for people at desks. Use an
  [office network](/location-rules/ip-restrictions) for them, or set the rule to
  **Either the network or the place**.
</Warning>

## What the person's browser is asked

| Situation                                       | What happens                                                               |
| ----------------------------------------------- | -------------------------------------------------------------------------- |
| They have already allowed location for the site | Their position is read quietly in the background                           |
| They have not been asked yet                    | **Nothing is requested.** They are never surprised by a permission pop-up. |
| They have denied location                       | No position. The check records **Couldn't check**.                         |

Denied or unavailable still records a check, so you can see it in the activity
log rather than wondering why nothing appeared.

If a rule is enforcing and the browser is blocking location, the person sees:

> **We can't tell where you are**
> Your browser is blocking location access… Turn on location for this site in your
> browser settings, then reload.

A **Check again** button sits beside it.

## What TimeTracker flags

Some reported positions get a warning badge in the
[activity log](/location-rules/activity-log):

| Badge                               | What it means                               | Effect                      |
| ----------------------------------- | ------------------------------------------- | --------------------------- |
| **Device reported a fake location** | Android's own mock-location flag was set    | The position is discarded   |
| **Location was out of date**        | The fix is more than about 90 seconds old   | The position is discarded   |
| **Impossible accuracy reported**    | The accuracy figure is nonsense             | The position is discarded   |
| **Moved impossibly fast**           | Two checks imply travel faster than any car | Flagged only, still counted |

<Note>
  The fake-location flag catches casual spoofing on Android. A determined person on
  a modified device can hide it. And **"Moved impossibly fast"** fires for real
  flights too – treat it as something to ask about, not proof of anything.
</Note>

## Example

Harbor Logistics work happens at a depot, not an office.

<Steps>
  <Step title="Tom stands in the depot yard">
    He opens the `Depot` rule and clicks **Add a place**.
  </Step>

  <Step title="He places it from his phone">
    **Use my current location** – *"Placed from your device – accurate to about
    8 m"*.
  </Step>

  <Step title="He names and sizes it">
    Name `Depot`. Area **250 m – a city block**, because the yard is large.
  </Step>

  <Step title="He walks to the far gate and checks">
    **Check this place** – *"You're 180 m from Depot – inside the circle."* Good.
  </Step>

  <Step title="He sets what counts">
    **Someone counts as here when they are: Either the network or the place** – so
    the office team passes on the network and the depot team passes on the place.
  </Step>

  <Step title="He watches for a week">
    Two "Couldn't check" rows turn out to be a driver using a laptop in the cab.
    He adds a network range for the depot's connection.
  </Step>
</Steps>

## Limits

| Limit            | Value |
| ---------------- | ----- |
| Places per rule  | 50    |
| Smallest radius  | 25 m  |
| Largest radius   | 20 km |
| Accuracy ceiling | 100 m |

Save errors name the exact problem:

| Error                                                          |
| -------------------------------------------------------------- |
| *Give every place a name.*                                     |
| *"`<name>`" does not have a valid location.*                   |
| *The area around "`<name>`" must be between 25 m and 20000 m.* |
| *A rule can hold at most 50 places.*                           |

## Editing and removing

Each saved place is a row showing its name and `51.507400, -0.127800 · 100 m – a
building`.

| Control | What it does         |
| ------- | -------------------- |
| Pencil  | Opens **Edit place** |
| Trash   | Removes the place    |

Changes save with the rest of the rule, using **Save changes** at the bottom of
the page.

## What GPS cannot prove

| It cannot tell                                 | Why                                    |
| ---------------------------------------------- | -------------------------------------- |
| Whether the location is genuine                | It comes from the person's own device  |
| Whether the phone is with the person           | A phone left at the office passes      |
| Where someone on a desktop is                  | The accuracy is too poor to place them |
| Whether someone is indoors or outside the door | A 100 m circle covers both             |

Treat places as a way to make casual "I'm at the site" claims visible, not as
attendance evidence.

## Permissions

| Action              | Capability        | Roles        |
| ------------------- | ----------------- | ------------ |
| Add and edit places | `location.manage` | Owner, Admin |

## Common questions

<AccordionGroup>
  <Accordion title="Why does my laptop always say Couldn't check?">
    A laptop works its location out from nearby Wi-Fi, and is usually far worse
    than the 100 m accuracy ceiling. Anything less accurate than that is
    discarded. Use an office network rule for desk workers.
  </Accordion>

  <Accordion title="Is Couldn't check the same as outside?">
    No, and the difference matters. "Couldn't check" means there was not enough
    information. It never counts as being at work.
  </Accordion>

  <Accordion title="Will my team be asked for location permission?">
    Only if they have already granted it, in which case nothing is asked again.
    TimeTracker never triggers a permission prompt on its own.
  </Accordion>

  <Accordion title="Can someone fake their location?">
    Yes. TimeTracker flags obvious Android spoofing, but a determined person on a
    modified device can hide it. Office networks are much harder to work around.
  </Accordion>

  <Accordion title="How big should my circle be?">
    Big enough to cover every part of the site people work in, plus a margin.
    Stand at the far corner and use **Check this place**.
  </Accordion>

  <Accordion title="Can I use both a place and a network?">
    Yes. Set **Someone counts as here when they are** to **Either the network or
    the place** for a mixed team, or **Both** for the strictest possible rule.
  </Accordion>

  <Accordion title="What is the fake-location badge?">
    Android can tell an app that a position came from a mock provider rather than
    a real sensor. When it does, the position is discarded and the check is
    flagged.
  </Accordion>
</AccordionGroup>

## Troubleshooting

**Everyone at the site is being stopped.** Your circle is too small, or the point
is wrong. Stand there and use **Check this place**.

**Lots of "Couldn't check" rows.** Those people are on laptops or desktops. Add an
office network range and set the rule to **Either the network or the place**.

**One person is always stopped.** They have denied location for the site in their
browser. They see a banner telling them how to turn it on.

**A place will not save.** Every place needs a name and a valid point, and the
radius must be between 25 m and 20 km. The error names which one failed.

## Related guides

<CardGroup cols={2}>
  <Card title="Location rules overview" icon="map-pin" href="/location-rules/overview">
    The concept and what it cannot see.
  </Card>

  <Card title="IP restrictions" icon="network-wired" href="/location-rules/ip-restrictions">
    The stronger check, for computers.
  </Card>

  <Card title="Create a location rule" icon="plus" href="/location-rules/create-a-policy">
    The full end-to-end walkthrough.
  </Card>

  <Card title="Activity log" icon="clock-rotate-left" href="/location-rules/activity-log">
    See exactly what each device reported.
  </Card>

  <Card title="Location permissions" icon="shield" href="/location-rules/location-permissions">
    What people are asked to allow.
  </Card>

  <Card title="Mobile app" icon="mobile" href="/integrations/mobile-app">
    Where place checks work best.
  </Card>
</CardGroup>
