Comparison

LPagery vs PageForge

Both plugins turn a CSV into hundreds of WordPress pages. PageForge is the younger product, first published in February 2026, and its headline feature is an MCP server that lets ChatGPT and Claude work with your site. LPagery is built around a spreadsheet you keep editing. We bought a PageForge Starter licence, ran a 320-row file through it five times, and read both codebases.

Quick verdict

LPagery keeps pages in step with your data. Rows sync from Google Sheets on a schedule, changed rows update their pages, removed rows can delete them, and any existing page can be the template. PageForge writes a page once: a corrected row either bounces as a duplicate or creates a second page. What PageForge adds sits around the generated pages: an MCP server with 24 tools, its own JSON-LD schema, a preflight validator and a scheduler that releases a set number of pages per day.

Pick LPagery if

  • Your data lives in an XLSX file or a Google Sheet and changes over time
  • You want to reuse an existing page, with its builder layout and SEO fields, as the template
  • You expect to correct a value later and have the live page follow
  • You want AI text and images per row without setting up API keys
  • You use Bricks, Breakdance, Brizy, SeedProd or another builder outside Elementor and Divi

Pick PageForge if

  • You want ChatGPT or Claude to read and change your site through an MCP server
  • You want JSON-LD schema and meta tags without an SEO plugin
  • You want new pages released a few per day
  • You already pay an AI provider and want to use your own key

At a glance

At a glance
FeatureLPageryPageForge
Use any existing page as the templateYesPartly
XLSX uploadYesNot found
Google Sheets re-synced on a scheduleYesNot found
Changed rows update their pagesYesNot found
Template changes reach every page without a re-runYesNot found
AI credits included with the licenceYesNot found
SpintaxYesNot found
MCP server for ChatGPT and ClaudeNot foundYes
Yes
Verified in the version we tested
Partly
Works with a limitation, explained in the text above the table
Not found
Not found in the version we tested
Not checked
Not checked

Feature by feature

1.Data input

Both plugins read a CSV with a header row and turn each column into a placeholder. LPagery reads CSV and XLSX in your browser and shows the columns before anything is saved. PageForge uploads the CSV into the media library first, also accepts TXT and TSV, and detects the delimiter from the first line, so a semicolon-separated export from Excel works without conversion. XLSX was not found in PageForge 1.2.4 or 1.1.3; only CSV, TXT and TSV files are accepted.

Google Sheets is where the two differ most. LPagery takes a public sheet link and re-reads it on a schedule, covered in the next section. PageForge's Google Sheets source is in the premium code for the Professional and Enterprise tiers and is refused on Starter, the tier we bought, so we could not verify it working. We also found no radius source: LPagery can build pages for the cities around a location, PageForge has no built-in city data.

Data input
FeatureLPageryPageForge
CSV uploadYesYes
XLSX uploadYesNot found
TXT and TSV uploadNot foundYes
Google Sheets by linkYesNot checked
Cities around a location, by radiusYesNot found
File read in the browser, no media library uploadYesNot found
Delimiter detected from the fileNot checkedYes
Export a page set back to XLSXYesNot checked

2.Google Sheets sync

LPagery runs a scheduled sync, hourly by default and up to weekly. Each run downloads the sheet, creates pages for new rows, updates pages whose row changed, skips rows that did not change, and deletes pages for removed rows when you turn that option on. A failed row is retried and a failed download marks the set with the error. Google Sheets sync is part of LPagery's Extended plan.

PageForge reads a sheet once, at the moment you press Generate, through a Google API key from Settings or the public CSV export as fallback. We found no cron hook, timestamp or option that refers to a sheet afterwards, so a changed cell never reaches a live page, and a row you delete leaves its page published. A failed read shows one message for every cause, from an empty sheet to a wrong key. Pressing Generate again creates pages for rows that are new; what happens to rows that changed is covered under Updates and re-sync.

Google Sheets sync
FeatureLPageryPageForge
Scheduled sync without a manual runYesNot found
Sync now button on the setYesNot found
New rows create pagesYesPartly
Changed rows update their pagesYesNot found
Removed rows can delete their pagesYesNot found
No Google API key or sign-in neededYesYes
Failed rows retried, failure shown on the setYesNot found

