Website custom events
This reference covers the events explicitly sent by the website outside A/B testing. Use the exact event names and property values below when filtering reports. Content-configured link names can vary between pages; the naming rules are explained below.
For experiment exposures, attribution, and the experiment-only Link Click and Button Click events, see A/B testing with PostHog and Plausible.
When each analytics tool receives events
Section titled “When each analytics tool receives events”| Destination | Conditions |
|---|---|
| Plausible | Enabled for the published website and suppressed in Storyblok draft/preview mode. These events do not wait for marketing consent. Early calls can queue while the script loads. |
| PostHog | Requires a configured project and an initialized analytics connection. Events can be sent before marketing consent using memory-only storage. Consent allows persistent cookie/localStorage storage; withdrawal resets the identity and returns to memory-only storage. Interactions before initialization are not queued for later delivery. |
| Google Tag Manager (GTM) | Requires a configured container. The website’s consent integration controls GTM loading and tag consent. Link and pricing handlers themselves do not check consent before calling the data layer; downstream delivery depends on the loaded container and its tag configuration. |
| ChatGPT Ads | Enabled for the published website. Measurement depends on marketing consent and the pixel being available. Form and booking conversions also require the relevant Storyblok opt-in, described below. |
A tracking call is not proof that the analytics service received it: blocked scripts, failed connections, or unavailable widgets can leave gaps. The events here describe website behavior; additional tags configured inside GTM or tracking performed by embedded services are managed separately.
CTA and navigation clicks
Section titled “CTA and navigation clicks”| Destination | Event name | Trigger |
|---|---|---|
| Plausible | CTA Click |
Click on a supported link with a tracking location and no custom Plausible event name. |
| PostHog | cta_click |
The same click, subject to PostHog readiness. |
| Plausible | The link’s configured custom event name | Click on a Storyblok link with a custom Plausible event name, even if it has no tracking location. This replaces CTA Click for that click. |
| PostHog | The custom name converted to lowercase words separated by underscores | The same custom-named click. For example, Book A Demo becomes book_a_demo. An unusable name falls back to cta_click. |
| ChatGPT Ads | custom |
The same tracked CTA click, with custom_event_name=cta_click or the normalized custom name. |
| GTM | The link’s configured GTM event name | Click on a Storyblok link with a GTM event name. This is independent of whether it also has a Plausible custom name. |
Tracked locations include hero buttons, call-to-action sections, the promo banner, header navigation, and footer menu links. A generic link without a tracking location or custom name does not automatically send CTA Click just because it appears on a page.
These events describe activation of the link, including middle-click activation handled by the link component. They do not confirm that the destination loaded, a document downloaded, or a meeting was booked. A link that scrolls to the demo section is still a click, not a booking.
Plausible and PostHog receive location and label where available. Locations include hero-full, hero-split, hero-single-landscape, hero-single-portrait, call-to-action, promo-banner, header-menu, header-menu-mobile, and footer-menu. Labels describe the link text; custom links without supplied context can have empty values.
GTM link events include page_title, page_location, page_path, and locale where supplied. ChatGPT Ads CTA events carry the custom event name rather than the Plausible/PostHog label and location properties. Its custom names are normalized and limited to 64 characters; invalid or reserved names fall back to cta_click.
Forms, newsletter signups, and meeting bookings
Section titled “Forms, newsletter signups, and meeting bookings”All supported form successes and embedded meeting bookings share one event name:
- Plausible:
HubSpot Form Submitted - PostHog:
hubspot_form_submitted
Use category and location to distinguish their purpose:
| Website placement | category |
location |
When it fires |
|---|---|---|---|
| HubSpot form section, either supported embed version | The form’s Conversion category: ebook-download (default), webinar-signup or form-submission |
hubspot-form |
HubSpot reports a successful submission for the configured form ID. |
| Footer newsletter form | newsletter |
footer-newsletter |
HubSpot reports a successful newsletter form submission. |
| Embedded meeting scheduler | demo-booked |
hubspot-schedule |
The scheduler confirms a successful booking. |
| Segment-specific embedded meeting scheduler | demo-booked |
segment-hubspot-schedule |
The selected scheduler confirms a successful booking. |
The HubSpot form component reports the category chosen in its Conversion category field. It defaults to ebook-download, so set it on every form that is not a download. A demo request submitted through that component is never a demo-booked event. Categories are assigned in Storyblok, not inferred from the visitor’s answers.
Form tracking listens for HubSpot’s success signal and matches the form ID. Merely viewing the form, typing into it, clicking Submit, or receiving a validation error does not fire this event. For the ebook category, the event confirms submission; it does not verify that the visitor opened or downloaded the ebook file.
Meeting tracking requires a successful-booking message from the widget’s own iframe on an allowed HubSpot origin. Opening the scheduler, choosing a time, scrolling to it, or receiving an iframe resize message does not count. A booking on an external HubSpot page is not automatically reported by these website listeners.
Properties attached to successful conversions
Section titled “Properties attached to successful conversions”| Property | Availability |
|---|---|
category |
Distinguishes the conversion categories above. |
location |
Identifies the website placement. |
label |
The section title or footer newsletter title, when supplied. |
formId, portalId |
Included for form widgets. |
meetingSlug |
Included for meeting widgets when the scheduler address can be parsed. |
cta_id, source_cta_id |
May accompany tracked events when applicable click context is available; see the A/B guide for attribution. |
These custom event payloads do not copy submitted names, email addresses, or form answers. HubSpot’s own handling of the submitted form is separate.
The Track ChatGPT Ads conversion setting does not disable these Plausible or PostHog events.
Pricing selections sent to GTM
Section titled “Pricing selections sent to GTM”| GTM event | Trigger | Additional property |
|---|---|---|
pricing-bill-year |
Click the yearly billing option in the tracked pricing controls. | payment_interval=yearly |
pricing-bill-month |
Click the monthly billing option in the tracked pricing controls. | payment_interval=monthly |
pricing-venue-studio |
Click the studios option in the tracked pricing page segment picker. | The selected segment is represented by the event name. |
pricing-venue-ball |
Click the sports-centres option in that picker. | The selected segment is represented by the event name. |
Each includes page_title, page_location, page_path, and locale. Clicking an already-selected option also calls the tracking handler. Initial defaults or a segment restored from the URL do not themselves fire these selection events.
These named events are sent to GTM; the pricing handlers do not mirror them to Plausible or PostHog. If a picker sits inside an A/B test, the separate experiment button tracking can record that interaction under the A/B event scheme. Neither kind of click confirms a purchase or subscription.
ChatGPT Ads conversions
Section titled “ChatGPT Ads conversions”| Event | Trigger and required setting |
|---|---|
lead_created |
Successful HubSpot Form submission with category=ebook-download or category=form-submission, with Track ChatGPT Ads conversion switched on for that form. |
registration_completed |
Successful footer newsletter submission, or HubSpot Form submission with category=webinar-signup, with Track ChatGPT Ads conversion switched on for that footer or form. |
appointment_scheduled |
Confirmed embedded meeting booking, with Track ChatGPT Ads conversion switched on for that meeting component. |
appointment_scheduled |
Visit to a page with Track ChatGPT Ads appointment switched on. This records the configured page visit without verifying a prior submission or booking. |
Both settings default to off. Form and booking conversion events require marketing consent and pixel readiness at the time of success; they are not replayed if consent arrives later.
The page setting waits while the visitor remains on that page. If consent arrives later, it sends once for that visit. Leaving first discards the pending event; a reload or later visit can count again. Use the form/booking trigger or the destination-page trigger for one conversion journey to avoid counting it twice.
CTA custom events are independent of these conversion checkboxes. See ChatGPT Ads tracking for the editor workflow and consent details.
Page views, for context
Section titled “Page views, for context”Page views are separate from conversion events:
- Plausible handles ordinary page views through its website integration.
- PostHog automatic page-view capture is disabled in this integration.
- The website explicitly sends GTM
page_viewon a detected pathname change after marketing consent. It skips the first observed pathname, leaving initial-load handling to GTM. The payload includes page title, URL, path, locale, market/region (content_group1), and customer segment (content_group2) when available. - ChatGPT Ads receives
page_viewedfor the first tracked page after marketing consent and subsequent detected pathname changes. It is independent of the two conversion checkboxes.
A query-string or same-page anchor change alone is not a new pathname change for the explicit route tracker.
Choose the right report
Section titled “Choose the right report”For overall confirmed meeting bookings, filter HubSpot Form Submitted in Plausible or hubspot_form_submitted in PostHog by category=demo-booked. For newsletter submissions, use category=newsletter; for HubSpot form submissions, use category=ebook-download, category=webinar-signup or category=form-submission.
Keep click counts separate from submission and booking counts. Custom-named CTAs replace the default CTA event, so include the relevant custom names when reporting all CTAs. For the impact of a content test, use the scoped events and funnels in the A/B guide rather than adding attribution records to overall conversion totals.