Importing Pages
The Pages import creates and updates your store's Online Store pages (About, Contact, FAQ, policy pages, …) from a CSV/Excel file, a Google Sheet, or directly from another connected store. Rows are matched by handle, so running the same file twice updates the same pages instead of creating duplicates.
For the wizard itself — uploading, mapping, dry runs, schedules — see Importing into EcomSolo.
Columns
| Column | Notes |
|---|---|
| Handle | The page's URL handle — the identity used to match and create pages. Required. |
| Title | The page title. Required when creating a new page (Shopify won't create a page without one); optional on updates. |
| Body (HTML) | The page content, with HTML markup. |
| Published | true / false (also accepts yes/no). Controls whether the page is visible. Leave blank to keep the current state on an update. |
| Template suffix | The theme template to render with (e.g. contact); blank uses the default page template. |
How pages are matched
Every row is matched to an existing page by handle in the target store. What happens on a match depends on the operation you pick for the run:
| Operation | On an existing page | On a new handle |
|---|---|---|
| Upsert (default) | Updates it | Creates it (Title required) |
| Create | Fails the row | Creates it (Title required) |
| Update | Updates it | Fails the row |
| Merge | Updates it | Fails the row |
| Delete | Deletes it | Skips the row |
On an update, only the columns you provide change — blank cells leave the existing value alone. The dry run shows the create / update / delete split before anything is written.
Deleting pages
Choose the Delete operation to remove pages. A delete file needs only the Handle — the identity column — of each page to remove; content columns are ignored. Deletes are permission-gated (the store must be connected with content write access) and irreversible, so the dry run always shows the count first. A handle that no longer exists is quietly skipped, which makes re-running the same delete file safe (idempotent).
Importing from another store
On the wizard's Source step, pick From another store to copy pages from a connected store — no file needed. Title, body, publish state, and template come across, matched by handle. Combined with a schedule this becomes a recurring one-way page sync. The rows come from EcomSolo's synced data for the source store; sync it first if it hasn't run recently.
Results and freshness
Pages you create or update are visible in Shopify admin immediately, and EcomSolo's Pages dashboard refreshes within seconds of the run finishing.
Sample file
A ready-to-run example ships as pages-sample.csv:
Handle,Title,Body,Published,Template suffix
wow-about,About the Wow Store,<p>We sell wow things.</p>,true,
wow-contact,Contact Us,<p>Reach the wow team any time.</p>,true,contact
wow-coming-soon,Coming Soon,<p>Something wow is on the way.</p>,false,
Dry run: will create 3 (or update for handles that already exist).
Troubleshooting
| Error in the report | What it means / what to do |
|---|---|
row requires a Handle | Every row needs a handle — it's how pages are matched and created. |
row would create a new page but has no Title | New pages need a title. Add one, or use an existing handle to update instead. |
Handle has already been taken | Another page already uses that handle — pick a unique handle. |
FAQ
Will re-importing create duplicates? No — rows match by handle, and the default Upsert operation updates in place.
Can I delete pages? Yes — run the file with the Delete operation and a column of handles. It's permission-gated and irreversible, and missing handles are skipped. See Deleting pages.
Can I schedule it? Yes — ideal with a Google Sheet or a store-to-store source whose content changes between runs.