Todot Photolab for WooCommerce icon

Todot Photolab for WooCommerce

Todot Photolab for WooCommerce is a WordPress plugin with the following stats:

  • #20,884 Global Rank

PF Score (About PF Scores)

PF Score is not a quality guarantee. It is a ranking based on available public signals.

Bronze45.5
Platinum
Gold
Silver
Bronze
Low

Score Breakdown

0
Popularity 40% No install data
60
Reputation 35% No ratings yet
98
Freshness 25% Updated 28 days ago

No vulnerability history

Download Trends

Loading download data…

Vulnerabilities

No known vulnerabilities

This plugin has no records in the Wordfence Intelligence vulnerability database.

About Todot Photolab for WooCommerce

Bulk photo album management and sales for WooCommerce. Upload thousands of photos, auto-watermark, and sell as downloadable products.

Photolab streamlines selling digital photos at scale through WooCommerce. Upload thousands of photos in batches, apply watermarks inline during upload, and publish each as a downloadable product — all from a single admin panel. Built for event photographers, photo studios, and anyone selling large galleries online.

Key features:

  • Bulk chunked upload (5 files per chunk, supports 2000+ photos per album)
  • Inline watermarking during upload — no background queue drift; Imagick preferred, GD fallback
  • Configurable watermark position: full-width or bottom-right
  • Each photo becomes a virtual downloadable WooCommerce product
  • Original photos protected from public access; customers download only after purchase
  • Download blocked until processing completes (HTTP 425 during watermarking, 410 if expired)
  • Multi-upload: up to 3 concurrent album uploads per user with rate limiting
  • Automatic recovery of interrupted uploads (client heartbeat + server-side cron, FSM with aborted state and manual reset)
  • Idempotency-Key on chunk endpoints for safe retry after network timeouts
  • Distributed lock (MySQL GET_LOCK / transient fallback) for multi-server deployments
  • Daily cleanup failsafe: stuck photo detection, retry budget, orphan scan, log retention
  • Structured logging with auto-context (user_id, album_id, photo_id) and sensitive data redaction
  • Album expiration management with automatic cleanup
  • SHA-256 deduplication to prevent duplicate photos in the same album
  • SPA admin panel with zero page reloads, REST API communication
  • Imagick support (recommended) with GD fallback for image processing
  • WooCommerce HPOS compatible

Requirements:

  • WordPress 6.5+
  • WooCommerce 8.0+
  • PHP 8.1+
  • PHP Imagick extension (recommended) or GD
  • memory_limit >= 256MB
  • max_execution_time >= 60s
  • upload_max_filesize >= 20MB
  • post_max_size >= 100MB

Screenshots

Admin panel — create an album, upload photos, set price and expiration.

Admin panel — create an album, upload photos, set price and expiration.

Galleries status — track all albums, expiration dates, and per-album photo counts.

Galleries status — track all albums, expiration dates, and per-album photo counts.

Upload complete — photos saved and ready, watermarking done.

Upload complete — photos saved and ready, watermarking done.

Frequently Asked Questions

How many photos can I upload per album?

The plugin handles high volumes, up to 2000+ photos per album. Uploads use chunks of 5 files (filterable via photolab_chunk_size) for compatibility with shared hosting.

Can I use the plugin without Imagick?

Yes. If Imagick is unavailable, Photolab automatically uses GD for watermarking. Performance on large volumes will be reduced compared to Imagick.

Does the watermark affect original photos?

No. The watermark is applied to a copy (saved in wp-content/uploads/Photolab/watermarked/). Originals are stored separately and protected from public access.

When is the watermark applied?

Watermarking is inline: it runs during the same HTTP request as the upload chunk. Photos are watermarked immediately as they arrive, not via a background queue. The /upload/chunk endpoint returns after processing completes. Download is blocked until the photo reaches the watermarked state (HTTP 425).

What happens if I close the browser during upload?

The client sends a heartbeat every 30 seconds. If the server receives no heartbeat for 5 minutes (or 10 minutes if none was ever received), a recovery job transitions the album to aborted. From the admin panel you can reset the album (POST /albums/{id}/reset) to resume, or delete it. Already-uploaded photos remain as valid WooCommerce products.

Can I upload multiple albums at once?

Yes, up to 3 concurrent album uploads per user. Attempts beyond this limit return HTTP 429. Albums with the same name already in flight for the same user return HTTP 409.

What happens if a chunk upload times out?

The client can retry the same /upload/chunk with an Idempotency-Key header. The original response is replayed from a transient (TTL 24h) without reprocessing files. Without the header, behavior is unchanged.

What happens when a photo expires?

If an expiration date is set for the album, the plugin automatically deletes the WooCommerce product, watermarked image, and database record via a daily job managed by Action Scheduler (bundled with WooCommerce).

