Shadower — User Guide

Everything you need to know about setting up and using Shadower to copy trade on Polymarket.

What is Shadower? #

Shadower is a web app that automatically copies the trades of top Polymarket traders to your account. You pick the wallets you want to follow — Shadower monitors them in real time via blockchain WebSocket and places the same bets on your behalf. The bot runs 24/7 in the cloud, so it keeps copying even when your computer is off.

🎯 How it works

  1. You add a trader's wallet address
  2. Bot monitors it via Polygon blockchain
  3. Trader places a bet → Shadower copies it
  4. Your position updates in real time

🔧 What you need

  • Polymarket account with USDC
  • Your Polymarket CLOB key
  • Any modern web browser
  • No install · no Alchemy · no RPC key

Two modes

DRY-RUN Simulation

Bot runs without spending USDC. All actions are logged so you can test your strategy risk-free.

LIVE Real Trading

Bot executes real transactions on Polymarket. Requires your Polymarket CLOB key.

Getting Started #

1
Open the web app Go to shadower.trade/app in any modern browser. There is nothing to download or install.
2
Create your account Sign up with Google, Discord, or email + password. Proceed to Account & Login for details.
3
Connect your wallet Paste your Polymarket CLOB key once. See First-time Setup.
4
Start copying Add a trader, set your limits, and press Start. The bot runs 24/7 in the cloud.
💡

Because Shadower runs in the cloud, the bot keeps copying trades even when your computer is off or your browser tab is closed.

Account & Login #

Shadower is a cloud service. Your account manages your subscription, your connected wallet, and your bot settings. Your private key is stored encrypted on our servers (see Security) so the bot can keep trading 24/7 even while you are offline.

Sign in options

G
Google Click "Sign in with Google" → authorize in the popup → you're logged in.
D
Discord Click "Sign in with Discord" → authorize → you're logged in.
@
Email + Password Enter email and password → click "Create account" → check inbox for a confirmation link → click it → you're logged in.

Returning users

Your session stays signed in for ~30 days. Just open shadower.trade/app and you're back in. If the session expires, simply sign in again. Because the bot runs in the cloud, it keeps trading on your account whether or not you are signed in.

ℹ️

One account per user. Your subscription is personal — don't share your account. The bot runs server-side, so there is one active bot per account regardless of which browser or device you sign in from.

First-time Setup #

After login, the onboarding screen appears. Connect your wallet to enable LIVE trading.

💡

DRY-RUN (simulation) works without any setup. You only need the key below to enable real trading.

1. Private Key

Your Polymarket CLOB key — the key for the wallet you want to trade from. Used to sign orders on Polymarket on your behalf.

  • Format: 64 hex characters, optionally prefixed with 0x
  • Storage: Encrypted with AES-256-GCM via AWS KMS, never stored in plain text. Decryption is bound to your account, and the bot only places trades — never withdrawals. See Security.
🔐

Never share your private key with anyone. Use a dedicated wallet with only the funds you want to trade.

🌐 Signed up via Google / Email

Most Polymarket users. Your wallet is managed by Polymarket.

  1. Go to polymarket.com/settings
  2. Open the Export Private Key tab
  3. Confirm with your login → copy the key

🦊 Connected MetaMask / Rabby

If you connected an existing Web3 wallet.

  1. Open MetaMask → click account avatar
  2. Account details → Export private key
  3. Enter MetaMask password → copy the key

Option A — Polymarket Settings (Google / Email login)

Polymarket — click avatar top right
Step 1 — Click your avatar (top right)
Polymarket — dropdown menu, click settings
Step 2 — Click the ⚙️ gear icon in the dropdown
Polymarket Settings — click Private Key in sidebar
Step 3 — Click "Private Key" in the left sidebar
Polymarket Private Key page — click Start Export
Step 4 — Click "Start Export"
Magic.link — Before you continue, click Reveal Private Key
Step 5 — Confirm and click "Reveal Private Key"
Wallet Private Key — click Copy
Step 6 — Click "Copy" — the key is ready to paste into Shadower

Option B — MetaMask

