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 ContentPages

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

FieldRequiredDescription
PublicationYesThe publication this page belongs to
DomainYesThe domain where this page will be served
PathYesThe URL path (e.g. about, promotions/summer-sale). Must be a relative path, not a full URL
Page TypeYesHTML, AMP, or Instant Article
CategoryNoOptional page category. Categories can require a subscription to access
TemplateNoAn optional content template to wrap the page in
ActiveNoWhether the page is live. Inactive pages are not served
SearchableNoWhether the page is included in the site search index

SEO & Sitemap Settings

FieldDescription
Meta TitleThe page title for search engines
Meta DescriptionThe page description for search engines
Meta KeywordsKeywords for search engines
Change FrequencyHow often the page content changes — always, hourly, daily, weekly, monthly, yearly, or never. Used in the sitemap
Sitemap PriorityA 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, or charset meta 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:

ModelMacro prefixExample
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.