Skip to content

Short links, on the record.

Branded links, QR codes and analytics on your own domains. Every change logged with its author: person, app or agent.

Demo only. It runs in your browser and creates nothing.

jom.care/raya26

donorcare.my/campaigns/raya-2026

Active

Event log

  1. link.createdjom.care/raya26just now

actor: you (member)

In production since 8 October 2026

  • jom.care runs on LinkCARE
  • 360HQ
  • DonorCARE
  • More CARE apps and client organizations to follow
A link in the LinkCARE dashboard: jom.care/banjir with its destination, QR code, settings and 30 days of clicks

Count people, not crawlers.

Analytics you can stand behind when a campaign report goes to a donor, a board or a client.

The LinkCARE dashboard's analytics page: clicks over time with breakdowns by country, device and referrer

Clicks are people

Crawlers and link prefetches are kept as visits and set aside. Only people count as clicks.

No IP addresses stored

Each visitor gets a hash that can no longer be linked to them after a day.

Counts that add up

A link's click counter always equals its stored clicks. No sampling, no drift.

Yours to take away

Raw visits by country, device, referrer, QR scan and variant, exported as CSV.

Record

Every change has an author.

Links and domains change only by adding an event to a log that is never edited. Each one names its actor: a member, an app, an agent or the system.

Keys are forever
A retired link leaves a tombstone. Its key is never given to anyone else.
Repoint is its own right
Changing where a link goes needs a separate permission from editing it.
Approvals on record
Risky agent requests wait for a person, with a summary the service writes.
Ask why
A dry run shows what any visitor would get and which step decided it.
  1. domain.check_recoveredjom.care certificatelinkcaresystem
  2. approval.executed214 links repointedcampaign-agentagent
  3. approval.decidedapproved, 214 linksfarid@donorcare.mymember
  4. approval.requestedrepoint 214 linkscampaign-agentagent
  5. link.repointedjom.care/raya26aisyah@360hq.mymember
  6. link.createdjom.care/wesakdonorcare-appapp

POST /v1/resolve

{ "url": "https://jom.care/raya26", "country": "MY", "os": "ios" }
{
  "step": "serve",
  "outcome": {
    "type": "redirect",
    "status": 302,
    "location": "https://apps.apple.com/my/app/donorcare"
  },
  "wouldRecord": { "kind": "click", "viaQr": false, "variant": null }
}

One API for your apps and your agents.

REST, agent tools and an MCP server, all generated from one list of operations. Same names, same rules, same errors.

  • Credentials that know their place

    Limit a credential to a domain, a key prefix or the hosts it may send visitors to.

  • Agents have a ceiling

    An agent is its own kind of actor, and some powers are never granted to one.

  • A person signs off

    High-risk agent requests become approvals that a member reviews before anything changes.

Read the OpenAPI reference
curl -X POST https://api.linkcare.my/v1/links \
  -H "X-API-Key: $LINKCARE_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "destination": "https://donorcare.my/campaigns/wesak",
    "key": "wesak",
    "idempotencyKey": "wesak-2026"
  }'

Compare

The features of Dub, Kutt and Sink. The record none of them keep.

LinkCAREDub
Custom domains
Device and country targeting
A/B split
Password linksHashed, rate-limited
Expiry with a page to land on
Previews for chat apps
QR codesDashboard and APIStyled, API
Analytics without IP addresses
Signed webhooks with retries
Change history with its author
Approvals for agent changes
Keys never reused
Open-source licenceAGPL

Based on each project's documented behaviour as of October 2026. Spotted a mistake? Tell us.

Questions

Who can use LinkCARE?

CARE Business Apps and the client organizations they bring on. Accounts are set up by our team rather than by public sign-up, so request access and tell us about your organization.

Can we use our own domain?

Yes. Add the domain, point its DNS at LinkCARE, and choose where its bare address and unknown keys send people. Certificates and reachability are checked for you.

Do you store visitors' IP addresses?

No. Country and device are read during the visit. The visitor hash we keep can no longer be linked to anyone after a day.

What happens when a link is retired?

It stops serving and leaves a tombstone. The key stays reserved, so a printed QR code can never start pointing somewhere you did not intend.

Can an AI agent manage our links?

Yes, over MCP or the agent tools, with its own credential. It is recorded as an agent, has a ceiling on what it may do, and its high-risk requests wait for a member's approval.

We use Short.io today. Can we move?

Yes. LinkCARE imports Short.io links and compares its answers with Short.io's live ones before you switch your domain over.

Is LinkCARE open source?

No. It is built and run by CARE Business Apps on its own infrastructure. The API reference is public.

Put your links on the record.

Tell us about your organization and the domains you want to bring. We will set you up.