How does the daily cleanup work?

An Action Scheduler job photolab_daily_cleanup runs every 24 hours (default 03:00 UTC) performing a failsafe sweep: detects stuck watermark jobs >1h, re-enqueues stalled photos, retries failed photos within a 5-retry budget per photo, purges expired idempotency transients, scans for disk/DB orphans (log only), and deletes Photolab logs older than 30 days (filter photolab_log_retention_days). Action Scheduler logs are auto-deleted after 7 days.

Does the plugin work in multi-server environments?

Yes. An optional distributed lock is available: if WordPress uses an external object cache (e.g. Redis), the lock uses wp_cache_add (atomic SET NX). Without external object cache, the fallback is a transient. Concurrent chunk attempts for the same album from different nodes return HTTP 423. CAS on the database is the final safeguard. Disable via filter photolab_use_distributed_lock.

Are Pretty Permalinks required?

Yes. The WordPress REST API requires a permalink structure other than “Plain”. The plugin shows an admin notice if Pretty Permalinks are not active.

Does Photolab work with WooCommerce HPOS?

Yes. Photolab does not access wp_posts directly for WooCommerce products and is fully compatible with High-Performance Order Storage (HPOS).

Where do I find the logs?

In WooCommerce Status Logs, filter by source photolab*. Available sources: photolab, photolab-fsm, photolab-upload, photolab-heartbeat, photolab-recovery, photolab-watermark-job, photolab-rate-limit, photolab-ownership, photolab-download-guard, photolab-idempotency, photolab-cleanup, photolab-lock, photolab-logger. Each entry automatically includes user_id, album_id, and other contextual keys. Sensitive data (passwords, tokens, emails) is automatically redacted.

Ratings & Reviews

Recent Reviews

Loading reviews…

View all reviews on WordPress.org (opens in a new tab)

Changelog

0.0.5 — Initial public release

  • Bulk chunked upload with inline watermarking (Imagick + GD)
  • WooCommerce product auto-creation per photo
  • Configurable watermark position (full-width / bottom-right)
  • Album expiration with automatic cleanup
  • Finite State Machine with CAS transitions
  • Upload recovery (heartbeat + server-side scan + manual reset)
  • Multi-upload rate limiting (3 concurrent per user)
  • Idempotency-Key for safe chunk retry
  • Distributed lock for multi-server deployments
  • Download guard (HTTP 425 during processing, 410 expired)
  • Structured logging with 13 sources via wc_get_logger
  • SHA-256 deduplication within albums
  • HPOS compatible
  • SPA admin panel (vanilla JS + Tailwind CSS local build)
  • CI pipeline: PHPStan level 6, PHPCS WordPress, PHPUnit (30 test files)

Alternatives to Todot Photolab for WooCommerce

Other WordPress plugins serving a similar purpose, ranked by relevance and PF Score.

Platinum93.3
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce icon

CartFlows

WooCommerce funnel builder enabling one-click upsells, order bumps, and checkout optimization.

★ 4.8/5·200K+ installs·Updated 11 Aug 2026
Platinum92.9
Variation Swatches for WooCommerce icon

Variation Swatches for WooCommerce

Replaces WooCommerce variation dropdowns with visual color, image, and button swatches for product attributes.

★ 4.8/5·300K+ installs·Updated 8 Jun 2026
Platinum92.5
User Switching icon

User Switching

Switch between user accounts instantly in WordPress and WooCommerce without logging out.

★ 4.9/5·200K+ installs·Updated 9 Jul 2026
Platinum91.4
WP Crontrol icon

WP Crontrol

Provides direct control and visibility over WordPress scheduled cron events and their execution history.

★ 4.5/5·300K+ installs·Updated 31 Jul 2026
Platinum90.7
Customer Reviews for WooCommerce icon

Customer Reviews for WooCommerce

Automate review collection through post-purchase reminders to boost customer feedback and sales.

★ 4.8/5·80K+ installs·Updated 3 Aug 2026
Platinum90.3
Admin Columns icon

Admin Columns

Add, remove, and reorder columns in WordPress admin tables without writing code.

★ 4.9/5·100K+ installs·Updated 29 May 2026
Platinum90.2
Germanized for WooCommerce icon

Germanized for WooCommerce

Localizes WooCommerce for German legal and market requirements, including compliance features.

★ 4.8/5·70K+ installs·Updated 10 Aug 2026
Platinum90.2
Discount Rules for WooCommerce icon

Discount Rules for WooCommerce

Configure bulk discounts, quantity pricing, and dynamic pricing rules for WooCommerce stores.

★ 4.9/5·100K+ installs·Updated 28 May 2026