> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.geoproapp.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# How Geo:Pro counts visitors (the visit beacon)

# How Geo:Pro counts visitors (the visit beacon)

Geo:Pro bills by the number of unique visitors to your store each month. To count them, the app sends a small daily "visit beacon" from your storefront. This article explains exactly what the beacon contains, what we store, and how long we keep it.

## What the beacon is

Once per visitor per day, the Geo:Pro theme block sends one request on your own storefront domain:

`POST /apps/easylocation/api/inline-visit`

Shopify forwards this request to Geo:Pro through the app proxy. The request contains only:

| Field | Example | Purpose |
| ---- | ---- | ---- |
| Store domain | `your-store.myshopify.com` | Which store the visit belongs to |
| Tracking ID | `3f2b9c1e-…` (random UUID) | Count each visitor once per day |
| Visitor's local date | `2026-11-02` | The day being counted |
| Start and end of that local day, and the time of the first page view | Unix timestamps | Assign the visit to the right day |
| Page host | `www.your-store.com` | Hostname only. No page path, query string or referrer |
| Cookie available | `true` / `false` | Shows whether the count can be de-duplicated |
| Script version | `1` | Compatibility |

The request is sent with `referrerPolicy: no-referrer`. It does not include the page URL, the customer, an email address or any form data.

The beacon does not run in the theme editor or in Shopify preview links.

## The tracking ID

- It is a **random UUID** created in the visitor's browser (`crypto.randomUUID()`). It is not derived from a customer account, email address, IP address or device fingerprint.
- It is a **new ID every day**. The cookie expires at the visitor's next local midnight, so the same visitor gets an unrelated ID the next day.

## Where the ID is kept in the browser

|  |  |
| ---- | ---- |
| Storage | First-party cookie (not localStorage) |
| Name | `geoip-inline-<store>.``myshopify.com` |
| Value | JSON: the random ID, the local date, the day's start/end, the first-visit time, and a `sent` flag |
| Scope | Host-only, `Path=/`, `SameSite=Lax`, `Secure` on HTTPS |
| Lifetime | Until the visitor's next local midnight (at most 24 hours; 23 or 25 hours on daylight-saving days) |

The beacon itself does not read or write localStorage.

## What we store, and for how long

For each counted visit we store one row with: store domain, tracking ID, visitor's local date, day start/end, first-visit time, the time we received it, the store's timezone, page host, the cookie-available flag and the script version.

- **We do not store the IP address, user agent, page URL or referrer** from the beacon.
- The visitor's IP address and user agent are used **only in memory, while the request is handled**, to filter out bots and crawlers. They are not written to a database or to access logs.
- A short-lived de-duplication key (store, date, tracking ID) is kept in our cache until about one hour after the visitor's day ends.
- Visit rows are **deleted automatically after 90 days**.

## How we use it

- The beacon is used only to count unique visitors for billing and to check that our visitor counts are accurate.
- We do not use it for advertising or to build profiles of visitors.
- We do not sell it or share it with third parties. It is processed only by Shopify (the app proxy) and stored on Geo:Pro's own infrastructure (Google Cloud).

## Questions

If you need this information for a privacy review or a data processing agreement, contact us through chat and we will help.