Open MetaMask and click Account 1 dropdown
Step 1 — Open MetaMask → click "Account 1" to open accounts list
MetaMask accounts — click three dots next to account
Step 2 — Click the ⋮ three dots
MetaMask Account details — click Private keys
Step 3 — Click "Private keys"
MetaMask Private keys — copy Polygon key
Step 4 — Copy icon next to Polygon

2. Wallet Address

Your public wallet address (the one matching your private key).

  • Format: 0x + 40 hex characters
  • Example: 0xAbC1234...7890dEf
  • This must match the private key above
Polymarket profile — copy wallet address
Your wallet address is shown on your Polymarket profile page — click the copy icon

3. Language

Choose your preferred interface language. Available: English, Русский, Українська, Español, Português, Türkçe, 한국어, 中文.

Saving settings

Click Save. The app validates the data and starts the bot in DRY-RUN mode. You can change any setting later via the Settings button in the toolbar.

🖥️
Shadower — Setup window
The Setup window after first login — all fields filled in correctly
Shadower Setup window — filled in and ready to save

App Overview #

The main window is divided into 5 zones:

┌──────────────────────────────────────────────────────────────────┐ │ TOOLBAR: [DRY-RUN] [Live Trading] [Ratio] [Min Bet] [Limit/h] │ │ [Sell Mode] [Settings] [Active until] │ ├─────────────────┬────────────────────────────────┬───────────────┤ │ │ [All] [Trader 1] [Trader 2] │ Open │ │ Statistics │ ────────────────────────── │ Positions │ │ ───────────── │ Trades table │ │ │ Traders list │ ────────────────────────── ├───────────────┤ │ │ Log output │ Errors │ │ [+ Add Trader] │ │ │ ├─────────────────┴────────────────────────────────┴───────────────┤ │ Shadower 1.1 | Copying: Trader 1 | Mode: DRY-RUN | 78ms │ └──────────────────────────────────────────────────────────────────┘
ZoneDescription
ToolbarMode toggle, all settings buttons, subscription status
Left panelStatistics block + trader list + Add Trader button
CenterTabs with trade history and bot log for each trader
Right panelCurrently open positions with live P&L + error log
Status barApp version, active traders, mode, blockchain ping

Toolbar #

ButtonWhat it does
DRY-RUN / LIVE Current mode indicator (read-only label)
Live Trading Toggle between DRY-RUN and LIVE mode. Bot restarts on toggle.
Ratio Set copy coefficient (0.01%–100%). Opens a number input dialog.
Min Bet Skip trader bets below this amount ($1–$100,000).
Limit/h Max % of your balance to spend per hour.
Sell Mode How to exit positions + Auto-Sell settings.
Settings Change your connected wallet key, wallet address, language.
Active until… Subscription status badge. Click to manage or upgrade.

Traders Panel #

The left sidebar shows all wallets you're copying. Up to 5 traders can be active at once.

Adding a trader

1
Click "+ Add Trader" at the bottom of the left panel.
2
Paste the wallet address — format: 0x + 40 hex characters.
Find a trader's address on their Polymarket profile page (it's in the URL or shown on their page).

Not sure who to follow? Browse our curated leaderboard: View Top Polymarket Traders →
3
Enter a label (optional) — e.g. "Whale #1". Helps you identify them in the tab bar.
4
Click OK. The bot restarts and begins watching the new wallet.

Managing a trader

Right-click any trader in the list (or hover and click ···) to open the context menu:

ActionDescription
Enable / DisablePause copying without removing the trader. Disabled traders show instead of .
RenameChange the display label.
RemoveDelete this trader. Their tab and history are removed.

Trades Table #

The central area shows a tab for All traders combined, plus an individual tab for each trader you've added. Each tab contains a trades table and a log below it.

Table columns

ColumnDescriptionExample
TimeWhen the event occurred15:42:07
ActionWhat the bot did (see below)BUY
SideDirection of the betUp / Down
MarketPolymarket event nameBitcoin Up or Down - Mar 29
PriceToken price in cents72¢
AmountBet size in USDC$5.40

Action types

