Guide · Security

How Photta stops bots

This guide explains why bots target virtual try-on widgets, the five-layer defense Photta deploys, how to monitor for suspicious activity in your dashboard, and when to add custom CAPTCHA.

luxe.shop
Vibes Hoodie

LUXE BASICS

Vibes Hoodie

$58

Try-on opens here →

The quick read

  • Bots target try-on widgets to generate free AI images at the merchant's expense — Photta blocks them with five layered defenses before any credits are consumed.
  • Photta's defense stack: hCaptcha challenge, BotD fingerprinting, domain allowlisting, IP rate limiting, and monthly try-on caps — all active by default.
  • Monitor the Security panel in your Business Dashboard for blocked attempts, unusual IP clusters, and spike alerts — then act on them with one-click IP blocking.

Section 1: Why bots target try-on widgets

Virtual try-on widgets are an attractive bot target because they provide free AI image generation. A try-on endpoint accepts a photo and a product image and returns an AI-composited result — from a bot's perspective, this is a free, publicly accessible AI image generation API. Automated scripts can hit the endpoint thousands of times per hour to generate product images, headshots, or synthetic training data at zero cost to the attacker and full monthly-cap cost to you as the merchant.

The economic incentive is significant: a quality AI image generation API typically costs $0.05–0.20 per image. A try-on widget endpoint without bot protection is effectively offering this service for free to anyone who reverse-engineers the request format. At scale, a single bot campaign can exhaust a merchant's entire monthly try-on quota in hours, leaving real shoppers with degraded service for the rest of the billing period.

Section 2: Photta's five-layer defense stack

Photta deploys five independent defenses, each catching a different attack vector. Layer 1 — hCaptcha: every try-on request must include a valid hCaptcha token generated in the browser. Headless bots and automated HTTP clients cannot solve hCaptcha without human interaction, blocking simple scripted attacks. Layer 2 — BotD fingerprinting: the SDK runs BotScore by FingerprintJS to detect headless browsers, automation frameworks (Puppeteer, Playwright), and suspicious browser environments before the shopper even submits a photo.

Layer 3 — Domain allowlisting: your pk_live_ key only accepts requests from domains you register in Settings → Allowed Domains. Requests from any other origin return HTTP 403 immediately, before any AI processing occurs. Layer 4 — IP rate limiting: more than 10 try-on requests per minute from a single IP address triggers automatic throttling; more than 30 per minute triggers a temporary block. Layer 5 — Monthly cap: your plan's monthly try-on limit (500/2,000/10,000 depending on tier) is hard-capped server-side. Exhausting the cap stops all try-ons for the rest of the billing cycle, preventing runaway cost scenarios.

Section 3: Monitor bot attempts in your dashboard

Log in to business.photta.app and navigate to Security. The Security panel shows three charts updated in real time: Blocked Attempts (total per hour), Block Reason Breakdown (hCaptcha failures vs. BotD detections vs. domain mismatches vs. rate limit triggers), and Top Blocked IPs (the IP addresses generating the most blocked requests in the past 24 hours). A healthy store typically shows near-zero blocked attempts during normal operating hours.

The Security panel also includes an Anomaly Alerts section. Photta's analytics layer watches for sudden spikes in try-on volume or blocked attempts that deviate more than three standard deviations from your 7-day baseline. When an anomaly is detected, you receive an email notification within 15 minutes and the alert appears in the dashboard. You can configure notification thresholds under Settings → Notifications → Security Alerts.

Section 4: Respond to suspicious activity

When you see unusual patterns in the Security panel — a spike in blocked requests, a cluster of attempts from one IP range, or a sudden drop in your monthly quota — take these actions in order. First, check the Top Blocked IPs list. If one or a small number of IPs account for most blocked attempts, click 'Block IP' next to each one to permanently ban them at the Photta layer. Blocks apply immediately and persist until you manually remove them.

Second, if the attack is using multiple IPs (a distributed botnet), contact Photta support via the dashboard chat with your merchant ID and the attack timestamp range. Photta's security team can apply a CIDR-level block on the attacking subnet within a few hours. Third, if your monthly quota has been significantly depleted by bot activity, open a support ticket — Photta offers one-time quota restoration for documented bot attacks. Attach a screenshot of your Security panel's anomaly alert as evidence.

Section 5: When to add custom CAPTCHA on top

Photta's built-in hCaptcha runs invisibly — most legitimate shoppers never see a CAPTCHA challenge. In very rare cases (high-value stores, publicly indexed widget endpoints), the built-in defenses may not be sufficient if a sophisticated attacker is using human CAPTCHA-solving farms. In this scenario, add a second CAPTCHA layer at your own product page level before calling photta.open(). Verify your custom CAPTCHA on your server, then pass a signed verification token to the Photta SDK as photta.open({ verificationToken: 'your_token' }) to ensure only verified sessions can initiate a try-on.

Custom CAPTCHA is a last resort for stores that have experienced repeated sophisticated attacks. For the vast majority of merchants, Photta's five-layer stack provides sufficient protection with no shopper-visible friction. If you are evaluating whether to add a custom layer, check your Security panel's Block Reason Breakdown first — if hCaptcha failures account for fewer than 1% of your total blocked attempts, the stack is working and an additional layer adds friction without meaningful security gain.

Photta's five-layer bot defense

🤖

hCaptcha + BotD

Every try-on requires a valid hCaptcha token and passes FingerprintJS BotD fingerprinting. Automated clients are blocked before any AI processing runs.

🔒

Domain allowlisting

Your pk_live_ key only works from domains you register. Copied keys are useless outside your allowlist.

📊

Security dashboard

Real-time blocked attempt charts, top blocked IPs, and anomaly alerts in your Business Dashboard Security panel.

🛑

Monthly hard cap

Your plan's monthly limit is enforced server-side. No bot campaign can exceed it, so runaway costs are structurally impossible.

FAQ

No — Photta uses hCaptcha's invisible mode by default. Legitimate shoppers with normal browser behavior never see a challenge; only suspicious sessions are shown a puzzle.

Bot protection included on every plan

hCaptcha, BotD, domain allowlisting, rate limiting, and monthly caps — no security add-on fee.

View plans

Your widget is protected from day one

Five layers of defense, zero shopper friction. Start your free trial and let Photta handle the bots.

Start free trial