Two independent pieces: the tracking snippet (personalizes answers with product usage) and the helpdesk integration (delivers those answers where your team already works). You can use either on its own.
Add this to your product, once, ideally right after your end user is authenticated. Find your API key on your dashboard after signing up.
<script src="https://iris.orbitz.tech/iris.js" data-api-key="YOUR_API_KEY"></script>
<script>
Iris.identify(currentUser.id);
</script>
Call Iris.track anywhere a customer does something worth remembering - a failed action, a plan limit hit, a feature they tried.
Iris.track('attempted_csv_export', { rows: 500, plan: 'free' });
Iris.track('viewed_pricing_page');
These get folded into context - not treated as a substitute for real documentation - the next time this user asks a support question.
If you're building your own support UI rather than using a helpdesk integration, call Iris.ask directly.
const { answer, should_escalate } = await Iris.ask('Why did my export fail?');
v1 ships as a Zendesk integration via App Framework + REST APIs - no separate widget, no migration. In Zendesk, go to Admin Center > Apps, install Iris, and point a trigger's webhook at your Iris instance:
POST https://iris.orbitz.tech/webhooks/zendesk
Headers: X-Zendesk-Webhook-Signature, X-Zendesk-Webhook-Signature-Timestamp
The webhook fails closed - nothing is accepted until IRIS_ZENDESK_WEBHOOK_SECRET is set to match your trigger's signing secret.