Send your cards to any CRM

Recipes for Zapier and Make · cardlio 3.2 and later

cardlio can post every card you save to a web address you choose. Point that address at Zapier or Make and each new card can become a contact in HubSpot, a lead in Salesforce, a person in Pipedrive, a row in Google Sheets — or go to almost any of the thousands of apps those services connect to. No plug-in to install, nothing extra to buy from us, and cardlio needs no account.

The webhook itself costs nothing extra in cardlio. Zapier and Make have their own free and paid plans; a simple two-step Zap or Make scenario usually fits a free plan.

1. In cardlio

  1. Open Settings → CRM on the Mac, or Settings on iPhone and iPad, and find Send new cards to a webhook.
  2. Paste the address Zapier or Make gives you (below) and switch the toggle on.
  3. Tap Send test. cardlio posts a made-up contact — never one of yours — so you can map the fields before any real card goes out.

From then on every card you save is posted once, as it is saved. Switching the webhook on does not send your existing library. The card photo is never sent.

2a. With Zapier

  1. In Zapier, create a Zap. For the trigger choose Webhooks by Zapier and the event Catch Hook. Copy the URL it shows (it starts with https://hooks.zapier.com/hooks/catch/) into cardlio.
  2. Tap Send test in cardlio, then Test trigger in Zapier. It finds the test contact, “Wei Ming Tan, Meridian Shipping”, with every field listed.
  3. Add a Filter step: Only continue if Is Test → (Boolean) Is false. Your test contact then never reaches your CRM.
  4. Add the action for your system and map the fields — see the tables below. Turn the Zap on.

2b. With Make

  1. In Make, create a scenario. Add the Webhooks app, trigger Custom webhook, click Add, name it “cardlio”, and copy the address into cardlio.
  2. While Make shows “waiting for data”, tap Send test in cardlio. Make reports Successfully determined and now knows every field.
  3. Between the webhook and the next module, set a filter: isTest → Equal to → false.
  4. Add the module for your system and map the fields — see below. Switch scheduling to Immediately and turn the scenario on.

Two fields are lists: emails and leadInterests. In Make, use get(emails; 1) for the first address and join(leadInterests; ", ") for the interests. Zapier shows them as text you can map directly.

3. Mapping for popular systems

The field names on the left are exactly what cardlio sends. Map only what your system has a place for; empty fields arrive as empty text.

HubSpotCreate contact

Zapier: action Create Contact — or Create or Update Contact, which uses the email to avoid duplicates. Make: HubSpot CRM → Create a Contact.

cardlioHubSpot
firstName, lastNameFirst name, Last name
emails (first)Email
titleJob title
companyCompany name
phone, mobilePhone number, Mobile phone number
websiteWebsite URL
street, city, postalCode, countryStreet address, City, Postal code, Country/Region
leadRatingLead status, or a custom property
eventTag, notesa custom “Met at” property, or a note

SalesforceCreate lead

Zapier: action Create Record, object Lead. Make: Salesforce → Create a Record, type Lead. Salesforce requires Last Name and Company on a lead — for cards without one, set a default (Zapier: in the field’s options; Make: ifempty(company; "Unknown")).

cardlioSalesforce Lead
firstName, lastName, honorificFirst Name, Last Name, Salutation
title, companyTitle, Company
emails (first), phone, mobile, faxEmail, Phone, Mobile, Fax
website, industryWebsite, Industry
street, city, postalCode, countryStreet, City, Zip/Postal Code, Country
leadRatingRating — cardlio’s Hot / Warm / Cold are Salesforce’s own values
“Business Card” (typed)Lead Source
eventTag, leadInterests, notesDescription

PipedriveCreate person

Zapier: Create Person (optionally first Find or Create Organization with company, then link it). Make: Pipedrive CRM → Create a Person. To start a lead as well, add Create Lead with the person you just created.

cardlioPipedrive
firstName + lastNameName
emails (first), mobile or phoneEmail, Phone
companyOrganization
leadRating, eventTagcustom fields, or a label

Google SheetsOne row per card

Make a sheet with a header row — for example Scanned, First name, Last name, Title, Company, Email, Phone, Mobile, City, Country, Event, Lead rating, Interests, Notes. Zapier: Google Sheets → Create Spreadsheet Row. Make: Google Sheets → Add a Row. Map one cardlio field to each column.

Anything else

Zoho CRM, Microsoft Dynamics, Airtable, Notion, monday.com, Slack, Microsoft Teams, Mailchimp — the steps are the same: the cardlio trigger above, then that app’s “create contact” or “create record” action. A Slack or Teams message (“New hot lead from SMM: Wei Ming Tan, Meridian Shipping”) is a nice way to tell the team at the stand.

4. Every field cardlio sends

One JSON object per card, sent as an HTTP POST with Content-Type: application/json. Every key is always present; a field the card does not have is an empty string (or an empty list).

FieldWhat it holds
idThe card’s permanent identifier. Stays the same for the life of the card — useful to recognise a card you have already received.
scannedAtWhen it was saved, ISO 8601 in UTC (2026-10-03T08:15:00Z).
honorific, firstName, lastNameThe name as printed: “Capt.”, “Dr.” go in honorific.
title, companyJob title and company, as printed on the card.
emailsA list of every address on the card, the main one first.
phone, mobile, faxIn international format (+65 9123 4567).
website, linkedin, wechatAs found on the card or in its QR code.
building, street, unit, postalCode, city, countryThe address in parts. A district or ward stays in street; city is the city alone.
industryThe industry tag, from your own list if you set one up.
eventTagWhere you met (Event mode), e.g. “SMM 2026”.
leadRatingHot, Warm, Cold or empty — as you rated the card when you saved it.
leadInterestsA list of the interest chips you ticked (“Demo requested”, “Pricing”).
notesThe card’s notes, including a voice note you recorded.
translatedTitle, translatedCompany, translatedAddressOnly if you translated a foreign-language card; otherwise empty.
isTesttrue only for the made-up contact from Send test.
sourceAlways cardlio.

The test contact, as sent (spaced out here for reading)

{
  "building" : "Asia Square Tower 2",
  "city" : "Singapore",
  "company" : "Meridian Shipping Pte Ltd",
  "country" : "Singapore",
  "emails" : [ "weiming.tan@example.com" ],
  "eventTag" : "Sea Asia 2026",
  "fax" : "",
  "firstName" : "Wei Ming",
  "honorific" : "",
  "id" : "00000000-0000-0000-0000-000000000000",
  "industry" : "",
  "isTest" : true,
  "lastName" : "Tan",
  "leadInterests" : [ "Bunkering", "Demo requested" ],
  "leadRating" : "Hot",
  "linkedin" : "",
  "mobile" : "+65 9123 4567",
  "notes" : "",
  "phone" : "",
  "postalCode" : "018961",
  "scannedAt" : "2026-10-03T08:15:00Z",
  "source" : "cardlio",
  "street" : "12 Marina View",
  "title" : "Fleet Operations Manager",
  "translatedAddress" : "",
  "translatedCompany" : "",
  "translatedTitle" : "",
  "unit" : "#25-06",
  "website" : "",
  "wechat" : ""
}

Good to know

Questions or a system that doesn’t fit? support@cardlio.app