The ~500-row bulk-tools ceiling in 2026: chunking spreadsheet catalogs in Bubble with BIAIG
The internal “Bulk tools 2026” roundup notes an operational ~500-row batch ceiling—not a single hard cap in public Bubble docs. When sheets drive repeat groups and async APIs, composable limits make chunking (~50–500 rows) normal. Pattern: queues, BulkImagen-style async batches, and idempotency—with honesty about cross-chunk consistency gaps.
Where “~500” comes from
The approved plan item and Scout packet anchor ~500 rows on an internal “Bulk tools 2026” digest roundup, not on one line in the Bubble Manual or BulkImagen API docs. Public sources describe a stack of smaller limits, which makes chunking at ~50–500 rows common when spreadsheet catalogs feed repeat groups and external async batches.
Treat ~500 as a recommended chunk size or roundup observation, not a universal platform maximum—unless your primary source (tool version, vendor) says otherwise.
What actually limits Bubble
| Layer | Documented behavior | Bulk implication |
|---|---|---|
| Make changes to a list of things | Beyond 100 entries, action does nothing (no error) | Whole-sheet updates in one workflow fail quietly |
| Workflow API return data | Lists capped at 50 without pagination / custom JSON | “Returned 50” ≠ full catalog processed |
| Data API bulk create | Up to 1,000 records per request, 4-minute window | Larger chunks possible; timeouts / empty replies reported on forums |
| Backend workflow | 300 s hard timeout | Long single-run loops break |
| Schedule API workflow on a list | Very large lists; interval throttles external APIs | Preferred bulk path vs repeat-group loops |
| CSV import | Same scheduler as API workflows; can stall at 0% under load | One-shot huge imports need chunking |
Repeat groups are UI pagination, not your bulk engine. Community guidance: don’t load entire sheets into list fields for processing (Thinkpeak—not official Bubble).
Third-party importers: why chunks are often 50–200
- EasyCSV for Bubble: bulk POST from ~50 rows, up to ~150–200+ by plan; oversized chunks → HTTP 524, ambiguous partial success.
- CSVBox (Aug 2025): batching/recursion, row limits, idempotency keys.
- Bulk Data Editor plugin: 500 records as a speed benchmark (Bulk Data API ~5 s vs workflow ~2.5 min)—not a stated platform max.

The roundup’s ~500 aligns with benchmark-scale scenarios but comes from a different evidentiary line than Bubble’s hard limits.
BIAIG = BulkImagen async batch in Bubble
“BIAIG” does not appear in public docs (Scout); here it is editorial shorthand for BulkImagen /v1/batches via API Connector in backend workflows (keys server-side only—no browser CORS).
Flow:
POST /v1/batches— immediate response withbatch_id.- Poll
GET /v1/batches/{id}untilbatch.done. resultUrlsare public HTTPS downloads—persist task ↔ row key mapping; ZIP-only flows lose per-row traceability without stored metadata.
BulkImagen caps are image/batch counts, not spreadsheet rows (pricing). Large CSV campaigns require multiple batch jobs, each sized to plan limits (e.g. up to 100 images per batch on Scale).
refMode each and refImages from uploads multiply billed images—another place row counts and API spend diverge.
Chunking pattern (five steps)
- Stable row key per catalog line (row ID, SKU, campaign slug)—consistent across multi-sheet campaigns when possible.
- Import/upsert Bubble Things in NDJSON bulk chunks: ≤1,000 per Data API docs, often smaller (50–200) to avoid 524/timeouts.
Schedule API workflow on a list(per row or per chunk) with interval for BulkImagen rate limits—not front-end repeat-group iteration.- Image generation: slice prompts to plan batch size; store
batch_id+ task index mapped to row keys. - Idempotent writes:
unique_key, status fields; retries after partial failure must not duplicate Things or re-spend credits on duplicate batch creates (credits charged at creation). Worth reading next: Batch API up to 50k. Worth reading next: OpenAI Decisions API (preview): classification. A closer look: ChatGPT is not bulk-native: where.

Where cross-chunk consistency usually breaks
- Partial bulk import (EasyCSV 524): uncertain row-level DB state—reconcile by row key.
- Webhook/batch retries without idempotency → duplicate Things (CSVBox guidance).
- Schedule on a list: list snapshot at schedule time vs row edits afterward.
- Merging poll results from multiple batches: resultUrls attached to the wrong sheet row.
concurrent_limit_exceeded/batch_limit_exceededmid-campaign—rows stuck inpending.- refMode
each: expected N images vs N×refs—cost and row association drift. - Native CSV upload instability (forum Dec 2025)—recursive backend chunking as workaround.
Pre-run checklist
- ~500 is your validated chunk size from roundup/tooling, tested on staging.
- No “change list” bulk actions over 100 items.
- Row key + status on every Thing; no blind retries without idempotency gates.
- BulkImagen: backend only; map task → row key before saving public URLs to file fields.
- After each chunk: reconcile counts (sheet rows vs DB vs completed batch tasks).

Source bounds
Internal Bulk tools 2026 roundup (plan item); public references include Bubble database actions, hard limits, Data API bulk, Scheduling API workflows, and BulkImagen API. This piece complements—does not repeat—separate editorial articles on gpt-image-2 batch unit economics and latency/async topics.
Open questions (Scout): exact roundup definition of ~500; whether BIAIG is a named plugin vs BulkImagen shorthand; canonical row-key schema for multi-sheet campaigns at Scale (100-image) batch sizes.