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

# WordPress

> Connect a WordPress site with no shop: capture your existing forms, sync registered users, and serve popups and web push from your own domain.

A WordPress site with no shop is a fully supported Senderz connection, not a stripped-down version of the store one. The same plugin, **Senderz Marketing**, connects a blog, a magazine, a portfolio, a booking site or a membership site, and gives you contact capture, on-site popups and web push.

<Info>
  **Running WooCommerce?** Use [WooCommerce](/en/integrations/woocommerce) instead. It is the same
  plugin, but a shop connects a second half for customers, orders, revenue and checkout consent.
  Everything on this page also applies to a WooCommerce store, so read this one for forms, users
  and popups, and that one for anything to do with the shop.
</Info>

## What is live today

<Info>
  **Fully working.** The guided connect, form capture from seven popular form plugins with
  per-form field mapping and per-form consent, registered-user sync with an optional registration
  opt-in, the full popup and capture-form runtime, web push including the service worker served
  from your own domain, filing every synced person into a Senderz list, and product-page activity
  where your pages publish product structured data.

  **Not available without WooCommerce.** Orders, revenue and dashboard revenue reporting, product
  catalog sync, checkout marketing consent boxes, cart and checkout tracking, back-in-stock
  requests, and Senderz creating discount codes on your site. These need a shop, and every one of
  them arrives the moment you activate WooCommerce and reconnect.
</Info>

## The plugin

