A one-link integration for deck builders and card sites.
Let your users push a deck straight into Untap.in with a single link. They click it, Untap opens a confirmation dialog with a live preview of the matched cards, and they save it to their collection. No API keys, no login handoff, nothing to host.
https://untap.in/import-deck/<your-deck-url>. Untap fetches that deck from your site,
resolves the cards, detects the game automatically, and opens the import dialog. If the user isn't
logged in yet, they log in first and the import resumes.
Paste one of your public deck URLs to generate a working link and copy-paste snippets.
When the button sits on the deck's own page you don't need to hardcode anything — just read
window.location.href.
Drop-in CSS + logo so the button matches ours. The logo is inlined as a data URI so you don't host anything.
https://untap.in/import-deck/<deck-url>
| Part | Notes |
|---|---|
<deck-url> |
Your deck's public URL. Recommended: encodeURIComponent() it so query strings and
special characters survive. A plain URL works too (Untap adds https:// if you omit the scheme). |
| Game / CCG | Detected automatically from the deck source — you don't pass it. Untap resolves the game and the deck name from the fetched deck. |
| Login | Handled first-party by Untap. If the user is logged out, they log in and the import continues — you never touch their credentials. |
A few patterns we like — mix and match to fit your UI.
A "Play Deck on Untap.in" button next to your Copy / Export actions on every public deck page. The most direct path.
New tab is simplest and mobile-friendly; a small window.open popup keeps users in your flow.
A "Copy Untap import link" item so users can paste it into Discord, a forum, or a friend's DM — the deck imports for whoever opens it.
Render the import link as a QR on a deck page so a user can jump from desktop to the Untap app on their phone.
The same link works for large lists and cubes — wire it into your "export cube" action.
Expose /export/untap/<id> on your side that 302-redirects to the Untap import link — handy for email/CMS where you can't run JS.
/user/deck-importer?uri=…) reads the user's
Untap login out of cross-site storage to save silently. Browser storage-partitioning (Safari ITP, Chrome CHIPS)
increasingly blocks that, so it works inconsistently. It still runs for existing embeds, but new integrations
should use the /import-deck/ link above — it's first-party, needs no storage access, and won't break as
browsers tighten up.