Skip to content

Quill Integration

WriteTrack includes a first-party Quill module, compatible with Quill v1.3+ and tested against v2.0.

Install WriteTrack alongside Quill:

Terminal window
npm i writetrack quill
import Quill from 'quill';
import { WriteTrackModule } from 'writetrack/quill';
// Register the module before creating the editor
Quill.register('modules/writetrack', WriteTrackModule);
const quill = new Quill('#editor', {
theme: 'snow',
modules: {
writetrack: {
license: 'your-license-key',
},
},
});
// Access WriteTrack data when needed
const mod = quill.getModule('writetrack');
const data = mod.tracker.getData();

Pass options via the writetrack module config:

const quill = new Quill('#editor', {
theme: 'snow',
modules: {
writetrack: {
license: 'your-license-key',
userId: 'user-123',
contentId: 'document-456',
metadata: { formName: 'signup' },
autoStart: true, // default
},
},
});
OptionTypeDefaultDescription
licensestringundefinedWriteTrack license key
userIdstringundefinedUser identifier included in metadata
contentIdstringundefinedContent identifier included in metadata
metadataRecord<string, unknown>undefinedAdditional metadata
autoStartbooleantrueStart tracking when module is created
wasmUrlstringundefinedURL to WASM binary for analysis
persistbooleanfalseEnable IndexedDB session persistence (requires contentId)

Retrieve the module via Quill’s module system:

const mod = quill.getModule('writetrack');
// Get the tracker instance
const tracker = mod.tracker;
// Get typing data
const data = tracker.getData();
// Check tracking status
const isTracking = mod.isTracking;

If you prefer not to use the module, you can attach WriteTrack directly to Quill’s editable element:

import WriteTrack from 'writetrack';
import Quill from 'quill';
const quill = new Quill('#editor', { theme: 'snow' });
const tracker = new WriteTrack({
target: quill.root,
license: 'your-license-key',
});
tracker.start();

Quill does not have a built-in destroy lifecycle, so the WriteTrack module’s destroy() method must be called manually before unmounting the editor:

const mod = quill.getModule('writetrack');
mod.destroy();
import type { WriteTrackModuleOptions } from 'writetrack/quill';