3.Template source

In LPagery the template is any page, post or custom post type you already have. You add placeholders to it and pick it in the dashboard. Every custom field on that page is copied with placeholders replaced, so builders that store their layout in post meta work through that generic path, and eleven builders have their own adapter on top. Live Mode supports Elementor and Gutenberg templates.

PageForge's template is its own private post type, created inside the plugin, with a title pattern, a slug pattern and a meta description pattern. An existing page can be attached as a Base Layout: its content replaces the template content, and a fixed list of fifteen Elementor and Divi fields is cloned with placeholders replaced. Bricks, Breakdance, Oxygen, Brizy, SeedProd and Divi 5 fields are in neither build's list, so a layout from those builders is not copied. The target post type dropdown offers PageForge's own type, page or post.

Template source
FeatureLPageryPageForge
Any existing page or post as the templateYesPartly
Any custom post type as outputYesPartly
Every custom field copied with placeholders replacedYesPartly
Elementor and Divi layouts copiedYesYes
Bricks, Breakdance, Brizy, SeedProd and other builder layouts copiedYesNot found
Template rendered live for Elementor and GutenbergPartlyNot found
Placeholders from Multiple Pages Generator importedYesNot found

4.Generation model

Both plugins write real WordPress pages and store the row on each page. LPagery calls this Classic Mode. LPagery also has Live Mode, where each page is a small stub and the content is rendered from the template when someone opens the page, so a template change shows on every live page as soon as you save it. You can switch a page or a whole set between the two modes.

PageForge writes physical pages only, in its own public post type by default. On top of the stored content it runs a second placeholder pass when the page is viewed, so a {City} that survived inside builder JSON still resolves on the front end. LPagery does the same in Live Mode, where substitution runs over the finished HTML; a Classic page keeps what was stored at generation.

Generation model
FeatureLPageryPageForge
Real WordPress pages you can edit and deleteYesYes
Pages rendered from the template on request (Live Mode)YesNot found
Switch a page between real and liveYesNot found
Row data stored on each pageYesYes
Template edits reach every page without a re-runYesNot found
Leftover placeholders resolved when the page is viewedPartlyYes
Image files served under per-page names without copiesYesNot found

5.Background processing

LPagery puts the rows in a queue on your server. A worker drains the queue, and each page is generated in its own request, so the PHP time limit applies to one page and never to the whole run. Failed rows are retried with a pause between attempts, progress shows under Manage, and a run with no progress for ten minutes is shown as stalled so you know WP-Cron is not running.

PageForge has two modes. Instant runs every row in one request. In our test that wrote 320 pages in 25 seconds at the default time limit, and it kept going after we closed the tab. At a 2-second limit the request died at 144 of 320 pages, the other 176 rows were lost, and the screen stayed at Starting generation with no way to resume. Queue mode is a drip publisher: WP-Cron drains the queue at seven fixed times a day, 10 pages per day by default, and a raised limit moves the work back into one cron request bounded by the same PHP limit. Neither mode shows progress during the run; the campaigns table refreshes every 15 seconds and shows counts afterwards.

One thing to know before choosing Queue mode: pages created by PageForge's cron scheduler carry no SEO fields. The SEO writer checks for an editing user, a cron request has none, and the error is discarded. A page we generated that way had no meta title, description, canonical or Open Graph tags; the same row generated from the browser had all of them. The daily ceiling itself is a real feature for a site that wants to release pages gradually, and LPagery has nothing like it.

Background processing
FeatureLPageryPageForge
Run finishes after the browser tab closesYesYes
Each page in its own request, so the PHP time limit covers one pageYesNot found
Interrupted run picks up where it stoppedYesNot found
Queue on your server with a background workerYesPartly
Failed rows retried automaticallyYesPartly
Progress shown while the run is goingYesNot found
Stalled run detected and shownYesNot found
Cancel a running jobYesYes
SEO fields written on background runsYesNot found
Pages released a set number per dayNot foundYes

6.Updates and re-sync

When you upload a changed file, LPagery lets you create, ignore or update existing pages. A page is updated only when its row or its settings changed. If someone edited a generated page by hand, LPagery notices that from the save and leaves the page alone unless you choose to overwrite manual changes. A set can be pointed at a different template, and removed rows can delete their pages.

