Import and export pages, posts, and templates
SGEN gives you two separate import/export panels: Tools → Post Migration for pages, posts, events, and custom objects, and Templates → Import / Export for SG-Builder templates. Both download a JSON file you can archive, transfer to another SGEN site, or restore. Export is always read-only. Import writes rows: matching records are updated, new records are inserted. Media files do not travel in the export — re-upload images separately after migration.
Pages, posts, events, and custom objects live under Tools → Post Migration. SG-Builder templates have their own panel at Templates → Import / Export.
Downloading a JSON file never changes your site. Run it as many times as you need, for as many content types as you need.
Matching records are updated; everything else is inserted as new. Use Draft status on the first pass so you can review before publishing.
Which panel to use
The two panels are separate and cover different content.
| Content type | Where to go |
|---|---|
| Pages, blog posts, events, custom objects | Tools → Post Migration |
| SG-Builder templates (header, footer, page layouts) | Templates → Import / Export |
For a full-site backup — including media files, user accounts, settings, and the database — use Dashboard → Migration instead. Import / Export covers content rows only.
Where to go
Three destinations cover the whole workflow.
- Pages, posts, and events: Tools → Post Migration, then the Export or Import tab.
- SG-Builder templates: Templates → Import / Export, or use the row-action Export on any single template under Templates → All Templates.
- After an import: review under Blog → All Posts, Pages → All Pages, or Templates → All Templates.
What export does and does not include
Export reads your current content and downloads a JSON file. It is read-only — nothing on your site changes, and you can run it as many times as you need.
Title, slug, body, excerpt, author, publish date, status, post type, custom field values, and post metadata.
Images and media files, user accounts, site settings, redirects, custom CSS, and templates (templates have their own panel).
What import does
Import uploads a JSON or CSV file and writes rows into your site. Pages and posts that match an existing record (by ID, title, or slug — your choice) are updated. Rows with no match are inserted as new. Import is always a write operation — use Draft status on the first pass so you can review before publishing.
When to use it
Five recurring situations cover almost every use case.
Before switching your active header/footer templates or running a bulk edit, export all pages as JSON. If anything goes wrong, you have a complete snapshot to reimport.
Export from your old CMS, convert to CSV, then import via Tools → Post Migration → Advanced Import with field mapping.
Export pages from one SGEN site, import into another. Use "Match by slug" when post IDs differ between sites.
Your agency exports its SG-Builder templates from its development site and sends you the JSON. You import it under Templates → Import / Export and the templates appear immediately.
Export from staging, import on production as part of your release process.
What NOT to use this for
Use Dashboard → Migration for that. Import / Export is content rows only.
Images referenced in post bodies still point at your old domain after import. Re-upload them to SGEN Media and update the references inside each post.
There is no diff preview before import, no rollback after, and no history log. Duplicate a page or post before editing if you need a backup draft.
The export includes all post metadata, draft content, custom field values, and author display names. Review before sending to a contractor or third party.
How this connects to other features
After migrating pages from another CMS or domain, set up 301/302 rules so old URLs forward to their new SGEN paths.
Images do not travel in the export. Re-upload them and fix the references in each post.
Imported templates land in Templates → All Templates. Assign one as your site header or footer at Appearance → Appearance Settings.
For a full-site backup (media, users, settings, database), use Dashboard → Migration instead of Import / Export.
Before you start
Any admin on your site can run a full export or import — there is no per-role restriction. Contact SGEN support if you need to restrict access.
Pages and posts use Tools → Post Migration; SG-Builder templates use Templates → Import / Export. The two panels are separate.
JSON from a prior SGEN export works without changes. CSV files must have a header row as row 1 — SGEN reads column names from that row and auto-suggests field matches.
You need a .json file from a prior SGEN template export. Template JSON from other platforms is not compatible.
If your file is over 5 MB, confirm your hosting plan's upload limit first. A 50-post text-only export is usually under 1 MB. Strip pasted inline images from the body column before exporting if file size is a concern.
If your proxy blocks downloads from your admin area, allow-list your SGEN admin URL before starting.
Steps
Start with export if you are backing up existing content or moving it to another site. Start with import if you already have a file — from a prior SGEN export or another CMS.
For a full CMS migration, the typical sequence is:
- Export from your old CMS and convert to CSV or JSON.
- Import to SGEN using the Advanced Import with field mapping.
- Review imported content in the admin list; correct any issues.
- Publish the content you want live.
- Set up redirects from old URLs to new SGEN URLs.
Navigate to Tools → Post Migration → Export.
The export form lists a radio choice for what to include — All Content, Pages only, Blog posts only, or Events only, with counts specific to your site — plus a File format field locked to JSON, the only export format. Click Export Selected Content to download; nothing on your site changes.
Click Export Selected Content. Your browser downloads Export Pages.json immediately — no confirmation screen appears. Save the file somewhere accessible. If you are making a pre-change backup, name it with a date and context: yoursite-pages-backup-2026-05-05.json.
Navigate to Templates → Import / Export → Export.
To export all templates at once, click Download JSON File. The browser downloads templates-YYYY-MM-DD.json.
To export a single template, go to Templates → All Templates, find the template row, open the row-action menu (..), and click Export. The download starts immediately.
Every template on your site — headers, footers, the mobile menu, and page layouts — appears here with its status (Published or Draft) and when it was last modified. Open the row-action menu on any row and choose Export to download that one template as JSON immediately.
The exported JSON contains all template content and metadata. Download it before making any changes to existing templates — it is your restore point if a template edit goes wrong.
Navigate to Tools → Post Migration → Import.
The import runs in two stages: file upload, then field mapping. No posts are created until you complete both stages and click Import Data.
Upload a .csv or .json file, then set three options: Assign post type (Blog Post, Page, or Event — applied to every imported row), Assign post status (Draft is the recommended default so you can review before publishing), and Match existing records by (ID, Title, or Slug — ID is safest for SGEN-to-SGEN transfers, Slug is safest when post IDs differ between sites). Click Upload and preview to move to field mapping — no posts are created at this stage.
Click Upload and preview. SGEN parses the file and loads the field-mapping step. No posts are created yet.
After uploading, SGEN shows the field-mapping panel. Each row is a target SGEN field (title, slug, body, excerpt, post type, status, and so on). A dropdown lets you pick which column from your uploaded file maps to each field.
SGEN auto-detects the most likely match from your column names. If your CSV uses standard names (title, slug, body, excerpt, category, author, date, status), the auto-detection is usually correct. If your columns differ — for example post_title instead of title — check each dropdown and correct any mismatches.
Column-mapping rules:
- Set any column SGEN does not use to (skip) — it is ignored.
titleandslugare required. An import without a title mapping will fail.- The
bodycolumn expects raw HTML. If your old CMS exported Markdown or plain text, convert to HTML first — or import as-is and edit in the post editor afterward. - If you accidentally map the same source column to two target fields, only the last mapping is used.
Illustrative CSV structure — confirm your own column names against the field-mapping dropdowns before import:
title,slug,body,excerpt,author,date,status
"Getting started with your new site","getting-started","<p>Full post body as HTML…</p>","Short summary text","your-name","2026-01-15","draft"Click Import Data. SGEN runs the import and redirects back with a confirmation banner.
The banner shows three counts:
- Inserted — new posts created (rows that did not match any existing record).
- Updated — existing posts overwritten (rows that matched an existing record).
- Failed — rows that could not be written (required field empty or malformed data).
If the Failed count is non-zero, correct those rows in your source file and re-import. Use "Match by slug" on the second run so rows that already succeeded are updated rather than duplicated.
Navigate to Templates → Import / Export → Import.
Click the file input, select your .json template file, then click Import JSON File.
Select your .json template file and click Import JSON File. Every template in the file is upserted: templates with a matching title are overwritten without a preview, and new ones are inserted. Images referenced inside template content are not bundled — they must already exist in your Media Library.
SGEN upserts the template rows: matching titles are updated, new templates are inserted. After the redirect, a banner shows Updated / Inserted / Failed counts.
After any import, verify content is live and correct before considering the job done.
For pages and posts:
- Go to Blog → All Posts (or Pages → All Pages) and filter by Draft. Newly imported content lands as Draft unless you set status to Published during import.
- Click the title of a spot-checked post to open the edit screen.
- Verify the body renders correctly — no garbled characters, no raw CSV artefacts, no broken layout.
- Click View in the page actions to preview the post on the public site while it is still a Draft.
- If the post looks correct, set Status to Published and save.
- After publishing, open the post URL in an incognito window and confirm it loads correctly.
Every row from the import, published and draft combined.
Rows already set to Published, whether during import or afterward.
Newly imported rows on the default status — filter here first to spot-check and publish.
For templates:
- Go to Templates → All Templates and confirm the imported templates appear in the list.
- Click a template to open it in the Template Editor. Check that the layout components are present and look correct.
- If an imported template is meant to replace your site header or footer, assign it at Appearance → Appearance Settings. Open any public page in an incognito window to confirm the new template renders correctly.
If you imported pages or posts from a different CMS or domain, set up redirect rules at Redirects → All Redirects to forward old paths to their new SGEN locations.
For a large set of pages, use the bulk redirect import — prepare a CSV with old paths in the target column and new SGEN paths in the destination column, import it at Redirects → Import/Export, and set type to 301 for permanent redirects (old site going offline) or 302 for temporary (both sites still live).
For under 10 pages, add redirect rules manually at Redirects → Add New.
Full detail: see Manage site redirects — bulk CSV format, 301 vs 302 choice, and how to verify rules are firing using the Hits counter.
What success looks like
- All imported pages or posts appear in the relevant admin list (Blog → All Posts, Pages → All Pages, or Templates → All Templates) with correct titles, statuses, and dates.
- The import banner reported a non-zero Inserted or Updated count, and Failed is 0 (or any failures are known row-level data issues you plan to fix).
- Opening each spot-checked page on the public site shows the correct body — no garbled characters, no raw HTML visible as text, no broken layout.
- Images in post bodies load correctly. If they do not, the
srcURLs still point at your old CMS domain — re-upload those images to SGEN Media and update the references inside each affected post. - Redirect rules (if set up) are Active in Redirects → All Redirects and the Hits counter is climbing after the first 24 hours of live traffic.
- Imported templates open correctly in the Template Editor. If assigned as site chrome, they render correctly on all public pages in an incognito window.
What to do if it does not work
| Symptom | Fix |
|---|---|
| The Export button does nothing or no file downloads. | Check that your browser is not blocking downloads from your SGEN admin URL. Some corporate proxies intercept downloads from admin paths. Try in a private/incognito window. If the download still does not start, check the browser's download manager for a blocked or failed entry, and allow-list your SGEN admin URL in your proxy settings. |
| The import screen says "Invalid file format." | For JSON: the file is not valid JSON — open it in a plain text editor; if it does not start with [ or {, the file is corrupted or saved in the wrong format. For CSV: the file is not valid CSV, or row 1 is a post row instead of a header row — confirm row 1 contains comma-separated column names only. |
| Import completes but "Imported 0" is reported. | The file uploaded but the parser read no rows. Common causes: the header row is missing, the file was saved with the wrong encoding (UTF-16 instead of UTF-8), or the column separator is a semicolon instead of a comma. Open the file in a plain text editor to verify the separator and encoding, then re-upload. |
| Accented characters appear garbled after import. | The CSV was saved with the wrong encoding. Re-open in your spreadsheet tool, choose Save As → UTF-8 (not UTF-8 BOM, not Windows-1252), and re-import. |
| Some rows show "Failed" in the result count. | The banner shows a Failed count but does not list the specific failed rows. Go to the relevant list view and sort by date added — rows that failed will be absent. Cross-reference your source file by title to identify the missing rows, correct the data, and re-import using "Match by slug" so rows that already succeeded are updated rather than duplicated. |
| Imported post bodies show raw HTML tags visible on the public page. | The body column in your CSV was HTML-encoded — angle brackets were saved as text entities instead of literal tags. The importer expects raw HTML in the body cell. Update the affected rows to use real heading and paragraph tags instead of their encoded form, and re-import. |
| Imported templates appear blank or broken in the Template Editor. | The template JSON may be from an incompatible SGEN version, or the content key was empty. Open the JSON file in a plain text editor and check that each template's content field is a non-empty string. If it is empty, the bulk export had a known issue with some versions — single-template exports via the row-action Export are more reliable. Ask your agency to re-export each template individually using the row-action Export button, then re-import. |
| The page redirected to the login screen during export or import. | Your admin session expired. Log back in, navigate back to the relevant panel, and run the operation again. The import processes on the server — logging back in after a timeout does not interrupt or roll back a running import that has already started. |
Examples
Example 1: Migrate 50 blog posts from another CMS. Your site is shutting down its old blog and moving every post to SGEN. Export from the old CMS, which produces an export file. Open the file in Google Sheets using a free converter, add the nine SGEN column headers to row 1, clean up the body column by stripping any leftover shortcodes and replacing pasted inline images with placeholder text, and save as UTF-8 CSV.
Navigate to Tools → Post Migration → Import, upload the CSV, set Assign post type to Blog Post and Assign status to Draft, and click Upload and preview. SGEN auto-detects the column names and pre-fills the field-mapping dropdowns. Review the mapping — one column called content may need to be changed from excerpt to body — then click Import Data. Spot-check five posts via the Draft preview link, then bulk-publish from Blog → All Posts → Draft → Publish. Bulk-import your redirect rules and monitor the Hits counter for 48 hours before decommissioning the old site.
Example 2: Export all pages before a risky theme switch. Before switching your active header and footer templates to a new agency design, navigate to Tools → Post Migration → Export, leave All Content selected, and click Export Selected Content. The browser downloads Export Pages.json in seconds. Rename it with a date — for example yoursite-backup-pre-agency-launch-2026-05-05.json — and save it to your shared drive. Proceed with the template switch. If any page's content is wiped or corrupted, reimport the JSON backup to restore the exact pre-switch state.
Example 3: Import a template bundle from a partner agency. Your design agency exports three SG-Builder templates from its development site via Templates → Import / Export → Export and sends you the JSON. Log in to your SGEN admin, navigate to Templates → Import / Export → Import, select the file, and click Import JSON File. After the page reloads, a banner confirms the import — for example, "Imported 3 templates. 3 Inserted, 0 Updated, 0 Failed." Open Templates → All Templates, confirm the three templates appear, check each in the Template Editor, then assign the header and footer at Appearance → Appearance Settings.
