Pages
Pages are website pages you build and manage in OptiPub. They are synced to your WordPress site via the official OptiPub WordPress plugin, which automatically pulls page content, templates, and metadata on a scheduled interval.
Navigate to Content → Pages
Creating a Page
Click the Create button to open the page form. The form is split into three steps: Options, Content, and Confirm.
Step 1 — Options
| Field | Required | Description |
|---|---|---|
| Publication | Yes | The publication this page belongs to |
| Domain | Yes | The domain where this page will be served |
| Path | Yes | The URL path (e.g. about, promotions/summer-sale). Must be a relative path, not a full URL |
| Page Type | Yes | HTML, AMP, or Instant Article |
| Category | No | Optional page category. Categories can require a subscription to access |
| Template | No | An optional content template to wrap the page in |
| Active | No | Whether the page is live. Inactive pages are not served |
| Searchable | No | Whether the page is included in the site search index |
SEO & Sitemap Settings
| Field | Description |
|---|---|
| Meta Title | The page title for search engines |
| Meta Description | The page description for search engines |
| Meta Keywords | Keywords for search engines |
| Change Frequency | How often the page content changes — always, hourly, daily, weekly, monthly, yearly, or never. Used in the sitemap |
| Sitemap Priority | A value from 0 to 1 indicating relative importance in the sitemap |
You can also attach Tags to organize pages across the platform.
Step 2 — Content
The page content is built using the GrapesJS visual editor, which provides a drag-and-drop interface for building web pages without writing code.
Available components include text sections, images, videos, forms, tabs, countdowns, tooltips, link blocks, quotes, and custom code blocks.
OptiPub Macros
You can insert OptiPub macros into your page content to display dynamic data. Macros use the format {$variable} and include:
- System macros — pull data from the current context, e.g.
{$sys_resource.title} - Custom content macros — reference custom content blocks, e.g.
{$custom_sidebar} - Variables — reference subscriber or ESP variables, e.g.
{$esp_first_name}
Head Section
When a Template is selected in Step 1, a Head field appears. Use this to add custom CSS or JavaScript that will be appended to the template's <head> tag.
Page Settings
Inside the editor, the Page Settings panel lets you manage:
- Scripts — add external JavaScript files or inline scripts
- Stylesheets — add external CSS files or inline styles (Google Fonts must be added via the Font Manager instead)
- Meta tags — add custom
name,property,http-equiv, orcharsetmeta tags
Step 3 — Confirm
Preview the final rendered page in an iframe before saving. This renders the full page with its template and resolved macros.
Additional Features
- Auto-save — unsaved changes are automatically saved every 60 seconds
- Copy — duplicate an existing page to use as a starting point for a new one
- Search indexing — pages marked as Searchable are indexed for site search. The indexer parses the rendered HTML and extracts headers, paragraphs, and content for full-text search
WordPress Sync
Pages created in OptiPub are synced to WordPress by the OptiPub WordPress plugin. The plugin runs a scheduled sync (default: every 5 minutes) that pulls pages, resolves templates and macros, and creates corresponding WordPress posts.
Advanced: Dynamic Pages
Most pages have a fixed path like about or contact. Dynamic pages are an advanced feature that use system macros in the Path field to automatically generate pages from your content.
For example, a path of {$sys_resource.slug} creates a page for every resource in the publication. You can also build nested paths like {$sys_resource.category.slug}/{$sys_resource.slug} for category-based URLs.
Supported dynamic models:
| Model | Macro prefix | Example |
|---|---|---|
| Resources | {$sys_resource} | {$sys_resource.slug} |
| Authors | {$sys_author} | {$sys_author.slug} |
| FAQs | {$sys_faq} | {$sys_faq.slug} |
| Forms | {$sys_form} | {$sys_form.slug} |
| Videos | {$sys_video} | {$sys_video.slug} |
| Ads | {$sys_ad} | {$sys_ad.slug} |
Inside the page content, you can use the same system macros to display fields from the current item — for example, {$sys_resource.title} in the body of a dynamic resource page will render the title of whichever resource is being viewed.
Updated 6 days ago
