Automatic and custom events
Open PixelPair → Events. Each automatic event has an overall switch and separate Meta, GA4 and GTM mappings. Meta's server-event switch controls CAPI for that event; global CAPI must also be enabled. Set event names and optional scalar parameters per platform. Disabling a context field removes it even when an event override supplies that field. Changes require a page-cache purge.
Automatic events include page view, search, successful supported form submissions, signup, login, comment, file download, scroll depth, visible time on page, 404, and outbound links. Outbound links and form-field capture default off. Scroll defaults to 25/50/75/90 percent; visible time defaults to 30/60/120 seconds. Timers pause while hidden or when no destination is eligible. Each threshold fires once per document. A rule/event sent to one permitted destination is not replayed to another destination that grants consent later.
CF7, WPForms, Gravity Forms, Fluent Forms, Ninja Forms, Forminator, Formidable and Elementor Forms listen to successful submission APIs. PixelPair does not load jQuery or Backbone; it uses them only when the form plugin already supplies them. Unsupported forms use a DOM submit fallback, which proves a submit attempt, not server acceptance. Search, login/password, comment and commerce forms are excluded from that fallback. Form params contain IDs/titles, never field values. Opt-in email/phone capture additionally requires advanced matching, CAPI and marketing consent; values are hashed locally. Missing Web Crypto yields no matching data.
Confirmed WordPress signup/login/comment hooks create a random locator and a ten-minute nonautoloaded action flag only after consent is established. The locator is HttpOnly; a separate boolean hint allows a consented browser to fetch and atomically consume it. Logged-in actions are bound to the verified WordPress actor; guest signup/comment flags are bearer values. The form bridge attaches a bounded current marketing/statistics decision to same-origin POST forms. Core login/registration pages load that bridge without a pixel or event loader. Only a successful WordPress action hook consumes the declaration; it cannot claim a successful action or choose an actor. A resolved WP Consent API server decision remains authoritative. A CMP that exposes no decision on the form page needs a server consent filter or WP Consent API; unresolved consent creates no flag. Spam/trash comments are ignored; moderated comments count as submitted comments.
Create a custom event, choose triggers, conditions and per-platform payloads, then activate it. Duplicate creates a paused copy. Delete requires confirmation. Triggers combine with OR; conditions combine with AND. Every rule fires once per document. Optional once-per-session behavior uses sessionStorage and falls back to once per document when storage is blocked. Page-view counts use the browser tab's session, not a cross-tab or cross-device session.
Supported triggers: exact/contains/starts-with/bounded-regex URL; homepage; post type; post IDs; taxonomy terms; link URL; CSS click/hover/visibility; scroll depth; visible time; session page count; URL parameter presence/value. Visit triggers support a visible-time delay. Conditions include device viewport, verified user role or logged-out state, URL inclusion/exclusion, UTM source/medium/campaign and referrer domain. Role conditions require an uncached authenticated context lookup, even in fast mode; failure never becomes a guessed role.
Selectors support tags, IDs, classes, descendants, child combinators and comma lists (256 characters maximum); pseudo selectors and attributes are rejected. Visibility uses IntersectionObserver for matching elements present when rules initialize. Dynamically inserted elements still work with delegated click/hover/link rules. URL regexes support literals, anchors, dots and at most one .*; groups, alternation, character classes, backreferences and nested/unbounded quantifiers are rejected to keep evaluation bounded. There is no eval or arbitrary code field.
Parameter tokens: {post_title}, {post_id}, {post_type}, {page_url} and {url_param:key}. Tokens replace values only. The {woo_cart_total} token resolves the current consented WooCommerce cart total. Rules allow at most 20 triggers, 20 conditions and 25 scalar parameters per platform; up to 100 stored rules. Final composed values, including expanded tokens, are limited to 48 scalar fields, 256 Unicode code points per string and 11,000 bytes of parameter JSON; long strings are shortened to fit before either browser or server dispatch. Event names begin with a letter and contain at most 40 letters/digits/underscores. Reserved identity/routing/prototype keys are rejected. The editor shows a live JSON preview.
Page metadata is read from WordPress's queried post and already-primed term cache without additional render queries. Themes that suppress term-cache priming may omit terms and fail closed on term triggers. Attribution/counts are created in session storage after consent and eligibility. Cached HTML contains no visitor roles, identities, session counts or one-time flags. The public collector still treats browser events as untrusted claims: origin/schema/rate/actor and configured mapping checks prevent choosing credentials or attaching another account, but cannot prove a human actually clicked.
Meta browser and server copies share the event ID and configured event name. The collector compares the actual browser name with the current mapping and rejects stale names with HTTP 409; it never remaps an old browser event into a new name. Pausing/deleting a rule, disabling its CAPI mapping, changing its event name or disabling the destination cancels pending delivery. Purge caches to stop stale browser-only rules. GTM pushes pixelpair_<configured_name> with pixelpair.event_id, pixelpair.params and an ecommerce clear. The exported starter container covers automatic GA4 mappings; create corresponding tags manually for custom rules and verify import/Preview before publishing.
Verification scope
Automated tests cover documented provider success API fixtures, all trigger/condition classes, denial, storage failures, mapping validation and a real WordPress editor/collector browser flow. They do not establish compatibility with every commercial plugin version. Live Meta Events Manager/Pixel Helper, GA4 DebugView, GTM Preview/container import and installed commercial form/CMP checks remain pending.
Provider references: CF7 DOM events, WPForms AJAX success, Gravity confirmation, Formidable submission, Ninja response channel, WP Consent API source.