ActionColorMeaning
BUYGreenTrade was copied and submitted
SELLRedPosition sold when trader sold
AUTO-SELLOrangePosition sold automatically at target price
REDEEMOrangeWinning token redeemed for USDC
SKIPGrayTrade ignored — see skip reasons

Statistics Block #

The left panel shows 8 real-time metrics, updated every second while the bot is running:

MetricDescription
RatioCurrent copy coefficient (e.g. 0.5%)
CopiedNumber of trades copied this session. During trial: shows 3 / 10
Min Orig BetCurrent minimum trader bet filter (e.g. $205)
HourlyHourly spend used vs. total allowed (e.g. $43 / $200)
PortfolioTotal account value: available USDC + value of all open positions
CashAvailable USDC not currently invested in positions
UptimeHow long the bot has been running this session
Src BCTotal blockchain events received from Polygon since bot started

Open Positions #

The top-right panel shows all positions currently held by the bot, with live unrealized P&L.

ColumnDescription
MarketEvent name + outcome (Up/Down)
PriceCurrent market price of the token (in cents)
P&LUnrealized profit/loss. Green = profit, red = loss

At the bottom of the table: Total unrealized P&L for all open positions combined.

ℹ️

Positions are updated every second. P&L is calculated based on the current market price, not your entry price. It becomes realized when you SELL or REDEEM.

Log & Errors #

Bot Log (center-bottom)

Full history of everything the bot does, with timestamps:

ColorMeaningExample
GraySkipped trades, status messagesSKIP ($45 < $205)
White/coloredBUY / SELL actionsBUY Up 72¢ Bitcoin...
OrangeAuto-sell eventsAUTO-SELL Up 99¢...
RedErrors and failuresFAIL: order rejected

The log is cleared when the bot restarts. To save a session's log, copy the text manually.

Errors Block (right-bottom)

Shows only error messages filtered from the main log. Use this panel to quickly spot issues without scrolling through all activity.

Status Bar #

Shadower 1.1 | Copying: Trader 1, Trader 2 | Mode: DRY-RUN | Ping: 78ms
FieldDescription
Shadower 1.1Current app version
Copying: ...Names of traders being actively copied. Shows "—" if none.
ModeDRY-RUN (gray) or LIVE (green)
PingLatency to the Polygon blockchain in milliseconds. Normal: 50–200ms

Ratio (Coefficient) #

The ratio determines the size of your bet relative to the trader you're copying.

Your bet = Trader's bet × Ratio

Example: Trader bets $1,000 · Ratio = 5% → Your bet = $50
Range0.01% to 100%
Default1%
SavedWith your account — applies the next time the bot evaluates a trade
TipStart at 1–5% while testing in DRY-RUN mode

Min Bet #

Bets from traders that are smaller than this value are ignored (logged as SKIP). Useful for filtering out small/experimental trades.

If trader's bet < Min Bet → SKIP

Example: Min Bet = $200, trader bets $150 → SKIP
Range$1 to $100,000
Default$100
TipSet higher ($200–$500) to only copy serious positions

Hourly Limit #

Sets the maximum amount of USDC the bot can spend in any rolling 60-minute window, expressed as a percentage of your balance.

Max spend per hour = Balance × Hourly Limit %

Example: Balance = $1,000 · Limit = 20% → Max $200/hour

Once the limit is reached, all new trades are skipped until the oldest bets fall outside the 60-minute window.

💡

Use this as a risk control to prevent the bot from over-betting during a highly active market period.

Sell Mode #

Controls what happens to your position when the copied trader sells their position.

ModeWhat happensBest for
Ignore Your position stays open. Bot never sells based on trader actions. Manual traders who want full control over exits
Full Bot sells 100% of your position when the trader exits. Most users — mirrors the trader's full exit
Percentage Bot sells only X% of your position (e.g. 50%). Partially locking in gains while keeping exposure
💡

Recommended: Start with Full — it most faithfully mirrors your trader's behavior.

Auto-Sell #

An independent feature that automatically sells a position when its market price reaches your target threshold, regardless of what the trader does.

Auto-Sell: ON · Threshold: 99¢

