Short.io users usually arrive with two assets: a library of links and a custom domain. Both migrate cleanly if the sequence is right. This playbook covers the whole move — data, DNS, and automation — with the failure points called out.
Step 1 — Inventory and export
Export your links from Short.io (their CSV export includes short URL, long URL, title, and creation data). Add the domain inventory: which custom domains are in use, where their DNS lives, and which links depend on each domain.
Step 2 — Prepare DNS for the switch
The domain move is the highest-risk step, so prepare it:
- Lower the TTL on the domain's DNS records 24 hours before cutover (e.g. 86400 → 300) so the final switch propagates fast.
- Add the domain in the yas.sh dashboard and note the edge hostname.
- Pre-flight: point a test subdomain at the new edge and confirm TLS issuance completes (custom domains guide).
Step 3 — Re-create links in bulk
Same discipline as any bulk job — 1/sec pacing, idempotency keys, explicit collision handling (bulk guide):
# one row per link: destination,alias
while IFS=, read -r dest alias; do
curl -s -X POST https://yas.sh/api/v1/links \
-H "Authorization: Bearer yas_live_..." -H "Content-Type: application/json" \
-H "Idempotency-Key: sio-$alias" \
-d "{\"originalUrl\":\"$dest\",\"customAlias\":\"$alias\"}"
sleep 1
done < shortio-export.csv
Prefer keeping your Short.io aliases — they're already in print, email, and bookmarks.
Step 4 — Forward old URLs during overlap
During the transition, old Short.io URLs must keep working. Two options:
- Short.io side: keep the account active during the window; its links keep resolving (optionally with its own redirects).
- Own domain: when the domain moves to yas.sh, the same aliases resolve on the new platform — the DNS cutover is the forwarding.
The overlap window is the safety net: any URL still pointing at old infrastructure keeps working until DNS and content settle.
Step 5 — Port the automation
Short.io automation ports cleanly to the OpenAPI-documented API: REST + JSON, Bearer auth, idempotency, and rate limits. The fastest port for typed codebases is regenerating clients from the spec (guide):
// before: short.io client
// after: same shapes, new client generated from https://yas.sh/api/v1/openapi
Walk the automation inventory line by line: link creation jobs, analytics pulls, QR generation, campaign builders. Each maps to a yas.sh endpoint — the webhooks & automation guide has the patterns.
Step 6 — Verify and cut over
- Spot-check 5% of migrated links end-to-end (old URL → new link → destination).
- Confirm the custom domain serves TLS on the new platform (
curl -I https://go.yourbrand.com/launch). - Run a full CSV export and reconcile counts against the source export.
- Announce the platform switch internally; update dashboards and bookmarks.
The failure points, called out
| Risk | Mitigation |
|---|---|
| DNS propagation race | Lower TTL 24h before; verify before announcing |
| Certificate delay on cutover | Pre-flight TLS on a test subdomain |
| Alias collisions in bulk | Idempotency keys + 409 handling in the script |
| Automation drift | Regenerate clients from the spec; test against the contract |
| Data cutoff confusion | Document the analytics cutoff date for reporting |
Conclusion
Short.io migration is a data job, a DNS job, and an automation job — in that order, with overlap as the safety net. The custom domains guide handles the DNS half, the bulk creation guide the data half, and the OpenAPI guide the automation half. Follow the sequence and nothing breaks.
