> ## Documentation Index
> Fetch the complete documentation index at: https://www.pierview.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# WordPress CMS Integration

> Automatically publish AI-generated content to your WordPress site

## Overview

The WordPress integration lets you publish SEO-optimized content directly to your WordPress site, as a draft or live, straight from Pierview. Connect once, then export any generated article with a single click, or let scheduled content publish automatically.

Articles are sent as native WordPress blocks, so they appear as normal, fully editable posts in your editor. **Tables, headings, lists and formatting all match your theme automatically, with no extra setup.**

<Info>
  This integration works with **self-hosted WordPress** (a WordPress.org site running on your own host, e.g. Hostinger, Bluehost, SiteGround, Kinsta, WP Engine) and with **WordPress.com** sites. Both authenticate using an Application Password. If you're on WordPress.com, use the username tied to your WordPress.com account (see [Step 2](#step-2-connect-pierview-to-wordpress)).
</Info>

## Step 1: Create an Application Password

Pierview connects using a WordPress **Application Password**, a secure, revocable token that's separate from your normal login password.

1. Log into your WordPress admin (`/wp-admin`) as an **Administrator**, **Editor**, or **Author** (publishing live requires at least Author).
2. Go to **Users** in the left sidebar and click **Profile**.

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-users-menu.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=31e4e1df19dbea6e33037a9f9fa0c056" alt="WordPress admin sidebar showing the Users submenu with Profile highlighted" width="483" height="275" data-path="images/wordpress/wordpress-users-menu.png" />
</Frame>

3. Scroll down to the **Application Passwords** section.

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-application-password.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=a16f6233a519f0bddf1321bfd4abd01e" alt="The Application Passwords section at the bottom of the WordPress Profile page" width="1650" height="537" data-path="images/wordpress/wordpress-application-password.png" />
</Frame>

4. Enter a name (e.g. `Pierview`) in the **New Application Password Name** field and click **Add Application Password**.

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-application-password-created.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=6d2ced3393c4e6ed51f8fa5139da3b1d" alt="Entering Pierview as the application password name before clicking Add Application Password" width="1650" height="534" data-path="images/wordpress/wordpress-application-password-created.png" />
</Frame>

5. WordPress shows the generated password **once**, so copy it now. The spaces in it are fine.

<Warning>
  Your site must be served over **HTTPS** for Application Passwords to work. WordPress hides this section on non-secure sites. Keep the token handy; you'll paste it into Pierview next.
</Warning>

## Step 2: Connect Pierview to WordPress

