> ## Documentation Index
> Fetch the complete documentation index at: https://devs.surferseo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up the WordPress plugin

> Install Surfer's plugin on your WordPress site and connect the site to your Surfer organization.

Check the plan and site requirements below before installing.

Once your site is connected:

* The post editor shows Surfer's guidelines beside your post.
* Articles move between Surfer and WordPress in either direction.
* wp-admin gains a weekly performance report.

The connection belongs to an organization, the Surfer account that holds your subscription and members. The member who set it up does not own it.

## Availability

Installing the plugin is free. Its keyword research module works without a Surfer account. The features that talk to Surfer need a plan that includes the WordPress integration:

* The Surfer panel in the post editor. It shows the guidelines and Content Score of a [Content Editor](/integrations/guidelines-panel), the document Surfer builds around your target keywords.
* The transfers between a post and a Content Editor, in either direction.
* The performance report.

The integration is included in the Standard, Pro, Peace of Mind, and Enterprise plans and in the trial. Some older plans include it too.

A plan without the integration shows two messages. In Surfer, **Settings → Integrations → WordPress** reads `Wordpress integration is not available on your plan`, with an **Upgrade plan to get access** button instead of the site list. The connect pop-up reads `No access to WordPress integration` when the account you sign in with is on such a plan.

## Before you start

The plugin needs a current WordPress, an administrator, and pretty permalinks:

* WordPress 6.0 or newer.
* PHP 7.4 or newer.
* An administrator account. The **Surfer** menu and the plugin's settings page are limited to administrators.
* Pretty permalinks: under **Settings → Permalinks**, any structure other than **Plain**. Surfer reaches the plugin through the site's REST API address, which WordPress serves only with pretty permalinks.

The plugin works with the Gutenberg block editor, Classic Editor, and Elementor. It detects which editor your site uses. **Default Content Parser** overrides that choice. [Write in WordPress](/integrations/wordpress/write) shows where the Surfer panel appears in each editor.

Security plugins and hosts that restrict the REST API block the connection. See [Troubleshooting](/integrations/wordpress/troubleshooting) for connection fixes involving Wordfence and hosting providers.

## Install the plugin

Follow the steps below to install from the WordPress plugin directory.

To use the ZIP file instead:

