# Campaign and Entry Patterns
## Campaign-First Pattern (Recommended)
```html
```
## Runtime User Context Refresh
```javascript
window.zoomCampaignSdkConfig = {
env: 'us01',
apikey: 'YOUR_API_KEY',
firstName: 'Ada',
email: 'ada@example.com'
};
window.addEventListener('zoomCampaignSdk:ready', async () => {
if (window.zoomCampaignSdk.waitForReady) {
await window.zoomCampaignSdk.waitForReady();
}
window.zoomCampaignSdk.updateUserContext();
});
```
## Entry ID Fallback Pattern
Use entry ID only when your flow requires pre-chat data collection that cannot be handled in campaign configuration.