Initialize the SDK
The first rule every site needs — load Zeotap before any other action fires.
Rule: Initialize Zeotap
- Events: Core → Library Loaded (Page Top)
- Conditions: (none)
- Actions:
- Extension: Zeotap Collect → Action Type: Load Zeotap SDK
Save and publish. The zeotap.min.js script loads on every page; subsequent rules can call other Zeotap actions.
Track a page view
Rule: Track Page View
- Events: Core → Library Loaded (Page Top), or your direct call event
- Actions:
- Zeotap Collect → Track Event → Page View
- Key-value pairs:
name → {{Page Name}}
category → {{Page Category}}
When _satellite.track('direct_call_event', { extra: 'metadata' }) runs, the rule fires and merges its configured key-value pairs with the call’s metadata.
Track a custom event (add to cart)
Rule: Add to Cart
- Events: Direct Call → identifier matches
add_to_cart
- Actions:
- Zeotap Collect → Track Event → Custom Event
- Name →
add_to_cart
- Key-value pairs:
productID → {{Product ID}}
quantity → {{Quantity}}
price → {{Price}}
In your site code:
_satellite.track('add_to_cart', {
productID: 'sku_123',
quantity: 1,
price: 29.99
});
Capture user identities on login
Rule: User Login
- Events: Direct Call → identifier matches
login
- Actions:
- Zeotap Collect → Sync User Identities
- Key-value pairs:
email → {{User Email}}
cellno_cc → {{User Phone}}
loginid → {{User Login ID}}
crmID → {{User CRM ID}}
With the extension’s PII Hashing setting PIIs are raw and must be hashed by Zeotap, the extension hashes email, cellno_cc, and loginid before sending. crmID is a custom identity and is sent as-is.
In your site code:
_satellite.track('login', {
email: 'user@example.com',
phone: '49 1234567890',
loginid: 'crm_42',
crmID: 'crm_42'
});
Capture user attributes
Rule: User Profile Updated
- Events: Direct Call → identifier matches
profile_update
- Actions:
- Zeotap Collect → Track Event → User Attributes
- Key-value pairs:
age → {{User Age}}
gender → {{User Gender}}
plan → {{User Plan}}
Set custom consent
When Consent Method = Custom on the extension config, you must wire up a Set Custom Consent rule.
Rule: User Sets Consent
- Events: Direct Call → identifier matches
consent_set
- Actions:
- Zeotap Collect → Set Custom Consent
- Fields:
track → {{Consent Track}}
identify → {{Consent Identify}}
cookieSync → {{Consent Cookie Sync}}
In your site code, when the user makes a choice:
_satellite.track('consent_set', {
track: true,
identify: true,
cookieSync: false
});
Set brand consent
Brand consent works under any consent method. Add a Set Custom Consent action with brand-specific keys:
- Zeotap Collect → Set Custom Consent
- Fields:
zeotapVendorConsent → {{Brand Consent Zeotap}}
xyzVendorConsent → {{Brand Consent XYZ}}
Unset identities on logout
There’s no dedicated logout action — use Sync User Identities with the special pattern your runtime expects. Alternatively, redirect the user through a new tag property build with cleared identity Data Elements. Talk to your Zeotap POC for the recommended pattern in your environment.
Common event payloads
These are conceptual examples — the actual rule structure depends on your direct call setup and Data Elements.
Product view
_satellite.track('view_product', {
productID: 'sku_123',
productName: 'watch'
});
Rule: Track Event → Custom Event, Name view_product, key-value pairs from {{Product ID}} and {{Product Name}}.
Purchase
_satellite.track('purchase', {
orderID: 'order_456',
total: 89.97,
currency: 'EUR'
});
Rule: Track Event → Custom Event, Name purchase, key-value pairs from {{Order ID}}, {{Order Total}}, {{Currency}}.Last modified on June 22, 2026