Bought token at 72¢ → price rises to 99¢ → bot sells automatically
Profit: (99 - 72) / 72 ≈ 37.5%
Default threshold99¢
Range50¢ to 100¢
Check intervalEvery 1 second
Works in DRY-RUNYes (simulated)
ℹ️

Auto-Sell is independent of Sell Mode. You can have Sell Mode = Ignore but still use Auto-Sell to take profit when a token approaches resolution.

DRY-RUN vs LIVE #

DRY-RUNLIVE
Real transactions❌ No✅ Yes
USDC spent❌ No✅ Yes
Logged in app✅ Yes✅ Yes
Requires connected wallet (CLOB key)❌ No✅ Yes
Use forTesting strategies risk-freeReal copy trading

How to switch to LIVE

1
Ensure your wallet is connected — your CLOB key is entered (Settings).
2
Click "Live Trading" in the toolbar.
3
The bot restarts. Status changes to LIVE in toolbar and status bar.
⚠️

In LIVE mode, the bot spends real USDC. Start with a small Ratio (1–2%) and monitor the log closely for the first few hours.

How Copying Works #

When the bot is running, it monitors your traders' wallets via the Polygon blockchain WebSocket in real time. Here's the full flow for each copied trade:

1
Trader places a bet on Polymarket (on-chain transaction)
2
Blockchain event received via our server-side Polygon WebSocket (typically within 1–3 seconds after block confirmation)
3
Filters applied: price range check (3¢–97¢), min bet check, hourly limit check, age check (<120 seconds old)
4
Bet size calculated: trader's bet × Ratio, minimum $1
5
DRY-RUN: trade is logged only
LIVE: order submitted to Polymarket CLOB
6
Trades table updated, statistics refreshed, position added to Open Positions panel

Why Trades Are Skipped #

When a trade shows as SKIP in the log, one of these filters blocked it:

Log messageReasonFix
SKIP ($45 < $205) Trader's bet is below your Min Bet setting Lower the Min Bet threshold
SKIP (price 0.98 out of range) Token price is above 97¢ or below 3¢ These are near-resolved markets — this is intentional
SKIP (hourly $200/$200) Hourly spending limit reached Wait for the hour to roll over, or increase the limit
SKIP (stale event) Blockchain event is older than 120 seconds Normal during startup warmup — not an error
SKIP (trial limit) 10 trial copies used up Subscribe to continue

Subscription & Trial #

Free Trial

  • Duration: 3 days from account creation
  • Copy limit: 20 trades
  • Ends when either the time runs out OR 20 copies are used — whichever comes first
  • Trial status shown in top-right badge: Trial: 2d 6h · 3/20

Paid Plans

MonthlyYearly
Price$27/month$319/year
Per month$27$26.58
Savings2 months free
Copy tradesUnlimitedUnlimited
SupportStandardPriority

How to subscribe

1
Open the subscription section in the app (the Trial: ... badge)
2
Choose a plan: Monthly or Yearly
3
Pay in cryptocurrency (BTC, ETH, USDT, USDC and more) via NOWPayments
4
Complete payment — your subscription activates automatically within a few minutes
ℹ️

Plans are prepaid for a fixed period and do not auto-renew. Crypto payments are irreversible — double-check the amount, network, and address before sending.

Subscription statuses

BadgeMeaning
Trial: 2d 6h · 3/20Trial active — time and copies remaining
Active until 28.04.2026Paid subscription active
Expires 28.04.2026Active until the date shown; renew to continue after

App Updates #

Because Shadower runs in the cloud, you are always on the latest version — there is nothing to download, install, or update. New features and fixes go live automatically.

💡

If you have the app open during an update, just refresh the page to load the newest version. Your running bot is unaffected — it keeps trading server-side.

Security #

Shadower is a custodial service: to trade on your behalf, your private key is stored on our servers. Here is exactly how it is protected — and what the system can and cannot do.

