← Back to blog

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

FieldRequiredMaps to
EmailyesNotion owner / contact
Listing IDoptionalNotion relation
RC front image/PDFyes*multipart front
RC back image/PDFrecommendedmultipart 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 present

Do 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 propertyJSON
Title (Registration)data.registration_number
Chassisdata.chassis_number
Enginedata.engine_number
Makedata.manufacturer
Modeldata.model
Classdata.vehicle_class
Owner on RCdata.owner_name
Fueldata.fuel_type
Registered ondata.registration_date
Insurance untildata.insurance_valid_upto
Fitness untildata.fitness_valid_upto
Extract sourcedata.source
Seller emailform email
Listing IDform
QC statusselect

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_ok

Optional 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:

  1. Search database where Registration equals registration_number.
  2. If found → Update chassis/engine/QC (seller may re-upload).
  3. If not → Create.

Avoid duplicate listings for the same RC when forms are retried.

Step 7: Seller notification

Email or form follow-up:

QC statusMessage
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 error and 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

  1. Front+back of a sample RC → chassis and engine non-null → identifiers_ok.
  2. Front only when identifiers are on back → needs_rc_other_side.
  3. Back only → still valid API call; confirm Registration if present on back.
  4. 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:

  1. Form sends listing_id
  2. After Cryvis, Notion → Update the Listing page: set relation to the Vehicles page, copy registration_number onto the listing title suffix
  3. Listing status → rc_received or rc_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

EndpointParts
Passportfirst_page, last_page (both required)
Indian Vehicle RCfront and/or back (at least one)

Copy-pasting a passport Make module into an RC scenario is a common 400. Rename the parts.

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.