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.

Two separate panels

Pages, posts, events, and custom objects live under Tools → Post Migration. SG-Builder templates have their own panel at Templates → Import / Export.

Export is always read-only

Downloading a JSON file never changes your site. Run it as many times as you need, for as many content types as you need.

Import writes rows

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 typeWhere to go
Pages, blog posts, events, custom objectsTools → 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.

Included
What export contains

Title, slug, body, excerpt, author, publish date, status, post type, custom field values, and post metadata.

Excluded
What export leaves out

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.

Pre-change backup

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.

CMS migration

Export from your old CMS, convert to CSV, then import via Tools → Post Migration → Advanced Import with field mapping.

Cross-site content copy

Export pages from one SGEN site, import into another. Use "Match by slug" when post IDs differ between sites.

Template bundle from an agency

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.

Stage-to-production copy

Export from staging, import on production as part of your release process.

What NOT to use this for

Full site backup

Use Dashboard → Migration for that. Import / Export is content rows only.

Image transfers

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.

Version control

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.

Sharing files without review

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

Redirects
Forward old URLs

After migrating pages from another CMS or domain, set up 301/302 rules so old URLs forward to their new SGEN paths.

Media Library
Images do not travel

Images do not travel in the export. Re-upload them and fix the references in each post.

SG-Builder
Where templates land

Imported templates land in Templates → All Templates. Assign one as your site header or footer at Appearance → Appearance Settings.

Migration
Full-site backup

For a full-site backup (media, users, settings, database), use Dashboard → Migration instead of Import / Export.

Before you start

Administrator access

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.

Know which content type

Pages and posts use Tools → Post Migration; SG-Builder templates use Templates → Import / Export. The two panels are separate.

A file ready, for import

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.

A compatible file, for template import

You need a .json file from a prior SGEN template export. Template JSON from other platforms is not compatible.

Large files

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.

Corporate proxy

If your proxy blocks downloads from your admin area, allow-list your SGEN admin URL before starting.

Steps

1
Decide: export or import?

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:

  1. Export from your old CMS and convert to CSV or JSON.
  2. Import to SGEN using the Advanced Import with field mapping.
  3. Review imported content in the admin list; correct any issues.
  4. Publish the content you want live.
  5. Set up redirects from old URLs to new SGEN URLs.
2
Export pages and posts

Navigate to Tools → Post Migration → Export.

Screen
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.

3
Export SG-Builder templates

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.

Screen
Templates → All Templates

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.

4
Import pages and posts — upload the file

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.

Screen
Post Migration → Import

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.

5
Review and confirm the field-mapping table

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.
  • title and slug are required. An import without a title mapping will fail.
  • The body column 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.

Confirmation banner. After you click Import Data, SGEN redirects back with a summary line — for example, "Imported 48 of 50 rows. 48 inserted as Draft, 2 failed." A failure is usually a required field left empty on that row.

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.

6
Import SG-Builder templates

Navigate to Templates → Import / Export → Import.

Click the file input, select your .json template file, then click Import JSON File.

Screen
Templates → Import / Export → Import

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.

7
Verify imported content on the public site

After any import, verify content is live and correct before considering the job done.

For pages and posts:

  1. 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.
  2. Click the title of a spot-checked post to open the edit screen.
  3. Verify the body renders correctly — no garbled characters, no raw CSV artefacts, no broken layout.
  4. Click View in the page actions to preview the post on the public site while it is still a Draft.
  5. If the post looks correct, set Status to Published and save.
  6. After publishing, open the post URL in an incognito window and confirm it loads correctly.
Filter
All

Every row from the import, published and draft combined.

Filter
Published

Rows already set to Published, whether during import or afterward.

Filter
Draft

Newly imported rows on the default status — filter here first to spot-check and publish.

For templates:

  1. Go to Templates → All Templates and confirm the imported templates appear in the list.
  2. Click a template to open it in the Template Editor. Check that the layout components are present and look correct.
  3. 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.
8
Set up redirects if URLs changed

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 src URLs 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

SymptomFix
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.

Heads up. Media files never travel with either export. After any content import, re-upload images to your Media Library and update the references inside each imported post or page.

What to do next