Prerequisites
- WordPress site with Elementor installed
- Advanced Custom Fields (ACF) plugin installed
- Admin access to WordPress
Connecting WordPress
- Navigate to Integrations -> WordPress
- Enter your WordPress site URL
- Authenticate with your WordPress credentials or API key
Plugin Installation
The WisePilot plugin (v3.0+) bundles everything you need in a single download:- Attribution tracking (cr_attrib cookie + link rewriting)
- CTA view and click tracking (no GTM required)
- Direct event delivery to WisePilot API
- GA4 dual-write (automatic if GA4 is installed)
- GHL form field injection
- RankMath SEO field exposure
- ACF CTA field group management
Install Steps
- Go to Integrations -> WordPress in WisePilot
- Click Download Plugin to get the ZIP file
- In WordPress admin, go to Plugins -> Add New -> Upload Plugin
- Upload the ZIP and activate
- The plugin auto-configures when your site is connected
The plugin auto-generates a tracking token on download. This token authenticates event delivery from your site to WisePilot. No manual configuration is needed.
How Auto-Configuration Works
When you connect WordPress in WisePilot, the app calls your plugin’s REST endpoint (/wp-json/cr/v1/configure) to set:
cr_website_id— your WisePilot website UUIDcr_events_url— the WisePilot API base URLcr_tracking_token— per-site authentication token
wp_options and injected into the attribution script via wp_localize_script.
Verifying Configuration
- Visit any page on your site
- View page source and search for
crConfig - You should see a script block with
websiteId,eventsUrl, andtrackingToken
GET /wp-json/cr/v1/status
Content Import
Import your existing WordPress content into WisePilot:- Blog posts and pages are imported with their metadata
- Content is analyzed for performance optimization
- Existing content can be refreshed or repurposed using AI generation
CTA Data Attributes
In Elementor, CTA elements need these data attributes for tracking:| Attribute | Value | Example |
|---|---|---|
data-cta-id | UUID | a1b2c3d4-... |
data-cta-position | Position code | abtf, exit, footer, sidebar |
data-asset-content-id | Content ID | CNT-123 |
data-cta-id.
ACF Field Setup
WisePilot uses Advanced Custom Fields to store CTA data on your WordPress pages.- Go to Integrations -> WordPress
- Click “Check ACF Fields”
- Review which fields exist vs. missing
- Create missing fields automatically or manually
Required Fields
Each CTA position (abtf, exit, footer, sidebar) needs 13 fields:{position}_headline_text, {position}_subheadline_text, {position}_button_text, {position}_cta_subtext, {position}_cta_url, {position}_main_image, {position}_cta_id, {position}_utm_source, {position}_utm_medium, {position}_utm_campaign, {position}_utm_content, {position}_utm_term, {position}_cta_full_url
Testing
- Visit a page with CTAs
- Open browser DevTools -> Network tab
- Scroll to a CTA — you should see a POST to
/api/integrations/cr/events - Click a CTA — another event fires immediately
- Inspect CTA links — verify
cr_attribparameter is appended - If GA4 is installed, check GA4 DebugView for
cta_viewandcta_clickcustom events
Troubleshooting
Events not arriving in WisePilot
- Verify plugin is activated and
crConfigappears in page source - Check that
websiteId,eventsUrl, andtrackingTokenare all populated (not empty strings) - Check browser Network tab for failed requests to
/api/integrations/cr/events - Verify the tracking token matches what’s in your
wordpress_configtable
CTAs not getting cr_attrib
- Verify CTA elements have
[data-cta-id]or.cr-ctaclass - Check that links are absolute URLs or same-origin paths
- Call
window.getAttributionId()in the console — it should return a UUID
ACF fields not saving
- Verify ACF plugin is active
- Check field group is assigned to correct post type
- Verify field names match exactly (case-sensitive)
Upgrading from v2.x
If you were previously using the GTM-based tracking setup:- Download and install the v3.0 plugin (replaces v2.x)
- GTM CTA tracking tags are no longer needed — you can remove them
- The attribution script now handles everything directly
- Your existing tracking data is preserved — new events use
cr_pluginsource