Grumpy Pixels

Privacy policy

Last updated 8 Oct 2026

1. Who we are

Grumpy Pixels SEO (the "portal") is an SEO campaign platform run by Grumpy Pixels ("we", "us"). Agencies, partner agencies and their clients use it to see search and website performance, recommendations, work done and reports for a client's website.

This policy explains what the portal collects, why, who it is shared with and how to have it removed. Questions go to hello@grumpypixels.my.

2. Who can use the portal

Access is by invitation only. There is no public sign-up. An administrator invites each user by email and decides which client workspaces that user can open.

3. Information we hold

  • Account details. Your name, email address, role and the workspaces you can open. Your password is stored as a one-way hash; we cannot read it.
  • Sign-in records. For each session we keep the IP address and browser user agent, and we count sign-in attempts per IP address to block password guessing.
  • Activity records. A log of changes made in a workspace: who made the change, what it was and when.
  • Email delivery status. Whether an invitation email was sent, delivered, delayed or bounced.
  • Website performance data. Search, traffic, keyword, page and technical data about a client's website, plus the recommendations, notes and reports written in the portal. This data describes the website as a whole. It does not identify individual visitors to that website.
  • Google account connection. Described in section 4.

4. Google user data

An agency user can connect a Google account to a workspace from its Settings page, separately for Google Analytics, Search Console and Tag Manager. Google shows a consent screen for each; nothing is accessed until that user approves it.

What we access.

  • With the read-only Google Analytics permission (analytics.readonly): the list of Google Analytics 4 accounts and properties the Google account can read, and aggregated report data for the one property chosen for the workspace, such as sessions, engaged sessions, lead actions and traffic channels. For the key-event check, the property's key events and how often each was recorded in the last five weeks.
  • With the read-only Search Console permission (webmasters.readonly): the list of Search Console sites the Google account can read, and search performance for the one site chosen for the workspace: clicks, impressions and average position by day, page, search query, device and country.
  • With the read-only Tag Manager permission (tagmanager.readonly): the list of Tag Manager accounts and containers the Google account can read, and the Google Analytics event tags in the published version of the one container chosen for the workspace. This is optional: the key-event check runs without it, and the tags are only used to show which tag sends each key event.
  • With the openid and email permissions: the Google account's ID and email address.

The portal asks for read-only access. It cannot change anything in Google Analytics, Search Console, Tag Manager or in the Google account.

How we use it. Only to provide the portal's reporting: to let the agency pick the right property, site or container, to show its performance in the workspace it was connected to, and to show which Google account made the connection. The email address is shown to agency users in Settings. The lists of properties, sites and containers are shown to agency users only, never to clients.

How we store it. Google access and refresh tokens are encrypted with AES-256-GCM before they are saved, and each workspace holds its own tokens. We also save the Google account ID and email address, the permissions granted, the lists of properties, sites or containers, and the one chosen.

Who we share it with. Report data is visible to the users of the workspace it belongs to. Beyond that, Google user data goes only to the service providers in section 6 that host the portal and its database, and only so they can run it for us. We do not sell Google user data, do not use it for advertising, and do not use it to develop, improve or train generalised artificial intelligence or machine learning models. Our staff do not read it except where needed to provide or secure the service, to comply with the law, or with the connecting user's agreement.

Limited use. The portal's use and transfer of information received from Google APIs to any other app adheres to the Google API Services User Data Policy, including the Limited Use requirements.

How to remove it. An agency user can choose Disconnect in the workspace's Settings at any time. That deletes the stored tokens, the Google account ID and email address, the permissions record, the chosen property, site or container and the list it was chosen from, from our database, and revokes the portal's access at Google unless another workspace still uses the same Google account. You can also remove access yourself at myaccount.google.com/permissions. Report data imported before the disconnection stays in the workspace until you ask us to delete it: write to hello@grumpypixels.my. With it we keep a record of which property, site or container that data came from and how far it was synced, so it is never mixed with another one's.

5. How we use information

  • To sign you in and keep your account secure.
  • To show each user only the workspaces and data they are allowed to see.
  • To produce the reporting, recommendations and reports the portal exists for.
  • To send invitation and password-reset emails.
  • To keep a record of changes, and to find and fix faults or misuse.

We do not use the information for advertising and we do not sell it.

6. Who we share it with

  • Other users of your workspace. Agency and partner users who manage access can see the names, email addresses and roles of the people in their workspaces.
  • Service providers. Vercel hosts the portal, Neon hosts its database, and Resend sends its emails. Google provides the analytics and search data once an account is connected, and runs the PageSpeed tests of the client's public pages. Each handles information only to provide its service to us.
  • Authorities. Where the law requires it.

These providers may process information outside Malaysia.

7. Cookies and browser storage

The portal sets a session cookie when you sign in, and a short-lived cookie while a Google account is being connected so the connection cannot be hijacked. Your light or dark theme choice is kept in your browser's local storage. The portal has no advertising or third-party tracking cookies.

8. How long we keep it

We keep account and workspace information for as long as the account or workspace is in use. Sessions expire by themselves. When you ask us to delete your account or a workspace's data, we remove it unless the law requires us to keep a record.

9. Security

Connections to the portal are encrypted in transit. Passwords are hashed, Google tokens are encrypted at rest, sign-in attempts are rate limited, and every request for workspace data is checked against the signed-in user's access. No system is perfectly secure; tell us straight away at hello@grumpypixels.my if you think your account has been misused.

10. Your choices and rights

You can ask us for a copy of the personal data we hold about you, ask us to correct it, withdraw your consent, or ask us to delete it. These rights are set out in Malaysia's Personal Data Protection Act 2010, and we will honour the same requests wherever you are. Write to hello@grumpypixels.my. If your account was set up by an agency or your employer, they can also update or remove it.

11. Children

The portal is a business tool. It is not meant for anyone under 18 and we do not knowingly collect their data.

12. Changes to this policy

When this policy changes we update this page and the date at the top. If a change affects how Google user data is used, we will ask connected users to agree before the change applies to their data.

13. Contact

Grumpy Pixels, hello@grumpypixels.my. The portal's rules of use are in the terms of service.