How do you run bulk content generation with Make.com and OpenAI?

Quick Answer: You can run bulk content generation with Make.com and OpenAI by building a scenario that iterates over a data source, calls the OpenAI module for each row, and handles rate limits through built-in error handlers and sleep modules. This approach replaces manual prompt-by-prompt work with a repeatable, automated pipeline that scales to hundreds of outputs per run.
Generating content at scale with OpenAI is straightforward when you have one or two pieces to write. It breaks down fast when you need 50 product descriptions, 200 email variants, or a full month of social posts in a single session. Copy-pasting prompts is not a workflow. It is a bottleneck.
Make.com solves this by acting as the orchestration layer between your data and OpenAI's API. You define the logic once, point it at your data source, and let it run. This guide walks through exactly how to build that pipeline, including how to handle the rate limit errors that catch most people out the first time.
What You Need Before You Start
- A Make.com account (any paid plan for scenarios with more than 1,000 operations per month)
- An OpenAI API key with sufficient credits
- A data source containing your inputs (Google Sheets, Airtable, or a CSV are the most common)
- A clear prompt template with one or more dynamic variables
If your data source is a Google Sheet, structure it so each row is one content job. Column A might be a product name, Column B a short description, Column C the target audience. Your Make scenario will read each row and inject those values into your prompt.
How to Connect Make.com to OpenAI for Bulk Content
Step 1: Create a New Scenario and Add a Data Source Module
Open Make.com and create a new scenario. Add the trigger module that matches your data source:
- Google Sheets: Use "Search Rows" to pull all rows from your input sheet
- Airtable: Use "Search Records" with a filter for rows that have not been processed yet
- HTTP module: Use this if you are pulling from a custom database or API
Set the module to return all rows rather than a single row. Make will pass each row through the rest of the scenario as a separate bundle.
Step 2: Add an Iterator Module
After your data source module, add an Iterator. This splits your array of rows into individual items so each one flows through the OpenAI module separately. Without this step, Make tries to send the entire dataset to OpenAI in a single call, which produces one output instead of one per row.
Connect the Iterator's output to the next module in your chain.
Step 3: Add the OpenAI (ChatGPT) Module
Add the OpenAI (ChatGPT) module and select "Create a Completion" or "Create a Chat Completion" depending on which model you are using. GPT-4o and GPT-3.5-turbo both use Chat Completions.
In the prompt field, write your template and map the dynamic variables from the Iterator:
Write a 150-word product description for {{1.product_name}}.
Target audience: {{1.target_audience}}.
Tone: {{1.tone}}.
Include one specific benefit and one clear call to action.
The double-bracket references pull the corresponding column values from each row automatically.
Set your model, max tokens, and temperature. For consistent batch output, keep temperature between 0.3 and 0.7. Higher values introduce more variation, which is useful for social copy but less useful for structured product descriptions. If you are producing SEO-led assets at scale, it also helps to review broader B2B SaaS content marketing agency approaches to standardise briefs and output quality.
Step 4: Write the Output Back to Your Data Source
After the OpenAI module, add a module to write the result back to your sheet or database. For Google Sheets, use "Update a Row" and map the generated content to your output column. For Airtable, use "Update a Record."
Map the OpenAI response field (usually choices[0].message.content) to the correct cell. Also add a timestamp column so you can track when each row was processed.
How to Handle OpenAI Rate Limits in Make.com
Rate limits are the most common failure point in bulk content scenarios. OpenAI enforces limits on both requests per minute (RPM) and tokens per minute (TPM). If your scenario fires requests faster than your tier allows, you will start seeing 429 errors and your scenario will fail mid-run.
Add a Sleep Module Between Requests
The simplest fix is a Sleep module placed directly after the OpenAI module and before the output module. Set it to pause for 1-3 seconds between each iteration. This slows your throughput but keeps you well inside standard rate limits for most OpenAI tiers.
For reference, OpenAI's free tier allows 3 RPM on GPT-4o. Tier 1 (after $5 spend) allows 500 RPM. If you are on Tier 1, a 1-second sleep gives you a comfortable buffer. If you are on the free tier, set the sleep to 20 seconds.
Use Make's Built-In Error Handler for 429 Errors
Add an error handler to your OpenAI module to catch 429 responses without crashing the whole scenario:
- Right-click the OpenAI module
- Select "Add error handler"
- Choose "Resume" as the handler type
- Add another Sleep module inside the error handler set to 60 seconds
- Route the flow back to the OpenAI module to retry the same request
This creates an automatic retry loop. When OpenAI returns a rate limit error, Make waits 60 seconds and tries again rather than failing the entire run and losing your progress.
Break Large Batches into Smaller Runs
If you are processing more than 200 rows in one go, split the job. Use a filter in your data source module to pull rows 1-100 in one scenario run, then rows 101-200 in the next. You can automate this with a counter stored in a Make data store that increments after each run.
How to Structure Your Prompt Template for Consistent Batch Output
Prompt quality matters more at scale because you cannot review each output individually before the next one runs. A vague prompt that produces acceptable results once will produce wildly inconsistent results across 100 rows.
Use explicit output constraints:
Write exactly 3 bullet points. Each bullet must be under 20 words.
Do not include an introduction or conclusion. Start directly with the first bullet.
Specify format requirements:
Return only the finished copy. Do not include explanations, labels, or commentary.
Use role framing to anchor tone:
You are a direct-response copywriter for a B2B SaaS brand.
Write in second person. Avoid jargon.
Testing your prompt against 5-10 representative rows before running the full batch saves significant cleanup time. If the output will support pipeline generation, messaging consistency, or campaign segmentation, it can also be useful to compare your workflow with how specialist B2B SaaS digital marketing agencies operationalise repeatable content systems.
How to Track and Manage Batch Output in Make.com
Use a Status Column in Your Data Source
Add a "Status" column to your input sheet with values like "Pending", "Processing", and "Done". Update it at the start and end of each row's journey through the scenario. This lets you filter for unprocessed rows on the next run and avoids duplicating work if the scenario fails partway through.
Store Outputs in a Separate Sheet or Table
Write generated content to a dedicated output table rather than overwriting your input data. This keeps your source data clean and gives you a full record of every generated piece, including the timestamp and the input values that produced it.
Log Errors to a Separate Sheet
Add a second output path from your error handler that writes failed rows to an error log sheet. Include the row ID, the error message, and the timestamp. After each run, you can reprocess failed rows in isolation without touching the successful ones.
What Is the Difference Between Make.com Bulk Processing and OpenAI's Batch API?
OpenAI's Batch API is a separate product designed for developers who want to submit large volumes of requests via direct API calls and retrieve results asynchronously, often at 50% lower cost. It is built for engineering teams comfortable working with JSON files and API endpoints directly.
Make.com's approach is different. It gives you a visual, no-code interface where you can build the same bulk processing logic without writing API calls manually. You get real-time status visibility, native error handling, and direct integration with tools like Google Sheets, Airtable, Slack, and Notion in the same workflow. For marketing teams, content ops managers, and SaaS founders who want to automate content production without an engineering dependency, Make.com is the faster path to a working pipeline.
The two approaches are not mutually exclusive. If you are generating content at very high volume (tens of thousands of rows), you can use Make to trigger an OpenAI Batch API job and then poll for results when complete. That is a more advanced pattern and worth exploring once your basic pipeline is running reliably.
FAQs
Q: How many rows can Make.com process with OpenAI in a single scenario run? A: Make.com does not impose a hard cap on the number of iterations per scenario run, but your plan's operation limit applies. Each OpenAI call counts as one operation. On Make's Core plan (10,000 operations per month), a single 500-row batch would consume 5% of your monthly allowance. Factor this into your plan selection before running large batches regularly.
Q: What happens if my Make scenario fails halfway through a bulk content run? A: Make logs the point of failure and you can review the execution history to see which bundles completed. If you have a status column in your data source, only rows marked "Done" will be skipped on the next run. Without a status column, you risk reprocessing completed rows and generating duplicates. Always build status tracking into bulk scenarios before running them at scale.
Q: Is Make.com with OpenAI cheaper than using OpenAI's Batch API directly? A: OpenAI's Batch API offers 50% lower token costs compared to standard API pricing, which makes it cheaper at very high volumes. Make.com adds its own operation costs on top of OpenAI's standard API pricing. For runs under a few hundred rows per week, the Make approach is typically more cost-effective when you factor in the time saved on setup and maintenance. For tens of thousands of rows per month, a hybrid approach (Make triggering Batch API jobs) is worth evaluating.
Q: Can I use Make.com to generate images in bulk with OpenAI's DALL-E alongside text? A: Yes. Make's OpenAI module includes a "Create an Image" action that calls DALL-E. You can chain a text completion and an image generation call in the same scenario, using the text output as the image prompt. Each image generation counts as a separate operation and a separate API call, so factor both into your rate limit and cost calculations.
Q: Is this approach right for non-technical SaaS teams? A: Make.com is built for this use case. You do not need to write code to build a working bulk content pipeline. The modules for Google Sheets, OpenAI, and error handling are all point-and-click. SaaS teams that are also thinking about search visibility from generated assets may want to benchmark against specialist B2B SaaS SEO agencies, but the best place to start is still a 10-row test batch to validate your prompt and output format before scaling to your full dataset.
Find a B2B SaaS Expert
We've collected a directory of B2B SaaS experts and agencies that we've reviewed and categorised based on service and specialism for your review.


