Online Chat Integration (Zendesk Chat) on Website
Zendesk Chat (now part of Zendesk Suite as Messaging) is a chat platform for customer support integrated with helpdesk. Especially convenient if company already uses Zendesk for ticket processing — chat and tickets merge into single agent workdesk.
Web Widget Installation (Classic)
<script id="ze-snippet"
src="https://static.zdassets.com/ekr/snippet.js?key=YOUR_KEY">
</script>
Zendesk Web Widget Installation (New Messaging)
<script id="ze-snippet"
src="https://static.zdassets.com/ekr/snippet.js?key=YOUR_KEY">
</script>
<script>
zE('messenger:set', 'locale', 'en');
</script>
User Identification
// Classic Widget
zE(function() {
zE.identify({
name: user.name,
email: user.email
});
});
// New Messenger with JWT
zE('messenger', 'loginUser', function(callback) {
// Request JWT from server
fetch('/zendesk-token').then(r => r.json()).then(data => {
callback(data.token);
});
});
JWT for Authentication
// Generate JWT for Zendesk
use Firebase\JWT\JWT;
$payload = [
'iss' => 'yourcompany',
'iat' => time(),
'jti' => uniqid(),
'name' => $user->name,
'email' => $user->email,
'external_id' => (string)$user->id
];
$token = JWT::encode($payload, env('ZENDESK_JWT_SECRET'), 'HS256');
Zendesk API: Creating Ticket from Form
Http::withBasicAuth($email . '/token', $apiKey)
->post("https://yourcompany.zendesk.com/api/v2/tickets", [
'ticket' => [
'subject' => $subject,
'comment' => ['body' => $message],
'requester' => ['name' => $name, 'email' => $userEmail],
'priority' => 'normal',
'tags' => ['website', 'contact-form']
]
]);
Setup timeframe: 1 business day with JWT authentication and basic setup.







