Event Types
Smartcar webhooks deliver three types of events:VERIFY
One-time challenge to verify your callback URL
VEHICLE_STATE
Fired when any monitored signal changes value
VEHICLE_ERROR
Fired when signal retrieval fails or enters error state
Event Envelope Structure
All webhook payloads follow this consistent structure:Event Envelope
Common Fields
All events include these fields:Unique identifier for this event. Use this for deduplication to prevent processing the same event twice.Important: The
eventId remains the same across delivery retries. Use this to implement idempotency.The type of event:
VERIFY, VEHICLE_STATE, or VEHICLE_ERROR.Use this field to route events to appropriate handlers in your application.The Smartcar vehicle ID this event relates to.Note: Not present in
VERIFY events, which are webhook-level (not vehicle-specific).Event-specific data. The structure varies by
eventType:- VERIFY: Contains a
challengestring to hash and return - VEHICLE_STATE: Contains all signals configured in your webhook subscription
- VEHICLE_ERROR: Contains error details and affected signals
data schemas.Metadata about the webhook delivery.
Event Delivery Guarantees
All webhook events follow these delivery characteristics:At-Least-Once Delivery
At-Least-Once Delivery
Events may be delivered more than once due to retries. Always use the
eventId field for deduplication to ensure you process each unique event exactly once.Why this happens:- Network failures
- Your endpoint returning non-2xx status codes
- Timeout before your endpoint responds
No Ordering Guarantees
No Ordering Guarantees
Events are not guaranteed to arrive in chronological order. Concurrent deliveries or network delays can cause later events to arrive before earlier ones.Best practice: Always use timestamps to determine data freshness:
meta.deliveredAt- when Smartcar sent the webhooksignals[].meta.oemUpdatedAt- when the vehicle manufacturer updated the signalsignals[].meta.fetchedAt- when Smartcar retrieved the signal
Idempotent Event IDs
Idempotent Event IDs
The
eventId field remains constant across all retry attempts for the same event. The deliveryId changes with each retry.Implementation: Store processed eventId values for at least 7 days to handle late retries and reprocessing scenarios.Retry Policy
Retry Policy
Failed deliveries are retried up to 3 times with exponential backoff:
See Delivery Behavior for complete details.
| Attempt | Wait Time | Total Elapsed |
|---|---|---|
| 1st (initial) | 0s | 0s |
| 2nd | 25 seconds | 25 seconds |
| 3rd | 50 seconds | 1 minute 15 seconds |
| 4th (final) | 100 seconds | 2 minutes 55 seconds |
Event-Specific Documentation
VERIFY Event
Initial endpoint verification challenge
VEHICLE_STATE Event
Signal data delivery when triggers fire
VEHICLE_ERROR Event
Error notifications and resolutions

