How do I connect Claude to my site?
Switch on Blog Post Conversion Tracker → Claude connector, click “Run self-test”, then copy the connector URL ( https://your-site/wp-json/bcpct/v1/mcp ).
- claude.ai and Claude Desktop: Settings → Connectors → Add custom connector, paste the URL, click Connect and approve the request on your site while logged in as an administrator.
- Claude Code: claude mcp add --transport http basecloud https://your-site/wp-json/bcpct/v1/mcp , then run /mcp to sign in; or create an API key in the Claude connector section and add --header "Authorization: Bearer <key>" .
Then ask, for example: “Create a presentation report for last month for our client.” Claude reads the data through the plugin’s tools and can open the branded deck inside the chat.
Can Claude change anything on my site through the connector?
No. Every tool is read-only. Claude can read aggregated reports (visits, leads, conversions, Search Console insights, AI visibility), never form entries, phone numbers or personal data, and it cannot change settings or content. Access lasts until you revoke the app or API key in the Claude connector section.
The connector does not connect. What should I check?
Run the self-test in the Claude connector section. The usual causes are: the site is not reachable over HTTPS from the internet (claude.ai connects from Anthropic’s servers, 160.79.104.0/21), a firewall or bot protection blocks that range, the host strips the Authorization header (the self-test shows the .htaccess fix), a page cache serves /wp-json/bcpct/ or /.well-known/oauth-* (exclude them), or WordPress is installed in a subfolder (discovery at the domain root then needs a web-server rule).
Do I need to create hidden fields in my Gravity Forms?
No! That’s the magic of v2.0. The COURIER system automatically injects UTM data into webhook submissions. You don’t need to create any fields.
What UTM parameters are tracked?
All 8 parameters: * referrer – Previous page URL * utm_source – Campaign source * utm_medium – Marketing medium * utm_campaign – Campaign name * utm_term – Keywords * gclid – Google Click ID * gbraid – Google Brand Engagement (iOS 14+) * wbraid – Web to App tracking (iOS 14+)
How long are UTM parameters stored?
UTM data is stored in cookies for the duration you specify in settings (1-365 days, default is 7 days).
Does this work with other form plugins besides Gravity Forms?
The COURIER system is specifically designed for Gravity Forms webhooks. The COLLECTOR (cookie tracking) works with any form plugin, but automatic webhook injection requires Gravity Forms.
Is the plugin GDPR compliant?
The plugin uses functional cookies necessary for tracking campaign attribution. You should include UTM tracking in your privacy policy and cookie notice.
Can I exclude certain webhooks from UTM injection?
Yes! In the plugin settings, add webhook URLs (one per line) to the “Excluded Webhook URLs” field. This is useful for internal notifications or universal webhooks.
Does this affect site performance?
No! The plugin is optimized for performance with minimal JavaScript and efficient server-side processing.
Blog Post Conversion Tracker: why do some visitors have no journey?
The tracker runs in the visitor’s browser, so pages must include its script: purge your page cache (and any CDN or JavaScript optimisation cache) after enabling it. Safari caps storage written by scripts (cookies and localStorage) at about 7 days, so Safari visitors who come back after a longer gap start a new journey.
Blog Post Conversion Tracker: consent mode with a GTM consent-template banner
Cookie banners built on Google Tag Manager consent templates set consent through GTM’s own API, not through window.dataLayer , so the tracker cannot see that consent. On those sites have the banner run document.dispatchEvent(new Event('bc-consent-granted')) once analytics consent is given, or use the “Consent cookie name” setting. Consent granted after a page has loaded starts tracking on the next pageview, unless the banner dispatches bc-consent-granted .
Only use “Consent cookie name” for a cookie that holds a simple value ( true , 1 , yes , granted or allow ). Any other value counts as an explicit refusal, which stops tracking and deletes the visitor’s stored journey. Many consent platforms store a structured value (for example consentid:…,analytics:yes ); for those, leave the setting blank and rely on Google Consent Mode or the bc-consent-granted event.
Search keywords: are these the exact keywords a visitor searched?
No. Google does not share individual searches. These are the Search Console queries that sent clicks to the landing page on the visit day (give or take a day). The data is 2-3 days delayed, rare or anonymised queries are missing, and only visits from Google organic search are matched. Conversions that landed before the synced Search Console period (set by “Days of history on first sync”, at most about 16 months) are counted as out of range, not as having no query data.
Search keywords: can I see AI Overviews or AI Mode clicks separately?
No. Search Console reports them inside Web search results with no filter. Use the Ahrefs AI answer citations in the AI visibility section to see AI answer visibility.
Search keywords: how do I connect Google Search Console?
In the Google Cloud console, create or select a project and enable the Google Search Console API. Create a service account and download a JSON key for it. In Search Console, open Settings > Users and permissions and add the service account’s email address (Restricted permission is enough). Under UTM Tracker > Blog Post Conversion Tracker > Search keywords, paste the JSON key and the property ( sc-domain:example.com or https://www.example.com/ ), save, then click Test connection.
AI visibility: why are AI crawler counts low or unverified?
Hits are logged only when WordPress runs, so pages served from a page cache or CDN are missed. IP verification uses the connecting IP address, so behind a proxy or CDN hits show as unverified. No IP addresses are stored.
AI visibility: when is llms.txt served?
Only while “Serve /llms.txt” is on and no real llms.txt file or other plugin already provides one. It is not served while search engines are discouraged (Settings > Reading > Search engine visibility), or when the basecloud_bpct_llms_txt_allowed filter returns false, which maintenance, coming-soon or login-wall setups can use. Page descriptions come only from the SEO meta description or the post’s own excerpt, never from the post content.
Reports: why did a scheduled report arrive late?
Scheduled reports run on WP-Cron, which only fires when someone visits the site. On quiet sites, add define('DISABLE_WP_CRON', true); to wp-config.php and run wp-cron.php from a real server cron every 5-15 minutes. Each report is sent once per period at or after its send hour, and a failed delivery is retried on the next hourly runs (up to three attempts).
How accurate are the numbers?
Each source counts something different, so they never match exactly. Search Console counts clicks on Google results, Google Analytics counts the sessions its script can measure, and this plugin counts the visits its own first-party tracker sees. For organic search, Search Console clicks are usually highest, GA4 organic sessions lower, and the plugin’s organic visits often lowest. Common reasons:
- A Search Console domain property includes clicks to your other subdomains, for example a CRM or app login site, which WordPress never sees.
- Google Business Profile links with UTM tags count as a campaign in the plugin and GA4, but as Google clicks in Search Console.
- Visitors who refuse consent (when consent mode is on), block scripts or leave before the page loads are not counted, and bots are left out on purpose.
- Many apps strip the referrer, so those visits count as Direct.
- Search Console days run on US Pacific time and the data is 2-3 days behind.
As a rough guide, not a guarantee: once subdomain and tagged-link clicks are set aside, the figures are often within 20-30% of each other. Compare periods of 28 days or more. The “How it works” section in the plugin explains every number and shows a setup checklist.
Where does the AI data come from?
From three separate sources, shown separately because they measure different things:
- AI assistant visits : people who clicked a link to your site in ChatGPT, Perplexity, Gemini, Copilot, Claude or another assistant, recognised by the referrer or utm_source . These are real visits, but a minimum: many AI apps send no referrer, so those visits count as Direct.
- AI crawler hits : requests from AI bots that reach WordPress, recognised by user agent and optionally verified against the IP ranges OpenAI, Perplexity and Anthropic publish. They are split by purpose: training (for example GPTBot, ClaudeBot), search index (OAI-SearchBot, PerplexityBot) and user-triggered fetches (ChatGPT-User, Claude-User), where a person asked an assistant something and it fetched your page. Verified and unverified hits are shown separately. Posts and pages are logged under their own address, other requests under fixed labels such as /feed/ or /other/, and missing pages under the address asked for (with daily row limits). Bots are not people, and pages served from a page cache or CDN are not logged.
- AI answer citations : from the Ahrefs API (Brand Radar, optional), a sample of AI answers that cited your pages.
Clicks from Google AI Overviews and AI Mode are part of Google organic search. Neither Search Console nor this plugin can separate them.
How does WhatsApp tracking work without the customer typing anything?
When a visitor clicks a WhatsApp link on your site (wa.me, api.whatsapp.com, web.whatsapp.com or whatsapp://), the plugin adds a short reference line such as “Ref: BC-7K2M9Q” to the pre-filled message, after your own text or after a greeting you choose, and records the click with the visitor’s source and journey. The visitor only presses Send. When your CRM or WhatsApp tool (for example