GLEB IT graphic reading Measure your campaigns. WordPress, consent and useful metrics.
All help topics

Measuring campaigns with WordPress and custom KPI plugins

Your ad gets clicks and enquiries arrive through the form, yet each tool reports different figures. Before rebuilding the page because the conversion rate looks low, check how each tool measures it.

A custom KPI plugin brings your campaign’s key figures into WordPress, from page views and form starts to saved enquiries. The results depend on clear counting rules and how the plugin works with forms, caching and any A/B tests.

Go to the questions and campaign checklist

An example without customer data

A typical setup uses a page cache to serve a campaign page with an enquiry form and a thank-you page. To see where people drop off and which campaign generates enquiries, the measurement needs to distinguish serving a page from receiving and saving a form submission.

Questions about campaign measurement

Nine questions and a pre-launch checklist.

What can a custom KPI plugin show?

It can show how often people view a landing page, click the enquiry button, start a form and successfully submit it. You can also associate these events with campaigns, form IDs and selected locations, provided the workflow supplies those details.

A simple dashboard can compare periods, show test submissions separately and offer a CSV export or short report. Choose the features that answer the questions you actually have.

The table is only one part of the work. You also need well-defined events, safeguards against duplicate counts and spam, limited access, appropriate data storage and checks after changes. A custom plugin is particularly useful when standard reports cannot show your specific workflow clearly.

Which metrics are useful?

Start with a few metrics and define each one clearly.

MetricWhat it measures
Page viewsRecorded views of the selected campaign pages, which may include repeat views.
CTA clicksRecorded clicks on the enquiry button. A click does not establish that an enquiry was made.
Form startsFirst observed interactions with the form, counted according to the agreed rule.
Saved enquiriesSubmissions accepted and stored on the server, after the agreed exclusions.
Enquiry rateSaved enquiries divided by the stated denominator, such as page views or visit sessions.

An example with made-up figures 20 enquiries from 400 page views give a rate of 5%. The same 20 enquiries from 200 visit sessions give 10%. Both calculations can be correct because they answer different questions. Show the denominator alongside the rate.

A form abandonment rate also needs a definition. Which form start is matched to which submission, and within what time window? Missing events can change the result. Bounce rates are also only comparable when both systems use the same definition.

Why might a fast page undercount views?

A full-page cache holds a previously generated HTML version. When the cache serves that copy, a counter in the regular WordPress page-generation process may not run again. The effect depends on how views are counted.

A browser script can send events to the server in a separate request, even when the page comes from a cache. The server still has to accept, validate and store the event. A browser function such as sendBeacon cannot confirm that the record was actually saved. MDN explains what sendBeacon returns.

When setting up measurement, I check what serves the page and what reaches the event endpoint separately. For the different layers involved, see the WordPress documentation on caching.

Do I need to turn off caching on campaign pages?

You can exclude specific dynamic pages from full-page caching. A small standalone campaign installation may also be simpler without that cache. Either approach needs to suit the measurement, the form and the available server capacity.

On a site serving several purposes, I would avoid turning off caching everywhere for a single campaign. Test changes selectively, clear the relevant cached copies, then compare functionality and load times. Image optimisation, transfer compression and browser caching for static files are separate measures.

The directive noindex controls search engine indexing. Cache exclusions and access controls are separate. UTM parameters and fbclid cannot establish a cache miss because their treatment depends on the system and its configuration. WordPress documentation on noindex · WP-Optimize documentation on cache settings and exclusions.

What should I check when optimising a page with a form?

A form page cached for too long can serve expired security values. WordPress nonces are valid for between 12 and 24 hours by default, and a form plugin can use its own mechanisms. Set the cache lifetime around the intended refresh behaviour. Keep security checks in place when troubleshooting. WordPress documentation on nonce lifetime.

