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.
donorcare.my/campaigns/raya-2026
Event log
- 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

Links
Every link setting you would reach for, on domains you own.
Your domains, your rules
Bring a domain and decide what its bare address and unknown keys do. Certificates and reachability are checked for you.
- jom.care
- certificate valid
- Root target
- 360hq.my
- Fallback target
- 360hq.my/not-found
- Shared with
- 2 organizations
- Key case
- insensitive
Targeting
By device and country, or split traffic between variants.
- iPhone, iPadapps.apple.com/…
- Androidplay.google.com/…
- MYMalaysiadonorcare.my/ms/…
Variant A 60Variant B 40
Password gate
Stored as a hash, limited against guessing, and never kept in a cookie. Apps can pass it in a header.
This link is protected
Expiry with somewhere to go
When a campaign ends, its links send visitors to a page you chose instead of a dead end.
expires31 Mar 2027, 23:59 MYT
thendonorcare.my/thank-you
Previews that look right
Chat and social apps get a proper title and image, even when the destination has none.

Heritage walk: Kuala Lumpur old station
jom.care/walk
Count people, not crawlers.
Analytics you can stand behind when a campaign report goes to a donor, a board or a client.

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.
- domain.check_recoveredjom.care certificatelinkcaresystem
- approval.executed214 links repointedcampaign-agentagent
- approval.decidedapproved, 214 linksfarid@donorcare.mymember
- approval.requestedrepoint 214 linkscampaign-agentagent
- link.repointedjom.care/raya26aisyah@360hq.mymember
- 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.
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.
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.