Creating and owning a card
Cards are authenticated, org-scoped resources — CRUD lives under/cards and requires a CRM manage scope to create/edit (reads accept manage or read). Each card gets a public handle used to build its share URL, plus a set of custom fields (each with a visibility rule — some fields are hidden from the public view until a visitor shares back their own details).
Org admins can enforce brand consistency across every rep’s card via a brand lock — primary/accent color, font, logo, layout, tagline — with individual fields marked as strictly enforced rather than just a suggested default. Card templates provide starting points for new cards.
What a visitor sees and does
A visitor reaches a card by scanning a QR code, tapping an NFC tag, or opening a plain link. This side is entirely unauthenticated — org context comes from the card row itself, not a JWT — and lives under a separate/public/cards/* router so the authenticated /cards routes can never accidentally be reachable without a token.
From there, a visitor can:
- View the card (
GET /public/cards/{handle}) — only public-safe fields; anything marked visible only “on share-back” stays hidden until they’ve reciprocated. - Save it as a contact (
GET /public/cards/{handle}/vcard) or add it to Apple/Google Wallet. - Share their own details back (
POST /public/cards/{handle}/share-back) — an optional form where the visitor volunteers their name plus at least one of email, phone, company, or notes. This creates a lead in the org’s CRM, tagged to that card and (optionally) to free-text context like “where we met” or a geolocation. It’s gated by a Cloudflare Turnstile captcha to keep it from being a bot-fillable form.
Rep-side capture tools
Two AI-assisted capture flows sit alongside the card itself, both aimed at getting a real-world interaction into the CRM as a contact:- Badge/business-card scanning — the rep photographs a badge or card, the backend runs OCR against the image, and confirming the extracted fields creates a new contact (
stage=target) tagged with how it was captured. - AI Notetaker — records and transcribes a conversation (via Whisper), then has Claude produce a structured summary: key points, action items, and prospect signals.
Org-side analytics
/card-events is the event-attribution surface: for every tag a rep has captured leads under (e.g. a specific conference or campaign), it reports the funnel from captured leads through engagement, conversion, and resulting pipeline value, broken down by source, owner, and top deals. Orgs can set optional targets (pipeline $, lead count, demo count) per event to track against.
See the Cards, Cards (public), Cards (events), and Cards (admin) sections of the APIs tab for endpoint-level detail.