Open any campaign and the builder fills the screen: controls on the left, a live preview on the right, and a bar across the top with the campaign name, its status, Save Draft and Save and Publish.
The six tabs:
- Content: the headline, sub-line, icon, buttons and every field specific to the type you chose
- Design: colours, corner rounding, shadow, entry animation, placement and mobile behaviour
- Triggers: when the campaign appears
- Targeting: who sees it and where
- Opt-in: turn it into an email capture and choose where the lead goes
- Display: how often it shows, its priority, and the external embed snippet
The Content tab changes with the type. A split bar shows column editors, a ticker shows a message list, a chat callout shows a name, avatar and message sequence, a countdown shows its mode and end date, a coupon shows the reveal text and code, and a video popup shows a single YouTube or Vimeo URL field.
The live preview is the real thing:
The preview loads the exact front end stylesheet and the exact front end renderer the plugin uses on your live site, so there is no second implementation to drift out of step. There is a desktop and mobile toggle and a Replay button for animations. Because some triggers only make sense on a live page, the preview always shows the campaign open.
Saving and publishing:
Save Draft stores your work without putting it live. Save and Publish makes it live immediately. On a campaign that is already live the button reads Update. The whole configuration is posted as a single JSON blob and sanitised on the server against a fixed default shape, so any key the plugin does not recognise is simply dropped.
Every campaign is stored as one post with one JSON configuration in post meta. That is why exporting a campaign is a clean single file, and why a campaign built on an older version can never be missing a setting that newer code reads.