WhatHow it's protected
Private Key Encrypted with AES-256-GCM using envelope encryption managed by AWS Key Management Service (KMS). The master key never leaves AWS KMS, the key is never stored in plain text, and every decryption is access-controlled and audit-logged.
Per-account binding Decryption is cryptographically bound to your account (KMS encryption context). One user's key cannot be decrypted in the context of another — even in our own systems.
Trading only The system uses your key solely to place orders on Polymarket according to your settings. It does not initiate withdrawals or transfers of your funds to any external address.
Cloud data Your email and subscription status are stored in Supabase. Your encrypted key and bot settings are stored in our database — the key only ever as KMS-encrypted ciphertext.
Network All connections use HTTPS/WSS (TLS encrypted). We run the blockchain infrastructure server-side — you don't need your own Alchemy or RPC key.
🔐

Your primary protection — use a dedicated wallet. Create a separate Polymarket wallet for the bot and fund it only with the USDC you intend to trade. Never connect your main wallet or a wallet holding assets you are not actively trading.

Log Reference #

Every line in the log follows a pattern. Here's how to read it:

[15:42:07] +1240ms  Trader 1  Up 72¢  Bitcoin Up or Down - Mar 29  $5.40 (x3)
[15:42:09] SKIP ($45 < $205)
[15:42:11] BUY placed: orderID=0x3f9a...

Line parts explained

PartMeaningExample
[15:42:07]Local time the event was processedHH:MM:SS
+1240msBlockchain delay — how many milliseconds after the block was confirmed that Shadower received the event. Normal: 1000–2500ms. Only shown when delay > 1 second.+1420ms
Trader 1Label of the trader who placed the betWhale #1
Up / DownDirection of the bet on the marketUp = betting the outcome happens
72¢Price of the token in cents at the time of the trade (100¢ = $1 = certain outcome)72¢ = 72% implied probability
$5.40Size of YOUR copied bet in USDCTrader bet $750 × 0.72% Ratio = $5.40
(x3)The trader placed this same bet 3 times in quick succession — grouped into one line(x3)

Common log messages

MessageMeaning
SKIP ($45 < $205)Trader bet $45 but your Min Orig Bet is $205 — ignored
SKIP (price 0.98 out of range)Token is priced above 97¢ — market is near resolution, skipped by design
SKIP (hourly $200/$200)Hourly spending cap reached
BUY placed: orderID=0x…Order submitted to Polymarket successfully (LIVE mode)
AUTO-SELL Up 99¢ …Auto-sell triggered — position sold at target price
REDEEM Win …A winning outcome token was redeemed for USDC
CLOB: initializing…Bot is connecting to Polymarket's order system on startup
CLOB: readyConnection established, bot is ready to trade
── Starting Shadower (LIVE) ──Bot started in LIVE mode
── Starting Shadower (DRY-RUN) ──Bot started in simulation mode
Loading… $11.72 (x3)Startup warmup — bot is loading last 100 trades per trader to get context. Normal at launch.
BC error: …Blockchain WebSocket connection issue — bot will auto-reconnect

Glossary

TermMeaning
USDCUSD Coin — a stablecoin pegged 1:1 to the US dollar. Used as currency on Polymarket.
CLOBCentral Limit Order Book — Polymarket's order matching system. All buy/sell orders go through it.
Outcome tokenA token representing one possible result of a Polymarket event (e.g. "Yes" or "Up"). Resolves to $1 if the outcome is correct, $0 if not.
72¢The current price of an outcome token. Roughly equals the market's implied probability of that outcome occurring (72% chance).
99¢A token near $1.00 — means the market has almost fully resolved in that direction. Auto-Sell target is usually set here.
Up / DownThe two sides on price-based Polymarket events (e.g. "Will Bitcoin be Up or Down today?").
P&LProfit & Loss — the difference between what you paid and what the position is currently worth.
Unrealized P&LP&L on a position you still hold. Becomes realized when you sell or redeem.
DRY-RUNSimulation mode — bot runs all logic but submits no real orders.
AllowanceA permission you give Polymarket's smart contract to spend your USDC. Required once before first trade in LIVE mode.
Src BCSource Blockchain — number of raw events received from the Polygon network since bot started.
WarmupThe startup phase where the bot loads the last 100 trades per trader to build context before live monitoring begins.

Error Reference #

Red messages in the log or the Errors panel mean something went wrong. Here's what each one means and how to fix it:

