Browse documentation
Integrations

The WordPress plugin

Nectazo Connect: product sync, transactional email and embedded forms.

Nectazo Connect is a WordPress plugin that links a WordPress site to one Nectazo brand. It does three jobs: pushes products, routes transactional email, and embeds signup forms.

Installing

  1. 1In Nectazo, go to Settings → Integrations → API keys and create a key for the brand this site belongs to. Copy it — it is shown only once.
  2. 2Install and activate the plugin on your WordPress site.
  3. 3Paste the API key into the plugin settings and save.
One key per site

Each WordPress site connects to one brand, using that brand's own key. If you run several sites, give each its own key — that way revoking one does not disturb the others.

What you can turn on

FeatureEffect
Product syncPushes your WooCommerce catalogue to Nectazo, and pushes updates whenever you add or edit a product.
Subscription syncWrites each customer's WooCommerce Subscriptions state onto their contact, so you can segment on what they are subscribed to. Needs the WooCommerce Subscriptions extension.
Transactional emailTakes over WordPress's built-in mail so password resets, order emails and everything else send through Nectazo.
Form shortcodeAdds [nectazo_form id="..."] so you can drop a Nectazo signup form into any page or post.
Site-wide formsLoads chosen forms on every page — what a popup needs when the button that opens it could be anywhere.

Each is independent — enable only what you want.

Putting a form on the site

There are two routes, and which one you want depends on whether the form decides for itself when to appear.

  • An inline form renders where you put it, so it goes in with the [nectazo_form] shortcode — a page, a post, a widget, anywhere a shortcode works.
  • A popup, slide-in or bar decides its own moment, so it needs to be loaded on every page it might appear on. Tick it under the plugin's Site-wide forms setting rather than hunting for somewhere to park a shortcode.

The setting lists your published forms as checkboxes, read from Nectazo, so there is no id to copy anywhere. More than one can be ticked — two forms opened by their own buttons is an ordinary thing to want. Two that open by themselves is not, and the plugin says so rather than refusing, because only you know what you meant by it.

It matters most for a form set to open when a button is clicked, since that button can be in a header, a menu or a footer that appears on every page. Add data-nectazo-open to any button or link and it opens the form. Setting both the shortcode and the site-wide option for the same form is harmless — it loads once either way.

Subscription sync

If you run WooCommerce Subscriptions, the plugin can write four fields onto each customer's contact. They are ordinary custom fields, so everything in Segments works on them.

There is nothing to set up first. Nectazo has no list of custom fields to register against — a field exists as soon as something writes it, and appears in the segment builder once at least one contact has it.

FieldHolds
wc_subscriptionactive, pending-cancel, on-hold, pending, cancelled, expired, or none
wc_subscription_planThe product name they are subscribed to right now. Comma-separated if more than one.
wc_subscription_periodmonth or year — how often they are billed.
wc_subscription_couponCoupon codes applied to those subscriptions. Empty means full price.
The last three describe now, not history

When a subscription is cancelled or expires, the plan, period and coupon are cleared — only the status remembers what happened. That is deliberate: a cancelled annual subscriber who kept period = year would be excluded from “everyone not on an annual plan”, and they are exactly who a win-back offer is for. on-hold counts as not current too, because a failed payment is not an active plan. pending-cancel does count, because their paid period is still running and they still have what you would be selling them.

Two worked examples. To promote a discounted annual plan without wasting it on people already paying full price for one:

  • Match ANYwc_subscription_period is not year, or wc_subscription_coupon is set.
  • That reaches monthly subscribers, lapsed subscribers, everyone who never subscribed, and annual subscribers who already have a discount — and spares full-price annual holders.

To reach only people with no live subscription at all:

  • Match ALLwc_subscription is not active.
  • Contacts the plugin has never touched match this too, which is usually what you want: never having subscribed is a kind of not being subscribed.
It fills fields in — it never adds people

A subscriber who is not already a contact in this brand is counted and reported, not created. That is deliberate: a sync that quietly added several hundred customers to a mailing list would be a consent decision made by a background job. There is a separate Add missing subscribers as contacts button for when you do want them, and it never overrides an opt-out — anyone who has previously unsubscribed stays unsubscribed.

Run the backfill once

Turning the setting on only affects subscriptions that change from then on. Press Sync all subscriptions now in the plugin settings to fill in everyone who already has one, or your segments will be built on a fraction of the truth. Large stores are done in batches — the result tells you if there is more to do.

Subscription sync updates existing contacts only. It never creates one, so a backfill cannot flood your list with customers who were never subscribed to your emails. Adding customers as contacts is what the WooCommerce customer toggle is for.

Why the plugin pushes rather than Nectazo pulling

Most self-hosted WordPress sites sit behind bot protection — SiteGround's Anti-Bot AI, Cloudflare, Wordfence — that answers an incoming API request with a challenge page before WordPress ever runs. No credential fixes that, because nothing is wrong with the credential.

Pushing reverses the direction: the request starts from your own server, where none of those defences apply. It also means you configure nothing beyond the API key.

Something unclear or wrong? Tell us and we'll fix it.

The WordPress plugin — Nectazo