# Umami Analytics Quick Reference
## Setup Checklist
- [ ] Add `UMAMI_WEBSITE_ID` to `.env` file
- [ ] Verify `UmamiScript` is in your layout
- [ ] Verify `AnalyticsProvider` is in your layout
- [ ] Test in development mode
- [ ] Check Umami dashboard for data
## Environment Variables
```bash
# Required
UMAMI_WEBSITE_ID=59a7db94-0100-4c7e-98ef-99f45b17f9c3
# Optional (defaults to https://analytics.infra.mintel.me/script.js)
NEXT_PUBLIC_UMAMI_SCRIPT_URL=https://analytics.infra.mintel.me/script.js
```
## Quick Usage Examples
### Track an Event
```tsx
'use client';
import { useAnalytics } from '@/components/analytics/useAnalytics';
import { AnalyticsEvents } from '@/components/analytics/analytics-events';
function MyComponent() {
const { trackEvent } = useAnalytics();
const handleClick = () => {
trackEvent(AnalyticsEvents.BUTTON_CLICK, {
button_id: 'my-button',
page: 'homepage',
});
};
return ;
}
```
### Track a Pageview
```tsx
'use client';
import { useAnalytics } from '@/components/analytics/useAnalytics';
function MyComponent() {
const { trackPageview } = useAnalytics();
const navigate = () => {
trackPageview('/custom-path');
// Navigate...
};
return ;
}
```
### Track E-commerce Events
```tsx
'use client';
import { useAnalytics } from '@/components/analytics/useAnalytics';
import { AnalyticsEvents } from '@/components/analytics/analytics-events';
function ProductCard({ product }) {
const { trackEvent } = useAnalytics();
const addToCart = () => {
trackEvent(AnalyticsEvents.PRODUCT_ADD_TO_CART, {
product_id: product.id,
product_name: product.name,
price: product.price,
});
};
return ;
}
```
## Common Events
| Event | When to Use | Example Properties |
| --------------------- | ------------------- | ------------------------------------------------- |
| `pageview` | Page loads | `{ url: '/products/123' }` |
| `button_click` | Button clicked | `{ button_id: 'cta', page: 'homepage' }` |
| `form_submit` | Form submitted | `{ form_id: 'contact', form_name: 'Contact Us' }` |
| `product_view` | Product page viewed | `{ product_id: '123', price: 99.99 }` |
| `product_add_to_cart` | Add to cart | `{ product_id: '123', quantity: 1 }` |
| `search` | Search performed | `{ search_query: 'cable', results: 42 }` |
| `user_login` | User logged in | `{ user_email: 'user@example.com' }` |
| `error` | Error occurred | `{ error_message: 'Something went wrong' }` |
## Testing
### Development Mode
In development, you'll see console logs:
```
[Umami] Tracked event: button_click { button_id: 'my-button' }
[Umami] Tracked pageview: /products/123
```
### Disable Analytics (Development)
```bash
# .env.local
# UMAMI_WEBSITE_ID=
```
## Troubleshooting
### Analytics Not Working?
1. **Check environment variables:**
```bash
echo $UMAMI_WEBSITE_ID
```
2. **Verify script is loading:**
- Open DevTools → Network tab
- Look for `script.js` request
- Check Console for errors
3. **Check Umami dashboard:**
- Log into Umami
- Verify website ID matches
- Check if data is being received
### Common Issues
| Issue | Solution |
| ------------------- | ----------------------------------- |
| No data in Umami | Check website ID and script URL |
| Events not tracking | Verify `useAnalytics` hook is used |
| Script not loading | Check network connection, CORS |
| Wrong data | Verify event properties are correct |
## Performance Tips
1. **Use `useCallback` for event handlers** to prevent unnecessary re-renders
2. **Debounce high-frequency events** (like search input)
3. **Don't track every interaction** - focus on meaningful events
4. **Use environment variables** to disable analytics in development
## Privacy & Compliance
- ✅ Don't track PII (personally identifiable information)
- ✅ Don't track sensitive data (passwords, credit cards)
- ✅ Follow GDPR and other privacy regulations
- ✅ Use anonymized IDs where possible
- ✅ Provide cookie consent if required
## Next Steps
1. Read [`README.md`](README.md) for detailed documentation
2. Check [`EXAMPLES.md`](EXAMPLES.md) for more use cases
3. Review [`analytics-events.ts`](analytics-events.ts) for event definitions
4. Explore [`useAnalytics.ts`](useAnalytics.ts) for the hook implementation