Basic Requirements
Your webhook endpoint must meet these requirements:- Accept POST requests - Smartcar sends all webhooks as HTTP POST requests
- Return 2xx status code - Any status code from 200-299 acknowledges successful receipt
- Use HTTPS - Your endpoint must use HTTPS with a valid SSL certificate
- Respond within 15 seconds - Return a status code before the timeout window
- Publicly accessible - Your endpoint must be accessible from the public internet
Quick Start Examples
Here are minimal webhook receivers that handle the requiredVERIFY event and acknowledge all other events:
Any 2xx works: You can return 200, 201, 202, 204, or any other 2xx status code. Smartcar treats all 2xx responses as successful delivery.
What Happens After Verification
After your endpoint successfully responds to theVERIFY event, Smartcar will begin delivering VEHICLE_STATE and VEHICLE_ERROR events for subscribed vehicles.
Understanding payloads: For detailed payload structure, field definitions, and event-specific schemas, see the Event Reference Overview.
Next Steps
Once your endpoint is verified and receiving webhooks, continue implementing your integration with these guides:Payload Verification
Verify all payloads are authentic using the SC-Signature header
Event Reference
Understand VEHICLE_STATE, VEHICLE_ERROR, and VERIFY event structures
Best Practices
Implement idempotency, queuing, monitoring, and error handling
Delivery Behavior
Learn about retry policies, timeouts, and ordering guarantees
FAQ
Why isn't my webhook receiving vehicle data?
Why isn't my webhook receiving vehicle data?
Your endpoint must successfully respond to the
VERIFY event before Smartcar delivers any VEHICLE_STATE or VEHICLE_ERROR events. Check the Dashboard to confirm your webhook shows “Verified” status.How do I test locally?
How do I test locally?
Use ngrok or similar to expose your local server:Then use the ngrok URL in Dashboard as your callback URI.
Note that you will have to re-verify the webhook after changing the callback URI.
What about signature verification?
What about signature verification?
Always verify the
SC-Signature header to ensure payloads are authentic. See Payload Verification.Should I process webhooks synchronously?
Should I process webhooks synchronously?
No. Return 200 immediately and process asynchronously using a queue. This prevents timeouts and retry storms. See Architecture Best Practices.