PageForge has no update run. Before creating a page it looks for an existing one by a fingerprint of the row, then by slug. We tested three cases against a live page. The identical row came back as already live. The same row with one added column was refused as a duplicate, content untouched. A changed value that changed the slug created a second page and left the first one in place. So a corrected spreadsheet value never updates a live page, and template edits stay on the template: nothing re-renders existing pages when it is saved. The only field PageForge changes on an existing page is the status, from draft to published.

Updates and re-sync
FeatureLPageryPageForge
Create, ignore or update existing pages per runYesNot found
Changed rows update their pagesYesNot found
Unchanged rows skipped automaticallyYesYes
Hand edits detected and kept without setupYesNot found
Template edits reach existing pagesYesNot found
Removed rows can delete their pagesYesNot found
Point a page set at a different templateYesNot checked
Duplicate slugs found before creationYesYes

7.Scale and limits

Neither paid plan caps the number of pages; we found no cap in PageForge's code either. LPagery's worker takes 1,000 rows per tick by default, and a large upload is split into parts so a small upload limit on the host does not block it. PageForge's ceilings are the ones from the previous section: one PHP request in Instant mode and the daily limit in Queue mode. Its queue is stored as a single autoloaded option, 140 KB for 320 rows in our test, which WordPress loads on every request and PageForge rewrites after every processed row. LPagery keeps its queue in its own table.

Scale and limits
FeatureLPageryPageForge
No page cap on paid plansYesYes
Rows per pass configurableYesYes
No daily limit on pages generatedYesNot found
Large files split into parts for the uploadYesNot checked
Queue kept in its own database tableYesNot found

8.SEO surface

Both plugins replace placeholders in the title, slug and content, and both fill the fields of Yoast SEO, Rank Math, All in One SEO and SEOPress. LPagery does this by copying every custom field of the template page, so the SEO plugin's own metabox on the template is the SEO UI. All in One SEO gets its own handler because it stores data in its own table. PageForge has a dedicated adapter for the same four plugins that writes title, description, focus keyword, canonical, Open Graph, Twitter and robots fields, and it writes to every SEO plugin it detects at once.

PageForge also covers a site without an SEO plugin. It emits its own meta description, Open Graph and Twitter tags and filters the canonical URL. It also adds a JSON-LD graph on every single post and page of the site, with a LocalBusiness node, a WebPage node and a Service node with the area served. LPagery emits no tags or schema of its own and leaves that to the theme or SEO plugin. Images go the other way: LPagery gives each image column a per-page filename and alt text; PageForge's only image path is a Pexels stock photo, with no filename or alt substitution from your data. Both sets of pages appear in the core and SEO plugin sitemaps. In Live Mode, LPagery updates the modified date on every page when you save the template.

SEO surface
FeatureLPageryPageForge
Placeholders in title, slug, excerpt and contentYesYes
Placeholders in every custom fieldYesPartly
Yoast SEO fields filled from the templateYesYes
Rank Math fields filled from the templateYesYes
All in One SEO fields filled from the templateYesYes
SEOPress fields filled from the templateYesYes
Every detected SEO plugin filled at onceNot checkedYes
Own meta description, Open Graph and Twitter tags without an SEO pluginNot foundYes
JSON-LD schema on generated pagesNot foundYes
Per-page image filename and alt textYesNot found
Pages appear in core and SEO plugin sitemapsYesYes
Sitemap modified date updated when the template changesYesNot found

9.Content tools

PageForge's template language is one replacement pass: {City} or {city} is swapped for the cell value, and that is all. We found no spintax, no nested placeholders and no conditional blocks in either build. Column values do not set taxonomy terms, author or parent; generated posts have no terms and default authorship. What PageForge has instead is a preflight validator that reports unresolved variables, duplicate slugs and empty rows. A sitemap shortcode lists up to 5,000 generated pages grouped by city, state or service, and an AI option asks the model to pick three to six internal links from the thirty most recent posts.

LPagery has spintax with nesting and a seed per page, so the chosen variant stays the same when the page is updated. Placeholders can be nested, so a cell can contain another placeholder. Columns can set the author, parent page, status and taxonomy terms of each page, and image columns copy, download or reference an image per row. Views build a styled list or grid of related pages on each page, ordered by name, date or a column of your choice. Conditional blocks are missing in LPagery too: if a sentence should only appear for some rows, you put it in its own column and leave the cell empty for the others.

