← Blog
Perfex CRMWordPressWooCommerceIntegrations

WordPress to Perfex CRM Sync: Every Sign-Up as a Lead

A WordPress to Perfex CRM sync carries four fields and nothing else. What that covers, where sign-ups should land, and what you are left to build yourself.

Three hundred people registered on the membership site last month. Every one of them is in wp_users. None are in the CRM, because the thing that puts them there is a CSV export somebody runs when they remember, and this month that was twice. By the time a sign-up reaches a salesperson it is eleven days old.

A WordPress to Perfex CRM sync closes that timing gap in an afternoon. What it does not close is the gap between the record WordPress holds and the record your sales team can work. Knowing which fields cross the wire separates an integration that earns its keep from one that fills your pipeline with anonymous rows.

We build and sell both WordFex and the REST API module for Perfex CRM, so weigh the recommendations accordingly. The field detail is specific to our plugin; the reasoning about routing, guest checkout and attribution applies to any sync you build.

What actually crosses the wire in a WordPress to Perfex CRM sync

WordFex synchronises the default data of a WordPress user. That is four fields:

Perfex fieldWordPress sourceFilled in at a WooCommerce checkout?
First namefirst_name user metaYes, from the billing name
Last namelast_name user metaYes, from the billing name
Email addressuser_emailYes
Websiteuser_urlNo - checkout never asks for it

That is the whole map, and a fair reflection of what a WordPress user record holds: a name, an email, a URL and a role. Everything a shop knows about a buyer - billing address, phone, company, order total, the coupon - lives in WooCommerce’s own tables and meta, not in the user’s default data. A user-based sync cannot carry what the user object never held.

Website is the field most likely to arrive empty, since only sites whose registration form asks for it will have one. If yours asks, keep it: a company domain is the most useful of the four for B2B, because it groups three people from the same firm who signed up separately.

The honest test is not “is four fields enough” in the abstract. It is: decide what someone will do with the record within an hour of it landing. If that is “call them and find out who they are”, four fields is plenty and the speed is the win. If it is “route by territory, score by campaign”, the rest of this article is the work.

The REST API module is a prerequisite, not an optional extra

Perfex CRM does not ship with a full REST API of its own. Any WordPress plugin claiming to create leads in Perfex is therefore talking to something you installed, and WordFex says so in its own requirements: it connects through the REST API module, which is what actually creates the Leads or Customers.

In order:

  1. Install the API side first. Module on Perfex, then WordFex on WordPress. In the other order you spend an afternoon debugging a connection that could not have worked.
  2. Issue a dedicated token for this integration only. Permissions are granted per resource and per verb - Get, Create, Update and Delete - so a sign-up sync needs Create on Leads (or Customers) and nothing else. The credential lives in the WordPress database, and that database ends up in backups and staging copies. A create-only token that leaks cannot read your customer list back out.
  3. Decide about the expiry date deliberately. Each key can be given one. An expiry you set and do not write down is a sync that stops on a date nobody remembers, with no error except a quiet pipeline.
  4. Know where your quota sits. Request limiting and quota limiting are per key. Forty registrations a day never comes close; importing five thousand legacy users in an afternoon might, and every response carries X-RateLimit headers so you can see it coming.

Entering the connection details takes about a minute. Spend the saved time on the token design.

Leads or Customers: where your WordPress users land in Perfex CRM

WordFex routes incoming WordPress users into the Perfex Leads section so your team can qualify and nurture them, or into the Customers section when a sign-up represents a confirmed client. The destination is a single setting.

That setting is the real decision, because a membership registration and a WooCommerce checkout look identical to the plugin. Both are new WordPress users carrying the same four fields. Nothing in the payload says which one paid you.

  • Route to Leads when a sign-up is an expression of interest: a free account, a gated download, a trial, a community login. These people need qualifying, and the pipeline is where that happens.
  • Route to Customers when signing up means money has changed hands - a store where an account is only ever created at checkout.

