Keeping a single panel account clean and verified for the long run
Most panel bans I hear about don’t start with one dramatic mistake. They start with small mismatches that pile up over a year or two: a profile answer that quietly changed, a login from a country the account has never been in, a recovery email that stopped working. Then something gets flagged, support asks for proof, and you can’t produce it.
This is for people who have one account on a panel such as Prolific and want it in good standing years from now. One person, one account, real details. If you’re hoping to run a second account, this isn’t the article for you, and why survey accounts get banned covers how that usually ends.
You’ll finish with a locked-down login, a profile that matches your ID, a steady device setup, a simple activity log and a monthly audit. Nothing here changes what a panel pays you. It lowers the odds of losing the account and the balance sitting in it.
What you need
- One email address you own and expect to still have in five years. A mailbox on your own domain or a well-kept Gmail or Proton account works. A throwaway doesn’t.
- A password manager. Bitwarden’s free tier covers everything here.
- An authenticator app such as Aegis (Android) or 2FAS (iOS and Android). Bitwarden’s built-in authenticator is a paid feature, and I prefer to keep the second factor away from the password vault anyway.
- Government ID in your legal name, for any identity check the panel asks for.
- One main device and one browser profile for panel work.
- A CSV file for the activity log, plus Python 3 for the rate script in step 5.
- Optional: a hardware security key. Yubico’s Security Key NFC has a list price around US$29, so check the current figure. Everything else here is free.
Step by step
Step 1: pick one email address and keep it boring
Register the panel with that mailbox, and turn on 2FA for the mailbox first. I don’t use alias or forwarding services for panel logins. If the alias provider changes its terms or shuts down, you lose the recovery path to an account that may have taken years to build. Some people will argue with me on that. For an account holding a payout balance, I want the mailbox to be the real thing.
Expected output: you can sign in to the mailbox, the panel’s verification email arrives, and the mailbox asks for a second factor.
If it breaks: check spam, resend the verification once, then write to support. Don’t register a second account to test it.
Step 2: lock the login
Generate a unique passphrase of 16 or more characters in your password manager. Check your email at Have I Been Pwned and subscribe to breach alerts. Turn on app-based 2FA for the mailbox and, where the panel offers it, the panel too. Then print the recovery codes and keep the paper somewhere physical. NIST’s SP 800-63B tells services not to force periodic password changes and to screen against breached lists. I apply the same logic to my own logins: long, unique, changed when there’s a reason. If your mail provider offers passkeys, enable them on the mailbox, because that account can reset everything else.
Expected output: signing out and back in prompts for a six-digit code, and the password manager holds the login.
If it breaks: rejected codes are almost always clock drift, so set your phone’s time to automatic. If you lose the authenticator and the recovery codes, write to support from the registered email. Don’t open a new account.
Step 3: make your profile match your ID
Enter your legal name, date of birth and country of residence exactly as they appear on your ID, and answer screening questions truthfully. Assume the panel can see your earlier answers. Prescreening (how Prolific prescreening works) is where those answers decide which studies you see. If an answer changes because your life changed, like a new job or a move, update it. Keeping the profile current is normal. What looks bad is answers that swing depending on which study you want. When the panel offers an identity check, do it once, with your own document.
Expected output: profile completeness reads full, and any verification status shows as verified. Wording varies by panel.
If it breaks: if a photo check is rejected, retake it in daylight with the whole document in frame. If it fails twice, open a ticket. Never try someone else’s document.
Step 4: fix your device and network baseline
Use one main device and one browser profile. Keep the browser current and skip extensions that rewrite pages. On a stable home connection I leave VPNs off, because a location that jumps around is an easy mismatch to create by accident. Panels don’t publish their detection rules, so this is my reading of their terms and other people’s reports, not inside knowledge. How panels fingerprint your device covers what they can plausibly see. To catch accidental changes, log where you connect from before each session. This script queries ipinfo.io, so it sends your IP to a third party.
# session-check.ps1
$ip = Invoke-RestMethod https://ipinfo.io/json
$tz = (Get-TimeZone).Id
"{0},{1},{2},{3}" -f (Get-Date -Format s), $ip.country, $ip.org, $tz |
Add-Content session-check.csv
Expected output: one row per session with timestamp, country, ISP and Windows time zone. The country should read the same every time.
If it breaks: if the country doesn’t match where you’re sitting, you’re on a VPN, a work network or a carrier gateway. Disconnect and log in from your normal connection.
Step 5: keep an activity log and measure your own rate
Log every study in activity.csv with these columns: date, panel, study, reward, minutes, outcome. Outcome is one of completed, screened_out, rejected or returned. Count the minutes you actually spent, screen-outs included, or your rate will look better than it is. For how the number on a study gets set, see how panels price a study. A run of rejections or returns in the log is a quality signal, and you want to see it before the panel does. This script gives your effective rate, with all rewards in one currency:
import csv
from collections import defaultdict
paid, mins, outcomes = defaultdict(float), defaultdict(float), defaultdict(int)
with open("activity.csv", newline="") as f:
for row in csv.DictReader(f):
outcomes[row["outcome"]] += 1
mins[row["panel"]] += float(row["minutes"])
if row["outcome"] == "completed":
paid[row["panel"]] += float(row["reward"])
for panel, m in mins.items():
if m:
print(f"{panel}: {paid[panel] / (m / 60):.2f} per hour over {m / 60:.1f} hours")
print(dict(outcomes))
Expected output: one line per panel with your hourly rate, then a count of each outcome. I won’t guess your numbers, they depend on which studies you take.
If it breaks: a KeyError means a header doesn’t match the ones above, and a ValueError means an empty minutes or reward cell.
Step 6: keep payout details stable and records tidy
Use one payout method in your own name and don’t change it in the week you plan to cash out. Read the panel’s own terms on minimum cash-out and on dormant or expiring balances, since they differ and they change. Keep a monthly screenshot or export of your payment history next to the activity log. Whether and how to declare this income in Singapore is a question for IRAS or an accountant. This is not legal/tax advice.
Expected output: your payment history total matches the completed rewards in your log.
If it breaks: if a payout is stuck, open one ticket with the payment reference. Don’t resubmit or edit payout details while it’s pending.
Step 7: work like a participant
Read the instructions, pass the attention checks, and return a study you can’t do properly instead of submitting junk. Screen-outs are part of the work (see a week of screen-outs), and they’re no reason to start guessing at answers. Don’t run auto-refreshers or scripts against a panel’s pages. Check the terms first, and I’d skip it regardless. If you’re wondering how much timing matters, when new surveys actually appear covers it.
Expected output: your log is mostly completed rows, with the odd rejection.
If it breaks: if a rejection looks wrong, use the panel’s dispute route once, politely, with the study title and a screenshot of what you answered. Repeat submissions look worse.
Step 8: audit monthly and plan for changes
Put the audit on a schedule so it happens. On Windows:
schtasks /create /tn "panel-audit" /tr "notepad.exe C:\panel\audit.txt" /sc monthly /d 1 /st 09:00
Then each month, work through the checklist in that file:
- read the panel’s security emails and check any login history it offers
- re-check your email at Have I Been Pwned
- confirm your profile answers are still true
- confirm payout details, and that you know where the recovery codes are
- save the ticket ID and date for any support contact
Tell the panel before big changes. Moving country deserves its own read first: what happens to a panel account when you move country.
Expected output: SUCCESS: The scheduled task “panel-audit” has successfully been created.
If it breaks: if schtasks errors out, a phone calendar reminder does the same job.
Common pitfalls
- Buying, renting or borrowing a “verified” account. You inherit someone else’s ID and history, panel terms typically prohibit transfers, and the seller can still walk back in with the password. I’d write the whole idea off.
- Letting the recovery email rot. An old university or employer address gets deleted, and the panel has nowhere to send a reset.
- Changing several things in one week. A new phone, a new email and a trip abroad together can look like someone else took the account over. Change one, wait, then change the next.
- Editing profile answers to chase studies. It may open a few more invites, and it costs you the consistent history that makes the account credible.
- Deleting support emails. Ticket IDs and dates are your evidence if a flag ever needs untangling.
Scaling this
Copying one account doesn’t scale, and I wouldn’t try. Panels generally want one account per person, so here 10x, 100x and 1000x mean how much of this routine you’re carrying.
- 10x: more panels, each with one account under your real identity. Add a register (panel, email, 2FA method, verified date, payout method, last audit) and one password manager folder per panel. The log already has a panel column, so the script keeps working.
- 100x: several people, for example a household where everyone has their own account, ID, device and payout. Shared addresses and connections can draw questions, so read the terms and ask support first. Share nothing between the accounts. Move the log to a shared sheet or SQLite and run the rate script per person.
- 1000x: at that size you’re holding other people’s identities and payouts, which makes it a business with contracts and data protection duties (in Singapore, the PDPA) and takes it well past an account habit. I don’t run anything like that and this article doesn’t cover it.
Where to go next
The blog index has everything else. These three follow on most directly:
- How panels fingerprint your device: what a browser and a machine give away, and what to keep steady.
- What happens to a panel account when you move country: read it before you relocate, not after.
- Why survey accounts get banned: the failure modes this routine is built to avoid.
Written by Xavier Fok
disclosure: this article may contain affiliate links. if you buy through them we may earn a commission at no extra cost to you. verdicts are independent of payouts. last reviewed by Xavier Fok on 2026-09-25.