# WordPress (self-hosted)

> Deliver Mentionwell articles through the signed Mentionwell WordPress companion plugin.

Mentionwell publishes through the **Mentionwell WordPress plugin**. The plugin verifies the per-site HMAC signature, then creates or updates a managed post by slug. No WordPress username or password leaves your site.

## What you need

- A self-hosted WordPress site (6.0+) running PHP 8.0+.
- An admin account that can install a plugin.
- Pretty permalinks enabled (Settings → Permalinks → anything except "Plain").

## Setup

1. [Download the plugin ZIP](/downloads/mentionwell-wordpress.zip), then use WordPress → Plugins → Add New → Upload Plugin.
2. Open Settings → Mentionwell. Paste the webhook secret and Site ID from Mentionwell. Add a PAT only if AI-bot crawl reporting is enabled.
3. In Mentionwell → Settings → Site Delivery, choose the WordPress CMS adapter and paste `https://yoursite.com/wp-json/mentionwell/v1/webhook`.
4. Run **Test connection**. The signed `post.test` event verifies the round trip without creating a post.

## What gets pushed

| Mentionwell field | Where it lands in WordPress |
|---|---|
| Title, slug, excerpt | Standard post fields |
| HTML body | Post content |
| Featured image | Sideloaded into the media library and attached |
| Tags | Created if missing, attached as post tags |
| Category | Mapped/created from the plugin settings |
| JSON-LD | Stored as managed metadata; emitted when Yoast/Rank Math is not already managing schema |
| Status | Draft, pending, private, or publish — selected in plugin settings |

Publishes are idempotent by slug. Signed `post.deleted` events only remove posts previously marked as Mentionwell-managed.

## Common failures

- **401** — the plugin's webhook secret does not match the per-site secret in Mentionwell.
- **403** — a security plugin or WAF is blocking `/wp-json/mentionwell/*`. Allow that route.
- **404** on `/wp-json/` — pretty permalinks are off. Go to **Settings → Permalinks** and click Save (no changes needed).

## Want pull mode instead?

If you'd rather render Mentionwell posts without storing them in wp-admin, use the [WordPress pull-mode quickstart](/docs/frameworks/wordpress).


---

Canonical URL: https://mentionwell.com/docs/publish/wordpress
Live HTML version: https://mentionwell.com/docs/publish/wordpress
Section: Publish to your CMS
Site index for AI ingestion: https://mentionwell.com/llms.txt
Full reference: https://mentionwell.com/llms-full.txt