The validator deserves a closer look. In our walkthrough PageForge generated from a CSV whose headers matched none of the template placeholders, reported one page done with zero issues, and published a page titled {Service} in {City}, {State}. LPagery stops the same upload with a message that names the template, links to it and suggests a placeholder to add.

Content tools
FeatureLPageryPageForge
SpintaxYesNot found
Spintax variant kept stable across updatesYesNot found
Nested placeholdersYesNot found
Conditional content in the templateNot foundNot found
Image per row from a columnYesNot found
Related pages list or grid on each pageYesPartly
Internal links chosen by the AI modelNot foundYes
Taxonomy terms from column valuesYesNot found
Author, parent and status from column valuesYesNot found
Upload stopped when headers match no placeholderYesNot found

10.AI content

LPagery generates AI text and images per row in the LPagery app and pushes the finished page set into the plugin. You pick the text model per website from six options across OpenAI and Google. Image prompts carry style, format, mood and your brand colours, and text prompts exist in more than twenty languages, picked from your website's country. Every paid licence gets a monthly credit top-up, so there is no API key to set up.

PageForge connects to OpenAI, Anthropic, Google Gemini and DeepSeek with your own keys, and on the premium build to any OpenAI-compatible endpoint. Per-page text comes from a checkbox on the template that asks the provider for an SEO content block of roughly 700 to 2,200 words plus a meta description, and an {AI:Article} token inserts a longer article. There is no AI image generation: {AI:Image} fetches a Pexels stock photo matching the service and city. Prompts are written in English, with a free-text brand context box appended. Beyond bulk generation, PageForge ships an AI site planner, a blog generator and an SEO report, all on your own key.

AI content
FeatureLPageryPageForge
AI text per rowYesYes
AI images per rowYesNot found
Stock photo per page from PexelsNot foundYes
Credits included with the licenceYesNot found
Bring your own API keyNot foundYes
Choice of AI modelYesYes
Brand colours and image style per promptYesNot found
Prompts in the language of your siteYesNot found
AI site planner, blog generator and SEO reportNot foundYes

11.Quality signals

Figures from the WordPress.org plugin directory on the verification date. PageForge's free listing is seven months old and its paid builds are sold through Freemius, so the install count covers the free build only. LPagery's listing is four years old. Both hold a five-star rating, from three ratings and from 31.

Quality signals
FeatureLPageryPageForge
Active installs (free listing)3,000+60
Rating5.0 (31 ratings)5.0 (3 ratings)
Last updated2026-07-172026-08-20
Tested up toWordPress 7.0.4WordPress 7.1
First published2022-08-172026-02-14

12.What only one of them has

Only PageForge has an MCP server. The plugin exposes a Model Context Protocol endpoint with OAuth 2.1 sign-in for ChatGPT and Claude, scoped access tokens, rate limits and a Connections screen. Seventeen tools read the site: templates, pages, previews, SEO audits, image alt audits and diagnostics. Seven premium tools write: update SEO fields, bulk-optimise them, fix image alt text, and create, list or cancel campaigns, each behind a preview and confirm step with an audit log. LPagery has no MCP server; its REST API is used by the LPagery app.

PageForge also has its own JSON-LD graph and meta tags, the runtime placeholder pass, the preflight validator, delimiter detection, the daily release scheduler, and an Inject HTML screen for analytics and verification tags.

Only LPagery has two render modes with conversion in both directions, Virtual Image URLs that serve one image file under a different name per page, and scheduled Google Sheets sync with add, change and delete handling. Only LPagery has manual-edit detection, a stall check for dead WP-Cron, Views for related-page grids, and an import path for placeholders written for the Multiple Pages Generator plugin. If your workflow is an AI assistant that audits and edits a finished site, the MCP server matters. If your workflow is a spreadsheet that keeps changing, the sync and update path matters more.

13.Time to first page

