Profile management
Every setting on your public profile — links, bio, card themes, visibility, and Open Graph.
Your profile URL
Every account gets a permanent public URL at belcard.app/p/username. This is the URL written to your NFC chip and the one you share digitally. Your username is generated from your name at signup (e.g. aayush4821) and can be changed once from Dashboard → Settings → Account.
Links
Links are the primary content of your profile. Visitors see them as tappable rows below your card. Go to Dashboard → Profile → Links tab.
Supported link types
| Type | Format | Displayed as |
|---|---|---|
linkedin | Full HTTPS URL | LinkedIn icon + your label |
twitter | Full HTTPS URL | Twitter/X icon + your label |
github | Full HTTPS URL | GitHub icon + your label |
email | Email address | Mail icon — opens mailto: |
phone | Phone number (e.g. +977 98XXXXXXXX) | Phone icon — opens tel: |
url | Any HTTPS URL | Link icon + your custom label |
Limits
| Plan | Max links |
|---|---|
| Free free | 5 |
| Pro / Lifetime pro | 20 |
Reordering
Drag any link row by the ⠿ handle on its left side. The order here is exactly what visitors see on your profile. Put your most important link first.
Link click tracking
Every click on a link fires a link_click analytics event, tagged with the link type (e.g. linkedin). You can see which links get the most clicks in Dashboard → Analytics → Top clicked links. Clicks are tracked via navigator.sendBeacon — the navigation to the link is never delayed.
Card themes
Go to Dashboard → Card (or the Card tab in the Profile editor). The theme controls the gradient background of your 3D card viewer on your public profile.
| Theme | Gradient | Accent colour | Character |
|---|---|---|---|
| Void | #0a0a0a → #121212 | Blue #007AFF | Deep black. Timeless default. |
| Obsidian | #1a1a2e → #16213e | Purple #9333EA | Dark navy with purple depth. |
| Aurora | #0f3460 → #533483 | Green #34C759 | Deep teal-violet. Bold. |
| Solar | #2d1b00 → #1a0a00 | Amber #FF9F0A | Dark amber. Warm and distinctive. |
The live preview on the right side of the Card editor shows your card with the selected theme in real time, including your current display name, tagline, and link pills. Tilt your mouse over it to see the 3D effect.
The card also uses a gradient border shell — a 1px outer wrapper with a diagonal gradient, making the card edge look like premium depth rather than a flat stroke.
Bio
The bio is a short free-text paragraph shown below your card on your public profile. Maximum 400 characters. Use it for a summary of who you are, your expertise, or a call-to-action. Leave it blank if you prefer a minimal look — it's optional.
Tagline
The tagline appears below your name on your profile and also on the card itself in monospace font (e.g. Product Designer · Kathmandu). Maximum 120 characters. It's visible in the NFC card viewer and in your Open Graph social preview image.
Profile visibility
Your profile is public by default. To hide it temporarily, go to Dashboard → Settings → Profile visibility → Hidden. While hidden, anyone who taps your card or visits your URL sees a "profile unavailable" message. Your analytics continue to record these visits as profile_view events.
Open Graph social previews
When your profile URL is shared on WhatsApp, LinkedIn, Twitter, or any platform that reads Open Graph tags, a rich preview card is automatically generated. This image is produced at the Cloudflare edge by a Worker that:
- Checks R2 for a cached version (valid for 24 hours).
- If missing, queries your profile from D1 and renders an SVG containing your name, tagline, username, card theme accent colour, and the Belcard wordmark.
- Stores the result in R2 and returns it as a
1200×630pximage.
No action is needed from you. The preview updates automatically within 24 hours of any profile change.
Contact card (.vcf)
Visitors on your public profile can tap Save contact to download a .vcf file and add you directly to their phone's contacts app. The vCard includes your display name, tagline, email, phone number, and website (whichever of these you have as links). Each download fires a contact_save analytics event.