| Detail                                 | Value                                                                                                       |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Name in the WordPress plugin directory | **Senderz Marketing**                                                                                       |
| Directory listing                      | [wordpress.org/plugins/senderz-marketing-connect](https://wordpress.org/plugins/senderz-marketing-connect/) |
| Current version                        | 2.1.6                                                                                                       |
| Requires                               | WordPress 6.2 or newer, PHP 7.2 or newer                                                                    |

<Note>
  **Nothing leaves your site before you connect it.** On a fresh install the plugin makes no
  outbound request of any kind: no storefront script, no tracking beacon, no version ping. Every
  outbound behaviour is gated on the connection you approve, and the plugin's own listing
  enumerates exactly what is sent afterwards.
</Note>

## Before you start

* A **WordPress administrator** account that can install plugins.
* A Senderz account where you are the **owner** or an **admin** of the workspace. Viewers, editors and designers cannot connect a site.
* A **public HTTPS** address, for example `https://example.com`. The guided connect hands your credentials back to the site over HTTPS, so private, local network and loopback addresses are refused. A staging or intranet site uses manual setup instead.

## Connect your site

<Steps>
  <Step title="Install Senderz Marketing">
    In WordPress go to **Plugins**, then **Add New**, search for **Senderz Marketing**, and
    install and activate it. WordPress opens the Senderz screen straight after activation.
  </Step>

  <Step title="Open Senderz Marketing">
    On a site with no WooCommerce the plugin is its own top-level **Senderz Marketing** menu item.
    The old **Settings → Senderz** link still works if you have it bookmarked.
  </Step>

  <Step title="Press Connect to Senderz">
    You are taken to Senderz to approve the request. Sign in if you are not already.
  </Step>

  <Step title="Approve the workspace">
    The approval screen names your site, the workspace it will join, and what the site is allowed
    to do: send form submissions and users as contacts, show that workspace's popups and web push,
    and send on-site activity. Check the workspace, then press **Connect site**. If it is the wrong
    one, switch workspace first and start again.
  </Step>

  <Step title="Confirm it connected">
    You land back on the plugin's **Connection** tab, which should read **Connected** with your
    workspace name beside it. Press **Go to your Senderz settings** to open the matching page in
    Senderz.
  </Step>
</Steps>

<Accordion title="Manual setup for a site that is not reachable" icon="lock">
  A staging, local or firewalled site cannot complete the guided approval, because Senderz has to
  reach it back over public HTTPS. On the plugin's Connection tab use **Manual setup**: paste your
  **Workspace ID** from **Settings → Workspace** in Senderz, and an API key created under
  **Settings → API Tokens**, then press **Save and verify**.
</Accordion>

<Note>
  On the **Integrations** page in Senderz, WordPress and WooCommerce share one tile called
  **WooCommerce & WordPress**, because they are one site. Opening that tile lands on the
  WooCommerce setup. On a site with no shop, the reliable way into your own settings page is the
  **Go to your Senderz settings** button on the plugin's Connection tab.
</Note>

## Capture your existing forms

This is the main reason to connect a WordPress site. The plugin turns submissions from the form plugin you already run into Senderz contacts, with no new form to build and no shortcode to place.

Supported: **Contact Form 7**, **WPForms**, **Gravity Forms**, **Elementor Pro Forms**, **Fluent Forms**, **Formidable Forms** and **Ninja Forms**.

<Steps>
  <Step title="Open Senderz Marketing, then Forms">
    Your forms are listed grouped by the plugin they belong to.
  </Step>

  <Step title="Tick Capture submissions from this form">
    Nothing is sent from a form you have not switched on. This is per form, not per plugin.
  </Step>

  <Step title="Map the fields">
    For each field choose **Do not send**, **Email**, **Phone**, **First name**, **Last name** or
    **Marketing consent checkbox**. Only the fields you map are ever sent, along with the form's
    name and the address of the page it was submitted from.
  </Step>

  <Step title="Choose the consent rule">
    Three options, and the default is the cautious one.

    * **Never subscribe. Capture the contact only.** The default.
    * **This whole form is a marketing opt-in.** For a newsletter signup form.
    * **Subscribe only when the consent field is ticked.** Requires you to map a consent checkbox.
  </Step>
</Steps>

<Warning>
  Capturing a form is not consent by itself. A captured contact who was not subscribed is stored
  and can be segmented, but is never sent marketing. Pick a subscribing option only where the form
  genuinely asks for it.
</Warning>

<Note>
  If a form is not listed, submit it once. Some form plugins do not expose their fields until
  there has been a submission.
</Note>

Captured contacts show a consent source of **WordPress form** on their profile, and can start the **Created profile** and **Added to list** automation triggers. Submissions are sent after the page has finished loading, so capture never slows a form down.

<Card title="No form plugin on the site?" icon="input-text" href="/en/integrations/embedded-forms">
  Senderz can host a form you paste anywhere, WordPress or not. See Embedded forms.
</Card>

## Sync the people who have an account

If your site has registered users, members or subscribers, Senderz can keep them as contacts.

Turn on **Sync registered users** in Senderz, on the **Site activity** card of your WordPress connection. Senderz then receives, for each account: the email address, a phone number if one is stored, first and last name, the site language, and whether the person ticked a marketing opt-in.

<Warning>
  **Accounts arrive subscribed to nothing.** Creating an account is not marketing consent. Only a
  person who ticks the opt-in checkbox is ever subscribed, and that checkbox is unticked by
  default.
</Warning>

Turn on **Registration opt-in** in the same card to add that checkbox to the WordPress registration form and the admin **Add New User** screen. You can set your own wording, or leave it blank for the translated Senderz default.

Turning sync on starts sending the accounts you already have, in the background. You can also press **Sync existing users now** on the plugin's **Users** tab, which shows the progress. New accounts and changes to existing ones are sent as they happen. An account deletion reaches Senderz as a custom event named `wordpress.user_deleted`, so you can build an automation from it.

<Note>
  **Sync now** on the WordPress row in Senderz only stamps the time. There is nothing on a plain
  WordPress site for Senderz to pull, so a fresh user sync is started from the plugin's **Users**
  tab.
</Note>

## Popups, capture forms and web push

Once the site is connected, the plugin loads the Senderz runtime on your pages through WordPress's normal script API, and marks it as do-not-optimise for the common caching and minifying plugins.

<CardGroup cols={2}>
  <Card title="Popups and capture forms" icon="window-maximize" href="/en/messaging/popups">
    Every popup you publish appears on the site without touching your theme again. Targeting,
    timing and frequency are all set in Senderz.
  </Card>

  <Card title="Web push" icon="bell" href="/en/channels/push">
    The plugin serves the service worker browser push requires, from your own domain, which is
    what makes push possible on a self-hosted site at all.
  </Card>
</CardGroup>

See [Installing popups on your store](/en/messaging/popup-install) for the full install and test walkthrough, including how to confirm the runtime is loading.

You can also open a popup yourself from your own link or button, which is useful for a "join the list" item in a menu or footer. In the popup builder open **Targeting and display**, switch to the **Display** tab, find **Custom trigger**, set a **Handle**, and use **Copy snippet** to get the exact code to paste into your theme.

## On-site activity

Product-page activity works on a plain WordPress site wherever your pages already publish product structured data, which many recipe, listing, directory and catalog themes do. Where the data is there, Senderz records a **product viewed** event and shows it on the contact's timeline.

If your pages publish nothing structured, you can report activity yourself:

```js theme={"system"}
window.SenderzStorefront.track('product_viewed', {
  id: 'course-101',
  title: 'Intro course',
  price: 149
});
```

The accepted event names are `product_viewed`, `product_added_to_cart`, `product_removed_from_cart`, `cart_viewed`, `checkout_started`, `collection_viewed`, `search_submitted` and `page_viewed`.

<Warning>
  Cart and checkout tracking, and the back-in-stock request form, need WooCommerce. On a site with
  no shop there is no cart for Senderz to read, so those controls do not apply even where you can
  see them.
</Warning>

## Where each setting lives

| Setting                                                                   | Where you change it                         |
| ------------------------------------------------------------------------- | ------------------------------------------- |
| Registered-user sync and the registration opt-in                          | Senderz, **Site activity** card             |
| The list every synced person joins                                        | Senderz, **Customer sync list** card        |
| Which forms are captured, the field mapping and the per-form consent rule | WordPress, **Senderz Marketing → Forms**    |
| Site address override, for example www versus non-www                     | WordPress, **Senderz Marketing → Advanced** |

A change you make in Senderz reaches the site within about five minutes while someone is in the WordPress admin, and otherwise on the plugin's hourly refresh. The plugin's **Users** tab is a read-only mirror with a **Manage in Senderz** link.

<Note>
  Your WordPress connection page in Senderz also shows a **Marketing consent** card. Those are the
  WooCommerce checkout consent boxes. They have no effect until WooCommerce is active on the site.
</Note>

### Filing everyone into a list

The **Customer sync list** card picks one Senderz list that everyone synced from this site joins, whether they arrived from a form or from user sync. Joining a list is not consent, so what you may send is still decided by each person's own opt-in.

## Verify the connection

<Steps>
  <Step title="The plugin reads Connected">
    Check the **Connection** tab shows **Connected** with the right workspace name.
  </Step>

  <Step title="A form submission arrives">
    Submit a form you switched on, using an address you can find. It should appear in **Contacts**
    within a few seconds, with a consent source of **WordPress form**.
  </Step>

  <Step title="A popup renders">
    Open the site in a private browsing window and confirm a published popup appears on a page its
    targeting matches.
  </Step>

  <Step title="Users arrived">
    With user sync on, open the plugin's **Users** tab and check the back-fill status, then find
    one of those accounts in **Contacts**. It should show as not subscribed unless the person
    ticked the opt-in.
  </Step>
</Steps>

## Disconnecting

Press **Disconnect** on the plugin's Connection tab, or deactivate the plugin. The site immediately stops loading the Senderz runtime and stops sending anything. You can also disconnect from the Senderz side on the connection's detail page.

Disconnecting does not delete contacts or the activity already in your workspace. Your form field mappings stay on the site, so reconnecting picks up where you left off.

## Troubleshooting

| What you see                                          | What to check                                                                                                                                                                                                                                                                                         |
| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Nothing appears on the site                           | Confirm the plugin's Connection tab reads **Connected**, and that you have a published popup whose targeting matches the page you are on. If you connected Senderz with a different address, for example www versus non-www, set the right one under **Senderz Marketing → Advanced → Site address**. |
| A feature you just set up does not work               | A caching or optimisation plugin has cached its own copy of the Senderz runtime and is serving a frozen version. Purge that plugin's cache once. Current versions mark the runtime as do-not-optimise, so this only affects a site that cached it before upgrading.                                   |
| **This site address was rejected** during connect     | The guided connect needs a public HTTPS address. Use **Manual setup** on a staging, local or firewalled site.                                                                                                                                                                                         |
| The connection request expired                        | The request is valid for a limited window. Go back to **Senderz Marketing** in WordPress and press **Connect to Senderz** again.                                                                                                                                                                      |
| A form is missing from the Forms tab                  | Submit it once. Some form plugins do not expose their fields until there has been a submission.                                                                                                                                                                                                       |
| A form is captured but nobody is subscribed           | That is the default. Open the form under **Senderz Marketing → Forms** and set its **Marketing consent** rule, either the whole form or a mapped consent checkbox.                                                                                                                                    |
| Fields are missing from a captured submission         | Only mapped fields are sent. Open the form and set the field to **Email**, **Phone**, **First name** or **Last name** instead of **Do not send**.                                                                                                                                                     |
| No users arrive                                       | Turn on **Sync registered users** in Senderz, then press **Sync existing users now** on the plugin's **Users** tab.                                                                                                                                                                                   |
| A setting changed in Senderz has not reached the site | Open any WordPress admin page. Settings refresh about every five minutes there, and hourly otherwise.                                                                                                                                                                                                 |
| **No supported form plugin was found on this site**   | The plugin only reads the seven form plugins listed above. Use an [embedded form](/en/integrations/embedded-forms) for anything else.                                                                                                                                                                 |

## Recommended next steps

<CardGroup cols={2}>
  <Card title="Publish a popup" icon="window-maximize" href="/en/messaging/popups">
    Build a capture form or game and let the connected plugin serve it.
  </Card>

  <Card title="Turn on web push" icon="bell" href="/en/channels/push">
    Ask visitors for browser notifications and send from Senderz.
  </Card>

  <Card title="Review consent" icon="shield-check" href="/en/audience/consent">
    Understand what form capture and user sync do and do not subscribe.
  </Card>

  <Card title="Add WooCommerce later" icon="cart-shopping" href="/en/integrations/woocommerce">
    Activating a shop unlocks orders, revenue, checkout consent and cart tracking.
  </Card>
</CardGroup>