Delaying, combining or minifying JavaScript can also change how a workflow behaves. Use a setting only after checking that the layout, form and measurement still work. Test changes individually and selectively exclude any scripts the workflow needs. WP-Optimize guidance on fixing functionality after minification.

Does a thank-you page view count as a lead?

A view can be a goal signal. Someone might also reload the page, open it directly or share its link, so a view alone cannot confirm a new enquiry.

For a lead report, a form submission confirmed by the server often gives a stronger basis. Fluent Forms, for example, provides a hook after it saves a submission. You still need to handle test data, spam and repeat submissions. Fluent Forms documentation on saved submissions.

A saved submission is one step. I check email delivery, double opt-in, CRM arrival and whether the lead became a customer separately. The wp_mail() function can return success without the email reaching its recipient, as explained in the WordPress documentation.

Does this also work with A/B tests?

Yes, if you can attribute recorded views and enquiries to the variant visitors actually saw. A fixed page mapping may suffice when variants use separate pages. If they share a visible URL, the dashboard also needs a reliable variant identifier.

Cache settings for Thrive Optimize and Nelio depend on the installation. Thrive lists compatibility with several common cache plugins and notes that other systems may need exclusions. Nelio describes attribution using the nab parameter and a second approach using a cookie with appropriately configured dynamic caching. Check the setup you actually use.

After starting, stopping or changing a test, clear the relevant cached copies and check which variant the site actually serves. A short-term lead based on a few enquiries is too weak to establish a winner. Thrive Optimize guidance on cache compatibility · Nelio guidance on variants and caching.

Is cookie-free measurement automatically anonymous?

Personal data can still be processed on your own domain. A daily hash based on connection and browser information cannot establish that data is genuinely anonymised or reliably count individual people. Shared devices or connections and changing connections can affect attribution. Adding daily identifiers across several days also cannot give a unique visitor count for the whole period.

Before deployment, clarify which data you need, the purpose and lawful basis, any consent required, the retention period and what to tell users. Check what the specific plugin actually does. Cookie-free operation alone cannot establish privacy compliance. The European Commission explains the distinction between personal, pseudonymised and anonymised data. The EDPB guidelines on access to terminal equipment also cover technologies other than cookies. Assess any potential exemptions separately.

What limits remain after a careful setup?

Counting rules, consent choices, blocked scripts and interrupted connections can make figures differ between tools. Some ad clicks never produce a fully loaded page, and clicking a phone number cannot establish that a call took place. A lead count deduplicated by contact attributes also cannot give an exact count of people.

A custom KPI plugin helps you compare defined steps and find problems in the workflow. Explain the measurement limits in the report. Complete coverage and an increase in enquiries cannot be guaranteed.

My pre-launch campaign checklist

  1. Define the goal and counting rules. What counts as an enquiry, which pages and forms are in scope, and what is the denominator for each rate?
  2. Clarify privacy and access. What data is necessary, how long will you retain it, and who can view or export reports?
  3. Check caching and variants. Check the standard URL, the campaign URLs you actually use, the form and any A/B variant separately.
  4. Test while signed out on desktop and mobile. A private window can help. Neither using one nor finding no cache comment in the source establishes a cache miss on its own. WP-Optimize guidance on checking whether a page is cached.
  5. Run one end-to-end test. Check the page view, button, form start, saved test submission and thank-you page. Verify email, double opt-in or CRM arrival separately where applicable.
  6. Mark test data. Exclude your own submissions and events from reporting in a targeted way. Preserve real enquiries and keep live notifications in place unless you have a reason and plan to change them.

Sources as of 30 October 2026. Original sources are linked next to the relevant statements.

Want to see where your enquiries come from?

I help with WordPress landing pages, form integrations and measurement that fits your workflow. A custom KPI plugin can help if a standard report leaves your key questions unanswered. We first establish what you want to know, then agree on the scope.

Discuss your campaign and measurement · Online advertising basics · Check specific WordPress issues

Scroll to Top