Widget Integration Guide
A comprehensive guide for integrating the CuracelAuto Assessment Widget into your web applications. This widget provides a seamless iframe-based interface for vehicle assessments with support for both pre-policy and post-loss evaluations.
Installation
Option 1: UMD Script (Recommended for Simple Integration)
Add one of the following script tags to your HTML <head>
section:
Sandbox Environment (Development/Testing)
<script src="https://sandbox.d167z7gdtvvaci.amplifyapp.com/curacel-auto-widget.umd.v0.1.0.js"></script>
Production Environment
<script src="https://main.d167z7gdtvvaci.amplifyapp.com/curacel-auto-widget.umd.v0.1.0.js"></script>
Environment | URL | Use Case |
---|---|---|
Sandbox | https://sandbox.d167z7gdtvvaci.amplifyapp.com/curacel-auto-widget.umd.v0.1.0.js | Development, testing, and integration |
Production | https://main.d167z7gdtvvaci.amplifyapp.com/curacel-auto-widget.umd.v0.1.0.js | Live applications and production use |
Option 2: NPM
Coming soon!
Quick Start
Basic Implementation
// Create widget instance
const widget = CuracelAuto.createAssessmentWidget({
assessmentType: 'pre_policy',
callback: (message) => {
console.log('Widget message:', message);
if (message.type === 'curacel.assessment.submitted') {
widget.close();
}
},
profileKey: 'curacel',
transactionId: 'your-unique-transaction-id',
});
// Open the widget
widget.open();
Configuration Options
Option | Type | Required | Default | Description |
---|---|---|---|---|
profileKey | string | Yes | - | Your Curacel profile key |
transactionId | string | Yes | - | Unique transaction identifier |
assessmentType | 'pre_policy' \| 'post_loss' | Yes | - | Type of assessment to perform |
callback | (message: any) => void | Yes | - | Function to handle widget events |
container | HTMLElement | No | body | DOM element for inline widget |
height | number | No | 100 | Widget height |
heightUnit | 'vh' \| 'px' | No | 'vh' | CSS unit for height |
size | 'normal' \| 'large' | No | 'normal' | Widget width: 500px or 800px |
type | 'inline' \| 'modal' | No | 'inline' | Display mode |
Widget Events
The callback
function receives various events from the widget. Here's a comprehensive list of all supported events:
Event Type | Description |
---|---|
curacel.assessment.submitted | Assessment completed and submitted successfully |
curacel.assessment.error | An error occurred during assessment |
curacel.assessment.closed | Widget was closed by user or programmatically |
Implementation Examples
1. Modal Widget
const widget = CuracelAuto.createAssessmentWidget({
profileKey: 'curacel', // replace with you key
transactionId: 'txn-123', // replace with your unique transaction id
assessmentType: 'pre_policy',
callback: (message) => {
if (message.type === 'curacel.assessment.submitted') {
console.log('Assessment completed:', message.data);
widget.close();
} else if (message.type === 'curacel.assessment.error') {
console.error('Assessment error:', message.data.error);
} else if (message.type === 'curacel.assessment.closed') {
console.log('Widget closed');
}
},
type: 'modal',
size: 'large',
height: 90,
heightUnit: 'vh',
});
widget.open();
2. Inline Widget (Default Container)
const widget = CuracelAuto.createAssessmentWidget({
profileKey: 'curacel',
transactionId: 'txn-456',
assessmentType: 'post_loss',
callback: (message) => {
if (message.type === 'curacel.assessment.submitted') {
// Handle successful submission
const images = message.data.images;
const assessmentId = message.data.assessment_id;
// Process assessment data...
}
},
type: 'inline',
size: 'normal',
height: 60,
heightUnit: 'vh',
});
widget.open();
3. Inline Widget (Custom Container)
<div id="my-widget-container"></div>
<script>
const container = document.getElementById('my-widget-container');
const widget = CuracelAuto.createAssessmentWidget({
profileKey: 'curacel',
transactionId: 'txn-789',
assessmentType: 'pre_policy',
callback: (message) => {
// Handle all widget events
},
container,
type: 'inline',
size: 'large',
height: 80,
heightUnit: 'vh',
});
widget.open();
</script>
Reusing Widget for Multiple Transactions
You can reuse the same widget instance for multiple transactions by passing a new transactionId
to the open()
method:
// Initial transaction
widget.open('txn-001');
// Later, for a new transaction
widget.open('txn-002'); // Reuses the same widget instance
This is useful for applications where users perform multiple assessments in sequence.
Event Handling Best Practices
1. Handle All Event Types
const widget = CuracelAuto.createAssessmentWidget({
// ... other options
callback: (message) => {
switch (message.type) {
case 'curacel.assessment.submitted':
// Process successful assessment
handleAssessmentSubmission(message.data);
widget.close();
break;
case 'curacel.assessment.error':
// Handle errors gracefully
showErrorMessage(message.data.error);
break;
case 'curacel.assessment.closed':
// Clean up or show completion message
handleWidgetClose();
break;
default:
// Log unknown events for debugging
console.log('Unknown event:', message);
}
},
});
2. Error Handling
callback: (message) => {
if (message.type === 'curacel.assessment.error') {
// Show user-friendly error message
const errorMessage = message.data.error || 'An unexpected error occurred';
showNotification(errorMessage, 'error');
// Optionally retry or provide alternative actions
showRetryButton();
}
}
3. Assessment Data Processing
callback: (message) => {
if (message.type === 'curacel.assessment.submitted') {
const { images, assessment_id, transaction_id } = message.data;
// Store assessment data on your app
saveAssessmentData({
assessmentId: assessment_id,
transactionId: transaction_id,
images: images,
timestamp: message.timestamp
});
// Update UI or return control to your app
updateAssessmentStatus('completed');
// Close widget
widget.close();
}
}
Styling and Customization
Modal Widget Styling
Modal widgets automatically include:
- Semi-transparent backdrop
- Centered positioning
- Close button in top-right corner
- Responsive design
Inline Widget Styling
For inline widgets, you can customize the container as needed:
#my-widget-container {
border: 2px solid #e0e0e0;
border-radius: 12px;
padding: 20px;
background: #f9f9f9;
margin: 20px 0;
}
Troubleshooting
Common Issues
- Widget not loading: Check that the script URL is correct and accessible
- Events not received: Ensure the callback function is properly defined
- Modal not displaying: Verify that no CSS is interfering with z-index or positioning
- Camera/geolocation not working: Ensure the user has given proper permissions
- Content Security Policy: Contact support team to whitelist your domain
Debug Mode
Enable console logging to debug widget behavior:
const widget = CuracelAuto.createAssessmentWidget({
// ... options
callback: (message) => {
console.log('Widget Event:', message);
// Your event handling logic
},
});
Browser Support
The widget supports all modern browsers