Error messageCauseFix
BUY error (insufficient_balance) Not enough USDC in your wallet, or Polymarket's spending allowance hasn't been approved Add USDC to your wallet. The bot will auto-retry and approve allowances. If it persists, restart the app.
BUY error (size_too_small) Your calculated bet is below Polymarket's minimum order size (~$1) Increase your Ratio setting, or lower Min Orig Bet so you copy larger trades.
BUY error (duplicate) Polymarket rejected the order because an identical order already exists Not a real error — happens occasionally with fast traders. Bot ignores it automatically.
BUY error (market_closed) The market has closed or trading is paused Normal — bot skips it automatically. No action needed.
BUY error (other): … Unexpected error from Polymarket's API Check the full error text. If it mentions "signature" or "key", verify your Private Key in Settings.
SELL FAIL … Sell order was rejected by Polymarket Usually a temporary API issue. Position remains open — you can sell manually on Polymarket.com.
CLOB init error: … Bot couldn't connect to Polymarket's order system at startup Check your Private Key and Wallet Address in Settings. Ensure they match.
BC error: … Blockchain WebSocket connection dropped The bot reconnects automatically — this is handled server-side. If it persists, contact support.
Red connection status (Disconnected) Temporary loss of connection to the Polygon blockchain The bot reconnects automatically when the connection is restored. Our servers handle the blockchain link — nothing to configure on your side.
Order too small (0.0012 sh). Increase Ratio or Min Bet. The number of tokens to buy is too tiny to be valid Raise your Ratio (e.g. from 0.5% to 2%) or lower Min Orig Bet to only copy larger trader positions.
💡

Most errors are temporary and resolve automatically. The bot is designed to skip failed orders gracefully and continue monitoring. If you see the same error repeatedly, that usually points to a configuration issue (wrong key, insufficient funds).

FAQ #

Why are my trades showing as SKIP?

Most common reasons: the trader's bet is below your Min Bet setting, the token price is outside the 3¢–97¢ range, or you've hit the hourly spend limit. Check the log message — it always says the exact reason.

What is DRY-RUN?

A simulation mode. The bot runs exactly as in LIVE — it monitors traders, evaluates bets, logs everything — but no real transactions are submitted. USDC is never spent. Use it to test your settings before going live.

The connection status shows red. What do I do?

This means the bot temporarily lost its connection to the blockchain. Shadower runs the blockchain infrastructure server-side and reconnects automatically — there is no Alchemy or RPC key for you to configure. If it stays red for a long time, refresh the page or contact support.

Do I need to keep my computer on?

No. The bot runs 24/7 in the cloud. Once you press Start, it keeps copying trades even when your computer is off or your browser tab is closed. You can sign in from any browser or device to check on it.

How do I find a trader's wallet address?

Go to Polymarket.com → open the trader's profile → the wallet address is in the URL or displayed on their page. It starts with 0x. You can also browse our leaderboard and top traders.

How do I cancel my subscription?

Open the subscription section in the app. Subscriptions are paid in cryptocurrency for a fixed period (monthly or yearly) and are not auto-renewing — you simply don't renew when the period ends. Your access stays active until the end of the period you paid for.

How many traders can I follow at once?

Up to 5 wallets simultaneously.

What happens when the trader wins and the token goes to $1.00?

Polymarket resolves the market and winning tokens become redeemable for $1 USDC each. If Auto-Sell is enabled at 99¢, the bot sells just before resolution. Otherwise, the bot performs a REDEEM action to claim the USDC.

What You Need #

ComponentRequirement
DeviceAny computer, tablet, or phone with a modern web browser (Chrome, Firefox, Safari, Edge)
InstallNone — Shadower runs entirely in the browser and in the cloud
Polymarket walletA Polymarket account with USDC, and its CLOB key
USDC balanceRecommended $100+ for LIVE mode (depends on your Ratio × trader bets)
Alchemy / RPCNot needed — we run all blockchain infrastructure server-side
ℹ️

You do not need to keep your computer on. The bot runs 24/7 on our servers, so it keeps copying trades even when you are offline. Sign in from any device to check on it.

Still have questions? Contact us via Discord or email from the main site.