Getting it backwards is not cosmetic. Send unqualified sign-ups to Customers and the customer count becomes a vanity number, every report built on it is wrong, and the pipeline reads as empty while three hundred prospects sit filed as clients. Send buyers to Leads and they get nurture sequences about the product they bought last Tuesday.

Because the destination is one setting per install, a site running both a free tier and a shop cannot split them at the plugin. Either accept one destination and classify on the CRM side, or separate the audiences at the WordPress level. Choosing neither is the failure mode.

WooCommerce to Perfex CRM: guest checkout is the hole in your numbers

WordFex works with the standard WordPress user system, so on a store it captures new customers as they sign up. Read that literally, because WooCommerce will happily let people buy without signing up at all. With guest checkout on, a completed order produces an order record and an email address but no WordPress user - nothing for a user-based sync to fire on.

Before blaming the sync, open WooCommerce > Settings > Accounts & Privacy:

  • Allow customers to place orders without an account. If this is on, some share of your revenue is invisible to any user-based integration.
  • Allow customers to create an account during checkout. The single switch that most improves coverage, at the cost of one checkbox on the form.

Do the arithmetic on your own store rather than trusting a benchmark: count orders in a month against new users created in the same month. That difference is your guest share, and the ceiling on what any sign-up sync can capture.

The second limit: the event is the sign-up, not the order. Order value, line items and coupons never belonged to the user object, so they do not travel. Revenue in Perfex is a separate job against the invoices endpoint.

WordPress CRM lead capture: what the four-field map leaves you to build

Four things are commonly assumed to be included, and are not.

Lead source attribution

Every synced record arrives looking the same. A visitor from a paid campaign and one from a three-year-old blog post are indistinguishable by the time they reach wp_users, because the campaign data lived in the URL and the URL is gone the moment they navigate. Capture it at the form: read utm_source, utm_medium and utm_campaign on first landing, store them in a first-touch cookie, and write them into the registration form as hidden fields.

Custom fields

The REST API module exposes custom fields as a resource of their own - add, update and delete fields, request fields and their values, and search field values - so anything extra you captured gets a named home rather than a sentence in the notes box that nothing can group or filter on. The pattern that works: search Leads by email for the record just created, then write your values against it.

Do not assume your code runs after the record exists just because it is the same page load - give the lookup a short retry, or run enrichment on a delayed schedule. And be honest here: a plugin earns its place when the answer is zero code. Once you are writing hooks anyway, weigh that against the module’s native Zapier, Make.com and n8n connectors, where a failed run is visible instead of a silent nothing in functions.php.

Staff assignment

Nothing in a four-field map says who owns the lead. Assignment is a CRM-side decision - a default owner, or a rule applied on arrival. Round-robin and territory routing belong in the enrichment step, not the sync.

Duplicate identity

The same person can register on your site, fill in a contact form and check out as a customer. Email is the only key that holds up across all three, lowercased and with plus-addressing normalised. Test what your install does when a known email arrives twice before relying on the outcome. And note what idempotency does not fix: the module’s Idempotency-Key support on POST replays a stored response for an identical retry inside a 24-hour window, killing duplicates from a double-fired request. It does nothing about the same human returning six months later - a matching problem, not a retry problem.

WordFex setup order, and what to measure afterwards

  1. Install the REST API module on Perfex and confirm it responds before touching WordPress.
  2. Create a token used by nothing else, with Create on Leads or Customers and no other grant.
  3. Decide the destination by asking whether a sign-up means interest or money.
  4. Install WordFex, enter the connection details, and register a real test account end to end.
  5. Check WooCommerce > Settings > Accounts & Privacy and decide about guest checkout.
  6. Register with an email that already exists in Perfex, then look closely at what you get.
  7. Add hidden UTM fields to the registration form now, even if nothing reads them yet - you cannot backfill this.
  8. Thirty days later, count new WordPress users against new Perfex records for the same period.

Schedule step eight before you finish step one. Two numbers that disagree have a small, findable set of causes, and finding them in month one costs an hour rather than a quarter.