Find your missing feature with a Pushword Extension

  • Admin Manage pages, media and users through an EasyAdmin interface.
  • API Manage pages and redirections through a token-authenticated API with an OpenAPI schema.
  • Admin Block Editor Edit rich content as blocks while storing Markdown.
  • Advanced Main Image Choose how each page’s main image is rendered, from hidden to a full hero.
  • Conversation Add comments, contact forms and other user input.
  • Flat Sync pages and media between the database and flat files.
  • Link Improver Add bounded, auditable internal links at render time without changing source content.
  • Newsletter Manage consent, audiences, segmented campaigns and event-driven mail sequences.
  • Page Scanner Find broken links, redirects and TODO reminders from the command line or admin.
  • Page Update Notifier Send an email when a page changes.
  • Quiz Build SEO-rendered quizzes and personality tests with an optional conversion form.
  • Repurpose Render validated social carousel specs as SVG, PNG or PDF.
  • Search Add typo-tolerant full-text search backed by a rebuildable SQLite index.
  • Snippet Render reusable content fragments and developer-registered components.
  • Static Generator Export a site for GitHub Pages, Apache, FrankenPHP or Caddy.
  • Page Cache Pre-render pages for the web server while keeping dynamic routes in the app.
  • Template Editor Edit Twig templates from the admin.
  • Version Keep, compare and restore page revisions.

To list a maintained third-party extension, edit this page on GitHub.

Extension points

  • Events: core and admin event names are constants in Pushword\Core\Event\PushwordEvents (examples: Admin Menu, Pages List Search). Extension events are dispatched by class — listen to the class itself, e.g. Pushword\StaticGenerator\Event\StaticPreGenerateEvent.
  • Entity filters: Implement Pushword\Core\Component\EntityFilter\Filter\FilterInterface and add the #[Pushword\Core\Component\EntityFilter\Attribute\AsFilter] attribute, which tags the service pushword.entity_filter.
  • Newsletter trigger sources: Implement Pushword\Newsletter\Trigger\TriggerSource and tag it pushword.newsletter.trigger_source to start a mail sequence from anything your app watches — see Newsletter.