1. In Pierview, go to [Settings → Integrations → CMS Integrations](https://pierview.ai/dashboard/configuration/integrations) and click **Connect** next to WordPress.

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/iiTwOo1MCLkL11Lr/images/pierview-main-cms-integrations.png?fit=max&auto=format&n=iiTwOo1MCLkL11Lr&q=85&s=9a9f161c95ae899b17734a44a069d888" alt="Pierview CMS Integrations page with the Connect button next to WordPress" width="1539" height="806" data-path="images/pierview-main-cms-integrations.png" />
</Frame>

2. Fill in:
   * **Site URL**: your site's address, e.g. `https://yourblog.com` (must be HTTPS).
   * **Username**: your WordPress login username. On a **WordPress.com** site, use the username tied to your WordPress.com account, which you can find at [wordpress.com/me/account](https://wordpress.com/me/account), not your display name or email.
   * **Application Password**: the token from Step 1.

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-connect-modal.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=89675ab02453f53f41185aa553bdd0c0" alt="The Connect WordPress dialog in Pierview with Site URL, Username, and Application Password fields" width="553" height="442" data-path="images/wordpress/wordpress-connect-modal.png" />
</Frame>

3. Click **Test connection**. A success message with your display name confirms the credentials work.

4. Click **Save**.

That's it. There are no fields to map or collections to configure. WordPress posts already have a title, content, and slug built in, so Pierview publishes straight to them.

## You're Connected!

Open any generated article and click the **Publish** tab in the top-right sidebar. You'll see your WordPress site with two options:

* **Save as Draft**: stages the post in WordPress but keeps it hidden from visitors.
* **Publish Live**: publishes the post immediately.

Re-publishing the same article **updates the existing post** — it never creates a duplicate.

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-publish-panel.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=95f3928311833a400c338f4f2f98dff1" alt="The Pierview publish panel showing WordPress connected with Save as Draft and Publish Live options" width="1906" height="947" data-path="images/wordpress/wordpress-publish-panel.png" />
</Frame>

Click **Save as Draft** and you'll see a confirmation once the draft is saved:

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-saved-as-draft.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=4a24be0f3a68c7158d06ee2a851ea39e" alt="Pierview showing a Saved as draft confirmation after saving to WordPress" width="1900" height="1008" data-path="images/wordpress/wordpress-saved-as-draft.png" />
</Frame>

Click **Publish Live** to push it public immediately:

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-published-live.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=652f01e9907762e94f58f5435f526478" alt="Pierview showing a Published live confirmation after publishing to WordPress" width="1907" height="1002" data-path="images/wordpress/wordpress-published-live.png" />
</Frame>

And here's how it looks on your site — formatting, headings, and tables all render to match your theme automatically:

<Frame>
  <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-rendered-page.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=1411d2e0dc422fcfe9f679e0786a4027" alt="The published article rendered live on the WordPress site, showing a formatted table" width="1900" height="1080" data-path="images/wordpress/wordpress-rendered-page.png" />
</Frame>

<Tip>
  Content scheduled for automatic generation will also publish to WordPress automatically (as a live post) once each article finishes generating, with no manual step needed.
</Tip>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Couldn't authenticate / 401 error">
    A few things to check:

    * Confirm the **username** and **application password** are correct (use the application password, not your login password).
    * Make sure the site is served over **HTTPS**.
    * Some hosts (Apache with CGI/FastCGI) strip the `Authorization` header before WordPress sees it. If you're on shared hosting and credentials are definitely correct, ask your host to allow the Authorization header, or add this line to your `.htaccess`:
      ```apache theme={null}
      SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
      ```
  </Accordion>

  <Accordion title="Permission denied / 403 error">
    Your WordPress user needs permission to publish. Use an **Author**, **Editor**, or **Administrator** account. Subscribers and Contributors can't publish posts.
  </Accordion>

  <Accordion title="REST API not found / 404 error">
    Pierview publishes through WordPress's built-in REST API (`/wp-json`). If it's reported as missing:

    * Double-check the **Site URL** (it should be your site's root, e.g. `https://yourblog.com`).
    * A **security plugin** (e.g. Wordfence, Solid Security) or firewall may be disabling the REST API or Application Passwords. Re-enable them, or allow the `/wp-json/wp/v2/` routes.
  </Accordion>

  <Accordion title="My site is on WordPress.com, why won't it connect?">
    WordPress.com also supports Application Passwords, so the integration works there too. The most common cause of a failed connection is the wrong **username**: WordPress.com uses the username tied to your account, which is often different from your display name or email. Find it at [wordpress.com/me/account](https://wordpress.com/me/account) and use that exact value in the **Username** field.
  </Accordion>

  <Accordion title="My tables look plain / I want to change their colours">
    Published tables automatically inherit your **theme's** styling, so they match the rest of your site. If your theme styles tables minimally and you'd like to customise them, add CSS via **Editor → Styles → ⋮ (three-dot menu) → Additional CSS**, not in the post itself, since WordPress strips inline `<style>` from post content.

    <Frame>
      <img src="https://mintcdn.com/pierview-dceb0b3c/fm_TStuQxOeJKIxC/images/wordpress/wordpress-styles-additional-css.png?fit=max&auto=format&n=fm_TStuQxOeJKIxC&q=85&s=a91bc79c8596c82da2cb7c6f68199620" alt="WordPress Styles panel with the three-dot menu open, showing the Additional CSS option" width="1918" height="1075" data-path="images/wordpress/wordpress-styles-additional-css.png" />
    </Frame>

    For example:

    ```css theme={null}
    .wp-block-table th {
      background: #f7f7f7;       /* your brand header colour */
      font-weight: 600;
    }
    .wp-block-table td,
    .wp-block-table th {
      border: 1px solid #e2e2e2; /* your brand border colour */
      padding: 8px 12px;
    }
    ```

    This applies site-wide to every published article.
  </Accordion>

  <Accordion title="Articles not appearing">
    * Verify the connection is **enabled** (toggle is on in Pierview's CMS settings).
    * Confirm the **Site URL**, **username**, and **application password** are correct.
    * Check the post isn't sitting as a **draft** under Posts → All Posts when you expected it live.
  </Accordion>
</AccordionGroup>
