Extract Vehicle Registration Data with Make.com: Form Upload to Notion
Accept Indian RC uploads from a form, extract chassis and engine numbers with Cryvis indian-vehicle-rc, and sync a Notion vehicle database.
Marketplaces and fleet marketplaces need chassis and engine numbers for listing quality — and applicants hate typing VIN-length strings. This Make.com scenario takes a form upload of an Indian RC, calls Cryvis POST /v1/documents/indian-vehicle-rc, and writes registration plus chassis_number / engine_number into Notion.
Companion posts: Drive → Sheets, Email → Airtable.
Architecture
Form (Typeform / Tally / Fillout)
- seller email
- RC front (file)
- RC back (file, optional)
|
v
Make.com
|
v
Cryvis indian-vehicle-rc
multipart front / back
|
v
Notion: Vehicles
Registration | Chassis | Engine | ...Why chassis and engine matter
collisions, refinance, and blacklist checks key off chassis_number and engine_number. RC OCR beats manual entry error rates on long alphanumerics. Cryvis returns both when visible on the uploaded side(s); if null, your form should prompt for the other side — not invent values.
Step 1: Form fields
| Field | Required | Maps to |
|---|---|---|
| yes | Notion owner / contact | |
| Listing ID | optional | Notion relation |
| RC front image/PDF | yes* | multipart front |
| RC back image/PDF | recommended | multipart back |
*At least one of front/back must reach Cryvis. Make front required in the form UX even though the API allows back-only.
Helper text: “Upload clear photos of the Registration Certificate. Back side usually has chassis/engine details.”
Step 2: Trigger Make
Typeform → Watch Responses (or webhook from Tally). Download file answers to binaries front_bin, back_bin.
Filter: at least one binary present.
Step 3: Cryvis request
POST https://api.cryvis.com/v1/documents/indian-vehicle-rc
Authorization: Bearer YOUR_API_KEY
Content-Type: multipart/form-data
front = front_bin # if present
back = back_bin # if presentDo not use file, first_page, or last_page — those belong to other Cryvis endpoints.
Docs: /docs/api/extractIndianVehicleRc · /apis/indian-vehicle-rc.
Step 4: Focused field map for Notion
Primary Notion properties for this use case:
| Notion property | JSON |
|---|---|
| Title (Registration) | data.registration_number |
| Chassis | data.chassis_number |
| Engine | data.engine_number |
| Make | data.manufacturer |
| Model | data.model |
| Class | data.vehicle_class |
| Owner on RC | data.owner_name |
| Fuel | data.fuel_type |
| Registered on | data.registration_date |
| Insurance until | data.insurance_valid_upto |
| Fitness until | data.fitness_valid_upto |
| Extract source | data.source |
| Seller email | form email |
| Listing ID | form |
| QC status | select |
Example success payload (abridged):
{
"data": {
"registration_number": "KA01AB1234",
"manufacturer": "MARUTI SUZUKI",
"model": "SWIFT",
"chassis_number": "MA3EJLF1S00123456",
"engine_number": "K12MN1234567",
"vehicle_class": "LMV",
"source": "front_and_back"
}
}Step 5: Chassis/engine QC gate
IF EMPTY(chassis_number) OR EMPTY(engine_number)
QC status = needs_rc_other_side
Notion comment / Slack to seller email workflow
ELSE
QC status = identifiers_okOptional Normalize:
chassis_number = upper(trim(chassis_number))
engine_number = upper(trim(engine_number))Still store exactly what Cryvis returned in a raw property if you need auditability.
Step 6: Upsert strategy
Notion → Create page vs search:
- Search database where Registration equals
registration_number. - If found → Update chassis/engine/QC (seller may re-upload).
- If not → Create.
Avoid duplicate listings for the same RC when forms are retried.
Step 7: Seller notification
Email or form follow-up:
| QC status | Message |
|---|---|
identifiers_ok | “We captured registration, chassis, and engine.” |
needs_rc_other_side | “Please upload the other RC side — chassis/engine missing.” |
error | “Could not read the upload; try a sharper photo (JPEG/PNG/PDF).” |
Never email the full chassis to public CC lists if your threat model includes scraping — Notion access control is enough for many teams.
Step 8: Errors
Error handler on HTTP:
- Write Notion page with QC
errorand seller email when possible - Include HTTP status in an internal-only property
- Move on — do not infinite-retry bad images
End-to-end test plan
- Front+back of a sample RC → chassis and engine non-null →
identifiers_ok. - Front only when identifiers are on back →
needs_rc_other_side. - Back only → still valid API call; confirm Registration if present on back.
- Duplicate submit same RC → single Notion page updated.
Form UX copy that reduces support tickets
Put this near the upload fields:
Upload the Registration Certificate (RC).
- Front: usually shows registration number and owner
- Back: often shows chassis and engine numbers
Clear, well-lit photos or PDF. Avoid screenshots of screenshots.If your form tool supports conditional logic, when QC later fails, send a magic-link return URL with Listing ID pre-filled so the seller only uploads the missing side.
Notion relation to Listings
If you already have a Listings database:
- Form sends
listing_id - After Cryvis, Notion → Update the Listing page: set relation to the Vehicles page, copy
registration_numberonto the listing title suffix - Listing status →
rc_receivedorrc_needs_other_side
Keep Vehicles as the system of record for chassis/engine; Listings only reference them.
Handling PDF vs image
Cryvis accepts PDF, JPEG, PNG, WebP on this endpoint. Multi-page PDFs that include insurance policies plus RC will still bill per page and may confuse extraction — ask for an RC-only upload when possible.
Credits
1 credit per image (or PDF page). Budget two credits per successful onboarding when both sides are sent.
Seller-facing status page (optional)
If you have a listing portal, webhook the QC status out of Make:
{
"listing_id": "lst_123",
"registration_number": "KA01AB1234",
"qc_status": "identifiers_ok",
"chassis_number": "MA3EJLF1S00123456",
"engine_number": "K12MN1234567"
}Omit chassis/engine from public pages if your fraud model prefers showing only “verified” badges. Notion remains internal; the portal shows booleans.
Difference from passport multipart
| Endpoint | Parts |
|---|---|
| Passport | first_page, last_page (both required) |
| Indian Vehicle RC | front and/or back (at least one) |
Copy-pasting a passport Make module into an RC scenario is a common 400. Rename the parts.
Related reading
- Extract Indian Vehicle RC (Drive/Sheets)
- Automate vehicle email processing
- Vehicle onboarding to HubSpot
- /blog/make-com
CTA
Pull chassis and engine from Indian RCs with Cryvis: /apis/indian-vehicle-rc. Docs: /docs/api/extractIndianVehicleRc. Wire your form to Make, POST front/back to https://api.cryvis.com/v1/documents/indian-vehicle-rc with Bearer auth, and gate Notion QC on data.chassis_number and data.engine_number.