--- name: optimizely-web description: Optimizely Web (snippet-based) patterns --- # Optimizely Web ## Overview This skill covers Optimizely Web (snippet-based) patterns for client-side experimentation. ## Snippet Integration ### Basic Setup ```html ``` ### Async Loading (Recommended) ```html ``` ## Anti-Flicker Handling ### CSS-Based Anti-Flicker ```html ``` ## Custom JavaScript ### Activate Experiment ```javascript window.optimizely = window.optimizely || []; window.optimizely.push(['activate', 'experiment_id']); ``` ### Track Event ```javascript window.optimizely.push({ type: 'event', eventName: 'purchase_completed', tags: { revenue: 9900, currency: 'USD' } }); ``` ### Get Variation ```javascript var state = window.optimizely.get('state'); var experimentId = 'EXPERIMENT_ID'; var variationId = state.getVariationMap()[experimentId]; ``` ### Check Feature Flag ```javascript var state = window.optimizely.get('state'); var isEnabled = state.getDecisionString({ campaignId: 'CAMPAIGN_ID', experimentId: 'EXPERIMENT_ID' }); ``` ## Page Targeting ### URL Targeting Helpers ```javascript // Custom activation for SPA window.optimizely.push({ type: 'activate' }); // After route change function onRouteChange(newPath) { window.optimizely.push({ type: 'page', pageName: newPath }); } ``` ## Custom Attributes ### Set Visitor Attributes ```javascript window.optimizely.push({ type: 'user', attributes: { membershipTier: 'premium', country: 'US', isLoggedIn: true } }); ``` ## Best Practices 1. **Use async loading** to prevent blocking 2. **Implement anti-flicker** for visual experiments 3. **Track meaningful events** not page views 4. **Use activation listeners** for SPAs 5. **Set visitor attributes** early for targeting