We walked both admin screens with the same five-row file and counted what a new user has to learn and click before the first page is live. PageForge has the shortest path we measured: upload the CSV on Data Sources, then pick template, source and mode on Generate and press Start. Six clicks on two screens, and the only competitor run that finished on the first attempt. It needs five concepts (data source, template, title and slug pattern, placeholder, mode) and four settings that must be filled.

LPagery needs three concepts (template page, placeholder, source file) and one required setting, the template. The first page was live after six clicks on three screens for a returning user; the first-run wizard takes nine clicks over six screens. The extra screen is the review step: LPagery shows you colliding slugs and unresolved placeholders before it creates anything, which is the check that PageForge's two-screen path skips.

Time to first page
FeatureLPageryPageForge
Clicks to the first page66
Screens visited32
Concepts to learn first35
Settings that must be filled14

Where PageForge is the better fit

PageForge is the right choice when an AI assistant is part of how you run the site. Its MCP server lets ChatGPT or Claude list templates and pages, audit SEO fields and image alt text, preview a generation and, on the premium build, apply changes after a confirm step. Nothing in LPagery does that.

It also fits a site without an SEO plugin that still wants meta tags and JSON-LD schema on every page. It fits a site that wants new pages released a few per day, and a team that already pays an AI provider and prefers its own key, including a self-hosted OpenAI-compatible endpoint.

The trade-off is everything after the first run. PageForge writes a page once; a corrected value bounces or forks, a template edit stays on the template, and a deleted row leaves its page live. Data comes in as CSV, with XLSX not found and Google Sheets on the two higher tiers. If your spreadsheet keeps changing and you expect the pages to follow, LPagery is built for that.

Free tier notes

The verdicts above compare the paid tiers. These notes are about the free versions and did not count towards any verdict.

  • LPagery's free plan caps a run at 100 pages and three placeholder columns on new installs. It accepts CSV and XLSX uploads.
  • PageForge's free build caps a run at 100 rows and runs in Instant mode only; there is no queue. It has no lifetime page cap, and you can re-run as often as you like.
  • PageForge's free build ships every AI tool on your own key with no plan check, plus the 17 read-only MCP tools. Per-page AI in bulk generation and the 7 write tools are premium.

How we verified this

Every claim on this page comes from the plugin code, the vendor documentation, or a run on a local WordPress install. We wrote down where we looked for anything we could not find, and the verified facts are kept in one place so this page can be updated when either product changes.

LPagery version
3.0
PageForge version
Premium 1.1.3 on the Starter tier and Free 1.2.4
Verified on
2026-09-05
Licence
PageForge Starter licence bought and activated. Professional and Enterprise features are described from the plugin code and were not run.
Test run
Five 320-row runs on WordPress 7.0 and PHP 8: instant mode at three PHP time limits, queue mode, and a browser-close test

Questions people ask before choosing

Is PageForge better than LPagery?

It depends on what changes after the first run. PageForge has the MCP server, its own schema and a drip scheduler. LPagery keeps pages in step with a changing spreadsheet, updates existing pages, finishes large runs in the background and needs less setup. Most agencies and local businesses we talk to are in the second group.

Can I move from PageForge to LPagery?

Your generated pages are normal WordPress posts and stay where they are. To move a set to LPagery you take the CSV you generated from, paste the template content into a page, and generate a new set. PageForge placeholders use the same braces, and LPagery matches them without regard to case, so {City} keeps working. LPagery does not read PageForge templates or campaigns.

Does LPagery work with Elementor and Divi?

Yes. Classic Mode has adapters for Divi, Elementor, Bricks, Breakdance, Brizy, Visual Composer, BeBuilder, SeedProd and Colibri, and copies the custom fields of any other builder. Live Mode supports Elementor and Gutenberg templates.

Which plan do I need for Google Sheets?

In LPagery, Google Sheets sync is part of the Extended plan. In PageForge it is in the premium code for Professional and Enterprise; on the Starter licence we bought it was refused, so we could not test it.

Can I connect LPagery to ChatGPT or Claude?

LPagery 3.0 has no MCP server. Its REST API is used by the LPagery app to push AI-generated page sets into the plugin. PageForge exposes an MCP server with OAuth sign-in for both assistants.

How much does LPagery cost?

Plans are listed on the pricing page, and there is a free version on WordPress.org. Every plan includes AI credits, so you do not need your own API key.