{"id":378167,"date":"2026-10-05T15:00:49","date_gmt":"2026-10-05T15:00:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/rowsprout\/"},"modified":"2026-10-05T15:06:05","modified_gmt":"2026-10-05T15:06:05","slug":"rowsprout","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/rowsprout\/","author":23576732,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.1","stable_tag":"3.1","tested":"7.1.2","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"RowSprout","header_author":"RowSprout","header_description":"Generate SEO landing pages at scale from reusable templates and structured data groups.","assets_banners_color":"7485b3","last_updated":"2026-10-05 15:06:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/rowsprout.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":190,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"3.1":{"tag":"3.1","author":"rowsprout","date":"2026-10-05 15:06:05","revision":3729152}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3729142,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3729142,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3729142,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3729142,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3729142,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"rowsprout\/page-grid":{"name":"rowsprout\/page-grid","title":"Grid"}},"tagged_versions":["3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3729142,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3729142,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3729142,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3729142,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3729142,"resolution":"5","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Every group becomes one page. Fill in its values right below the editor.","2":"Properties are the fields every page has, each with its own placeholder token.","3":"Design the template once in the block editor and place the tokens where the values belong.","4":"The Templates list shows how many pages each template has and whether they are up to date.","5":"A generated page: a real WordPress page with its own URL, title and content."}},"plugin_section":[],"plugin_tags":[31798,76538,1600,131713,213387],"plugin_category":[],"plugin_contributors":[284513],"plugin_business_model":[],"class_list":["post-378167","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk-pages","plugin_tags-elementor","plugin_tags-landing-pages","plugin_tags-page-generator","plugin_tags-programmatic-seo","plugin_contributors-rowsprout","plugin_committers-rowsprout"],"banners":{"banner":"https:\/\/ps.w.org\/rowsprout\/assets\/banner-772x250.png?rev=3729142","banner_2x":"https:\/\/ps.w.org\/rowsprout\/assets\/banner-1544x500.png?rev=3729142","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/rowsprout\/assets\/icon.svg?rev=3729142","icon":"https:\/\/ps.w.org\/rowsprout\/assets\/icon.svg?rev=3729142","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/rowsprout\/assets\/screenshot-1.png?rev=3729142","caption":"Every group becomes one page. Fill in its values right below the editor."},{"src":"https:\/\/ps.w.org\/rowsprout\/assets\/screenshot-2.png?rev=3729142","caption":"Properties are the fields every page has, each with its own placeholder token."},{"src":"https:\/\/ps.w.org\/rowsprout\/assets\/screenshot-3.png?rev=3729142","caption":"Design the template once in the block editor and place the tokens where the values belong."},{"src":"https:\/\/ps.w.org\/rowsprout\/assets\/screenshot-4.png?rev=3729142","caption":"The Templates list shows how many pages each template has and whether they are up to date."},{"src":"https:\/\/ps.w.org\/rowsprout\/assets\/screenshot-5.png?rev=3729142","caption":"A generated page: a real WordPress page with its own URL, title and content."}],"raw_content":"<!--section=description-->\n<p>Many sites need dozens or hundreds of pages that share one layout but differ in the details: a page per service in every city you work in, per product variant, per location, per specialism. Building and maintaining those by hand is slow, and duplicating pages means every later change has to be made again on each copy.<\/p>\n\n<p>RowSprout turns that into one template and one table.<\/p>\n\n<h4>An example<\/h4>\n\n<p>A plumbing company works in 30 towns. With RowSprout it designs one \"Plumber in [town]\" page, adds a row for every town (the town's name, a short introduction, a phone number, a contact email address) and saves. RowSprout creates 30 pages, each with its own title, URL such as <code>\/plumber-amsterdam\/<\/code>, text and details. When the company changes the design or the opening hours later, it changes the template once and every page follows.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li><strong>Build a template.<\/strong> Design the page once in the block editor, Elementor or WPBakery Page Builder, like any other page.<\/li>\n<li><strong>Define its properties.<\/strong> These are the fields every page will have: a title, a URL, a piece of text, a link, an email address and so on. Place them in your design with a widget, a block or a placeholder.<\/li>\n<li><strong>Add your data.<\/strong> Every row (a \"group\") is one page. Type the values in the table right below the editor.<\/li>\n<li><strong>Save.<\/strong> RowSprout generates the pages in the background. They are real WordPress pages with their own URL, title, content and featured image.<\/li>\n<\/ol>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Real pages, not virtual ones.<\/strong> Every generated page is a normal WordPress post with its own permalink, so search engines, caching plugins and your theme treat it like any other page.<\/li>\n<li><strong>Your own URL pattern.<\/strong> Build each page's address from its properties, for example <code>\/plumber-amsterdam\/<\/code>, <code>\/plumber-utrecht\/<\/code> and so on, under the site root or a prefix of your choice. RowSprout warns you before two pages would get the same URL.<\/li>\n<li><strong>Every language and alphabet.<\/strong> Accents, Greek, Cyrillic, Arabic, Hebrew, Chinese, Japanese and emoji are fully supported in your rows, titles, content and URLs. Addresses follow WordPress's own rules: <em>Z\u00fcrich<\/em> becomes <code>\/plumber-zurich\/<\/code>, while other alphabets stay as they are (<code>\/plumber-\u03b1\u03b8\u03ae\u03bd\u03b1\/<\/code>).<\/li>\n<li><strong>Pages stay in sync.<\/strong> Change the design or a row, save, and every page of the template is regenerated from it, so no page is ever out of date.<\/li>\n<li><strong>Status at a glance.<\/strong> The Templates screen shows per template how many of its pages are up to date.<\/li>\n<li><strong>Background generation.<\/strong> Pages are created in a queue (Action Scheduler), so saving a template with hundreds of rows never slows down your admin.<\/li>\n<li><strong>Placeholders anywhere.<\/strong> Use a property in the page title, the URL, the content or a link, and it is replaced per page.<\/li>\n<li><strong>Field types:<\/strong> Title, URL slug, Text, Textarea, URL, Email and Number.<\/li>\n<li><strong>Grid of pages.<\/strong> Show all pages of a template as a list or as cards on any page, for example an overview of every town you serve.<\/li>\n<li><strong>Child templates.<\/strong> Give a template a parent template and it reuses the parent's rows: its pages inherit the title, URL and fields of the matching row, for example a \"Roof repair in [town]\" page for every town that has a \"Roofer in [town]\" page. Templates nest one level deep.<\/li>\n<li><strong>As many templates as you need<\/strong>, managed from the Templates screen.<\/li>\n<\/ul>\n\n<h4>Works with the editor you already use<\/h4>\n\n<ul>\n<li><strong>Block editor:<\/strong> bind a Paragraph, Heading, List item, Button or Image block to a property with Block Bindings, insert placeholders from the text toolbar, and use the Grid block.<\/li>\n<li><strong>Elementor:<\/strong> Heading, Textarea, Button and Grid widgets, an \"Insert RowSprout property\" button in the Text Editor, and a \"RowSprout template\" tab to manage properties and rows without leaving Elementor.<\/li>\n<li><strong>WPBakery Page Builder<\/strong> (including builds bundled with themes): a Grid element and the same insert button in its text editors.<\/li>\n<\/ul>\n\n<h4>Integrations<\/h4>\n\n<ul>\n<li><strong>Rank Math:<\/strong> generated pages get the template's SEO, social and robots settings with each page's own values; the template itself is kept out of the sitemap and set to noindex.<\/li>\n<\/ul>\n\n<h4>RowSprout Pro<\/h4>\n\n<p><a href=\"https:\/\/rowsprout.com\">RowSprout Pro<\/a> is a separate add-on, sold outside WordPress.org, for sites that grow beyond a single set of pages. It adds:<\/p>\n\n<ul>\n<li><strong>Smart Generate:<\/strong> a save only regenerates the pages affected by what you changed, instead of every page of the template.<\/li>\n<li><strong>Planning:<\/strong> choose per row when its page is published.<\/li>\n<li><strong>WPML:<\/strong> translate a template once and all of its pages are generated in that language.<\/li>\n<li><strong>Extra field types:<\/strong> Checkbox, Date, Date and time, Item list, Icon, Thumbnail, Select, Rich text, Color, Phone and File.<\/li>\n<li><strong>Extra Elementor elements:<\/strong> Date, Item List, Thumbnail and Sibling Links widgets, plus RowSprout Page Field and Page Link dynamic tags.<\/li>\n<li><strong>Extra block editor element:<\/strong> an Item List block.<\/li>\n<li><strong>Extra WPBakery element:<\/strong> an Item List element.<\/li>\n<li><strong>Status overview<\/strong> on the Templates screen: a live-updating status bar per template, a per-row overview of every page, and generating all pages of a template in one click.<\/li>\n<li><strong>Throttling<\/strong> of batch size and processing hours on busy sites.<\/li>\n<li><strong>WP-CLI and MCP commands<\/strong> to manage templates and pages from scripts or AI agents.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>The free plugin does not connect to any external service, does not track you and does not load anything from outside your site.<\/p>\n\n<h4>Development<\/h4>\n\n<p>RowSprout is open source. The code, releases and issue tracker are on GitHub: <a href=\"https:\/\/github.com\/RowSprout\/RowSprout\">github.com\/RowSprout\/RowSprout<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin go to Plugins \u2192 Add Plugin, search for \"RowSprout\" and click Install, then Activate. Or upload the <code>rowsprout<\/code> folder to <code>\/wp-content\/plugins\/<\/code> and activate it on the Plugins screen.<\/li>\n<li>Open the new <strong>RowSprout<\/strong> menu and create your first template.<\/li>\n<li>Design the page, add your properties on the Properties tab and your rows on the Groups tab.<\/li>\n<li>Save with <strong>Create &amp; update pages<\/strong>. Your pages usually appear within a minute or two.<\/li>\n<\/ol>\n\n<p>Optional: under RowSprout \u2192 Settings choose whether generated pages live at the site root or under a prefix such as <code>\/locations\/<\/code>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20elementor%3F\"><h3>Do I need Elementor?<\/h3><\/dt>\n<dd><p>No. RowSprout works with the WordPress block editor, Elementor and WPBakery Page Builder. Use whichever you already build your site with.<\/p><\/dd>\n<dt id=\"are%20the%20generated%20pages%20good%20for%20seo%3F\"><h3>Are the generated pages good for SEO?<\/h3><\/dt>\n<dd><p>They are ordinary WordPress pages with their own URL, title, content and featured image, so SEO plugins, sitemaps and caching treat them like any page you made by hand. Make sure every row has genuinely useful, distinct content: search engines value pages that answer a real question, not near-identical copies.<\/p><\/dd>\n<dt id=\"does%20rowsprout%20work%20in%20my%20language%3F\"><h3>Does RowSprout work in my language?<\/h3><\/dt>\n<dd><p>Yes, in every language and alphabet. Accents, Greek, Cyrillic, Arabic, Hebrew, Chinese, Japanese and emoji arrive on your pages exactly as you type them. In URLs, accents are simplified the way WordPress does it (with German and Danish spelling on sites in those languages), and letters of other alphabets stay as they are. More in the documentation: <a href=\"https:\/\/docs.rowsprout.com\/getting-started\/languages\/\">Languages and special characters<\/a>.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20change%20the%20template%3F\"><h3>What happens when I change the template?<\/h3><\/dt>\n<dd><p>Save with \"Create &amp; update pages\" and every page of the template is regenerated with your changes. \"Save template only\" stores your changes without touching the pages yet; they are marked as outdated until you generate them. (RowSprout Pro's Smart Generate only regenerates the pages affected by what you changed.)<\/p><\/dd>\n<dt id=\"can%20i%20edit%20a%20generated%20page%20directly%3F\"><h3>Can I edit a generated page directly?<\/h3><\/dt>\n<dd><p>Generated pages are locked by default, because they are overwritten the next time their template generates them: change the template for everything or the row for one page. If you do want to edit generated pages by hand, unlock them under RowSprout \u2192 Settings, and keep in mind that the next regeneration replaces those edits.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20remove%20a%20row%20or%20the%20template%3F\"><h3>What happens when I remove a row or the template?<\/h3><\/dt>\n<dd><p>Removing a row removes its page. Moving a template to the trash moves its pages to the trash too; restoring the template restores them.<\/p><\/dd>\n<dt id=\"does%20rowsprout%20slow%20down%20my%20site%3F\"><h3>Does RowSprout slow down my site?<\/h3><\/dt>\n<dd><p>No. Pages are generated in the background, and visitors get normal WordPress pages. Nothing is built on the fly when someone opens a page.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20connect%20to%20external%20services%3F\"><h3>Does this plugin connect to external services?<\/h3><\/dt>\n<dd><p>No. The free plugin works entirely on your own site. RowSprout Pro, a separate plugin, contacts RowSprout's license server to activate a license.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<\/ul>","raw_excerpt":"Design one page, fill a table with your data, and RowSprout creates a real WordPress page for every row. Landing pages at scale, no code.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378167"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rowsprout"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378167"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378167"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378167"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378167"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378167"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}