1. Go to **Plugins → Add Plugin**.
2. Select **Upload Plugin**.
3. Choose the [plugin ZIP from Surfer](https://app.surferseo.com/wpsurfer-plugin/wpsurfer-latest.zip).

**1. Open the plugin directory**

In wp-admin, go to **Plugins → Add Plugin**.

**2. Find the plugin**

Search for `Surfer`. The plugin is listed as `Surfer – WordPress Plugin`.

**3. Install**

Select **Install Now**.

**4. Activate**

Select **Activate**.

**5. Find the Surfer menu**

Select **Surfer** in the wp-admin sidebar. The plugin's settings page opens
with the heading **Surfer: Settings**. The **Settings** link under the
plugin on the Plugins screen also opens this page.

Updates arrive through WordPress's plugin updater, like any other plugin.

After updating from a version before 1.8.1, reconnect the site once. Earlier versions sent the site's connection key to the browser. A new connection replaces the key.

Posts stay linked to their Content Editors.

1. On the plugin's settings page, under **Surfer account**, select **Disconnect**.
2. Connect the site again, following [Connect the site to Surfer](#connect-the-site-to-surfer).

The tour below shows the install and the connection that follows.

[https://app.guideflow.com/player/er5jjl1h6k](https://app.guideflow.com/player/er5jjl1h6k)

## Connect the site to Surfer

The sign-in opens in a new browser window, so allow pop-ups for your wp-admin address before you start. Connecting starts on the plugin's settings page, continues in a Surfer pop-up where you pick the organization, and ends back in wp-admin.

**1. Open the plugin settings**

In wp-admin, select **Surfer** in the sidebar.

**2. Start the sign-in**

Under **Surfer account**, select **Log in and integrate with Surfer**. A pop-up opens app.surferseo.com.

**3. Sign in to Surfer**

Sign in with your Surfer account if the pop-up asks for it.

**4. Choose the organization**

Select the organization you want to connect the site to. The pop-up lists your organizations below `Hi <your email>!`.

This step picks an organization. A workspace, the brand or site you manage inside the organization, is chosen later in the post editor, once per Content Editor.

![Surfer's connect page in the pop-up, greeting the signed-in user and listing organizations to connect the WordPress site to, with the Connect button.](https://mintcdn.com/surfer-1a8fda11/4kbtukCU_qZDIZlN/images/integrations/wordpress/wordpress-setup-connect.png?fit=max\&auto=format\&n=4kbtukCU_qZDIZlN\&q=85\&s=183a12a88b509f61347b07eadf867e13)

**5. Connect**

Select **Connect**. There is no success screen. The pop-up moves to Surfer's **WordPress Integration** page, with the site listed under **Accounts connected**.

![Surfer's WordPress Integration page after connecting, with the site listed under Accounts connected, when it was integrated, and who integrated it.](https://mintcdn.com/surfer-1a8fda11/4kbtukCU_qZDIZlN/images/integrations/wordpress/wordpress-setup-connected.png?fit=max\&auto=format\&n=4kbtukCU_qZDIZlN\&q=85\&s=7eb0db6fe1dcdbfa81f6953d985ee8ec)

**6. Return to wp-admin**

Close the pop-up. The **Surfer account** box on the plugin's settings page reads **Connected**. The organization name and the email you signed in with follow it.

The page checks every five seconds. It updates without a reload.

## Verify it is working

The site is listed in Surfer, and the post editor gains the Surfer panel.

1. In Surfer, go to **Settings → Integrations → WordPress**. The site appears with **Domain name**, **Integrated** (how long ago), and **Integrated by** (who connected it).
2. In wp-admin, open any post. In Gutenberg, the **Surfer** sidebar shows **Optimize with Surfer** and the **Keyword Research** panel. See [Write in WordPress](/integrations/wordpress/write) for the panel's location in other editors.

## Plugin settings

The settings under the connection box control how exported articles appear in WordPress. They appear once your site is connected. Select **Save changes** at the bottom of the page to apply them.

| Setting | Purpose | Default |
| - | - | - |
| **Default Content Parser** | Converts an exported article into this editor's format. | Auto Detection (Default) |
| **Default Post Template** | Gives posts created by the Elementor parser this page template. | Default |
| **Elementor Template** | Applies the styles of this Elementor library template to posts imported by the Elementor parser. | None |
| **Default SEO Plugin** | Writes the meta title and description of an exported article to this SEO plugin. | Auto Detection (Default) |
| **Author** | Sets the author of an exported article when the export names none. | The administrator whose username sorts first |
| **Category** | Sets the category of an exported article when the export names none. | `- Select an option -` |
| **Tag** | Sets the tag of an exported article when the export names none. | `- Select an option -` |
| **Disable Surfer writing guidelines in Elementor editor** | Hides the Surfer panel inside Elementor's editor. Exports and the other editors are unaffected. | Off |
| **Image Processing Mode** | Sets how the images of an exported article are downloaded into the Media Library. | Auto (async for 8+ images) |
| **Internal Links Rel** and **External Links Rel** | Adds these `rel` values to the links in an exported article, one setting for links to your site (internal) and one for links elsewhere (external). | None |
| **Internal Links Target** and **External Link Target** | Gives the same links this `target`. | `_self` for internal, `_blank` for external |
| **Help us improve and let us analyze usage data.** | Sends your site's address, its administrator email, and environment details such as the PHP and WordPress versions, the active plugins, and the theme to Surfer. | Off |
| **Send me a weekly report on my site’s performance.** | Emails the site's admin address a weekly report on how posts performed. It needs Search Console connected in Surfer; until then the switch is missing and the hint says so. See [Performance report](/integrations/wordpress/performance). | Off |

The settings offer these choices.

* **Default Content Parser**: **Auto Detection (Default)**, **Classic Editor**, **Gutenberg**, or **Elementor**. Auto detection picks the Classic Editor when the Classic Editor or Disable Gutenberg plugin is active, Elementor when Elementor is active, and Gutenberg otherwise.
* **Default SEO Plugin**: **Auto Detection (Default)**, **All in One SEO**, **Rank Math**, or **Yoast SEO**. Auto detection picks the active one, Yoast SEO first, then All in One SEO, then Rank Math.
* **Image Processing Mode**: **Synchronous (immediate)**, **Asynchronous (background)**, or **Auto (async for 8+ images)**. The background mode avoids timeouts but shows images with a delay; [Export from Surfer](/integrations/wordpress/export) explains when the automatic mode switches to it.
* **Internal Links Rel** and **External Links Rel**: any combination of `noopener`, `noreferrer`, `nofollow`, and `dofollow`.
* **Internal Links Target** and **External Link Target**: `_self`, `_blank`, `_parent`, or `_top`.

The **Google Search Console integration** box above the settings shows whether Surfer has a Search Console property for your domain. The [Performance report](/integrations/wordpress/performance) requires this property.

## Sites, organizations, and workspaces

A site connects to one organization at a time, and an organization can connect several sites.

* The plugin holds one connection. To move the site to another organization, use **Replace with another Surfer account** on the settings page, described under [Disconnect](#disconnect).
* Every site connected to the organization is listed under **Settings → Integrations → WordPress**.
* The connection is shared by the organization's members.
* Connecting the same site to the same organization again keeps one entry in that list.
* Workspaces are not part of the connection. You choose one in the **Workspace** field each time you create a Content Editor from a post. [Write in WordPress](/integrations/wordpress/write) covers that dialog.

## Disconnect

Disconnect from either side. Disconnecting from both is the surest way. Deleting the plugin on its own leaves the site connected.

> [!WARNING]
>
> Disconnecting takes effect at once, with no confirmation step on either side.

To disconnect from WordPress:

1. Open the plugin's settings page, **Surfer** in wp-admin.
2. Under **Surfer account**, select **Disconnect**.

**Disconnect** removes the connection from the site and tells Surfer to drop it. **Replace with another Surfer account** does the same and starts the sign-in again at once, so you can pick a different account or organization.

To disconnect from Surfer:

1. Go to **Settings → Integrations → WordPress**.
2. Open the menu at the end of the site's row.
3. Select **Disconnect account**.

The site leaves the list at once. Surfer asks the plugin to disconnect, once. If the site is unreachable at that moment, the plugin keeps showing **Connected** and keeps working until you disconnect in WordPress as well.

Deleting the plugin does not disconnect the site. The plugin keeps the connection through an uninstall, and Surfer still lists the site. Disconnect first, then delete the plugin.

Unlinking one post from its Content Editor is a separate action inside the post editor. [Write in WordPress](/integrations/wordpress/write) covers it.

## Troubleshooting

Each of these symptoms has its cause and fix on the [Troubleshooting page](/integrations/wordpress/troubleshooting).

* [The pop-up does not open](/integrations/wordpress/troubleshooting#the-pop-up-does-not-open) when you select **Log in and integrate with Surfer**.
* [The connect page shows an error](/integrations/wordpress/troubleshooting#the-connect-page-shows-an-error-above-the-organization-picker) above the organization list after you select **Connect**.
* [wp-admin shows a notice that Wordfence is blocking Surfer](/integrations/wordpress/troubleshooting#error-code-403).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.