{"product_id":"custom-photo-keychain-personalised-uv-printed-keepsake","title":"Custom Photo Keychain – 3D Textured Keepsake","description":"\u003cdiv class=\"relative basis-auto flex-col -mb-(--composer-overlap-px) pb-(--composer-overlap-px) [--composer-overlap-px:28px] grow flex\"\u003e\n\u003cdiv class=\"flex flex-col text-sm pb-25\"\u003e\n\u003csection class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [\u0026amp;:has([data-writing-block])\u0026gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:fad000ed-931a-428b-871e-a32453300cbf-37\" data-testid=\"conversation-turn-48\" data-scroll-anchor=\"true\" data-turn=\"assistant\"\u003e\n\u003cdiv class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\"\u003e\n\u003cdiv class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\"\u003e\n\u003cdiv class=\"flex max-w-full flex-col gap-4 grow\"\u003e\n\u003cdiv data-message-author-role=\"assistant\" data-message-id=\"ade699bd-ac83-4f1d-99c6-477b9e8d9ac0\" dir=\"auto\" data-message-model-slug=\"gpt-5-3\" class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+\u0026amp;]:mt-1\" data-turn-start-message=\"true\" tabindex=\"0\"\u003e\n\u003cdiv class=\"flex w-full flex-col gap-1 empty:hidden\"\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"\u003e\n\u003cp data-start=\"188\" data-end=\"246\"\u003e\u003cstrong data-start=\"188\" data-end=\"246\"\u003eFeaturing a raised 3D textured print you can see and feel.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-start=\"188\" data-end=\"246\"\u003e\u003cstrong data-start=\"188\" data-end=\"246\"\u003eCarry your favourite memory with you, wherever you go.\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp data-start=\"248\" data-end=\"437\"\u003eOur custom photo keychains are designed to turn meaningful moments into something you can hold onto — whether it’s a beloved pet, a special photo, or a thoughtful gift for someone you love.\u003c\/p\u003e\n\u003cp data-start=\"439\" data-end=\"601\"\u003eEach piece is UV printed with crisp detail and finished with a subtle raised element you can see and feel, creating a keepsake that’s both beautiful and personal.\u003c\/p\u003e\nChoose your finish:\n\u003cp data-start=\"635\" data-end=\"796\"\u003e\u003cstrong data-start=\"635\" data-end=\"673\"\u003eTimber – Natural \u0026amp; Double-Sided\u003c\/strong\u003e\u003cbr data-start=\"673\" data-end=\"676\"\u003eA warm, natural timber finish printed on both sides — perfect for showcasing your photo and adding extra detail or text.\u003c\/p\u003e\n\u003cp data-start=\"798\" data-end=\"928\"\u003e\u003cstrong data-start=\"798\" data-end=\"826\"\u003eMetal – Sleek \u0026amp; Modern\u003c\/strong\u003e\u003cbr data-start=\"826\" data-end=\"829\"\u003eA smooth metal finish with a sharp, high-contrast print on one side — clean, durable, and timeless.\u003c\/p\u003e\nWhy you’ll love it:\n\u003cul data-start=\"962\" data-end=\"1137\"\u003e\n\u003cli data-section-id=\"1sjv5uz\" data-start=\"962\" data-end=\"1006\"\u003e✔️ Custom photo printed with fine detail\u003c\/li\u003e\n\u003cli data-section-id=\"1np3uz6\" data-start=\"1007\" data-end=\"1053\"\u003e✔️ Subtle raised feature for added texture\u003c\/li\u003e\n\u003cli data-section-id=\"18xctf7\" data-start=\"1054\" data-end=\"1099\"\u003e✔️ Lightweight, durable, and made to last\u003c\/li\u003e\n\u003cli data-section-id=\"1ysvmas\" data-start=\"1100\" data-end=\"1137\"\u003e✔️ Designed and made in Melbourne\u003c\/li\u003e\n\u003c\/ul\u003e\nReady to gift:\n\u003cp data-start=\"1166\" data-end=\"1282\"\u003eEach keychain comes beautifully presented in a \u003cstrong data-start=\"1213\" data-end=\"1234\"\u003esoft velvet pouch\u003c\/strong\u003e, making it perfect for gifting or keeping safe.\u003c\/p\u003e\n\u003cstrong\u003ePersonalisation:\u003c\/strong\u003e\n\u003cul data-start=\"1313\" data-end=\"1423\"\u003e\n\u003cli data-section-id=\"545fd6\" data-start=\"1313\" data-end=\"1341\"\u003eUpload your chosen photo\u003c\/li\u003e\n\u003cli data-section-id=\"q7chw0\" data-start=\"1342\" data-end=\"1391\"\u003eAdd a name, date, or short message (optional)\u003c\/li\u003e\n\u003cli data-section-id=\"14wjzur\" data-start=\"1392\" data-end=\"1423\"\u003eSelect your preferred style\u003c\/li\u003e\n\u003c\/ul\u003e\nNotes:\n\u003cul data-start=\"1445\" data-end=\"1575\"\u003e\n\u003cli data-section-id=\"xu3l99\" data-start=\"1445\" data-end=\"1475\"\u003eIncludes basic image setup\u003c\/li\u003e\n\u003cli data-section-id=\"1awy55c\" data-start=\"1476\" data-end=\"1526\"\u003eComplex edits may incur a small additional fee\u003c\/li\u003e\n\u003cli data-section-id=\"1v2ovxb\" data-start=\"1527\" data-end=\"1575\"\u003eBest results with clear, high-quality images\u003c\/li\u003e\n\u003c\/ul\u003e\nPlease note:\n\u003cul data-start=\"1602\" data-end=\"1746\"\u003e\n\u003cli data-section-id=\"1q8o5u4\" data-start=\"1602\" data-end=\"1695\"\u003eTimber is a natural material — grain and tone may vary slightly, making each piece unique\u003c\/li\u003e\n\u003cli data-section-id=\"ji0yaa\" data-start=\"1696\" data-end=\"1746\"\u003eColours may vary slightly from screen to print\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"\u003e\u003cstrong\u003eAdd a matching set of custom coasters to complete your gift!\u003c\/strong\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"mt-3 w-full empty:hidden\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"thread-bottom-container\" class=\"sticky bottom-0 z-10 group\/thread-bottom-container relative isolate w-full basis-auto has-data-has-thread-error:pt-2 has-data-has-thread-error:[box-shadow:var(--sharp-edge-bottom-shadow)] md:border-transparent md:pt-0 dark:border-white\/20 md:dark:border-transparent print:hidden content-fade single-line flex flex-col\"\u003e\n\u003cdiv id=\"thread-bottom\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"text-base mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\"\u003e\n\u003cdiv class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 mb-[var(--thread-component-gap,1rem)]\"\u003e\n\u003cdiv class=\"pointer-events-auto relative z-1 flex h-(--composer-container-height,100%) max-w-full flex-(--composer-container-flex,1) flex-col\"\u003e\n\u003cform class=\"group\/composer w-full\" data-type=\"unified-composer\" data-gtm-form-interact-id=\"1\"\u003e\n\u003cdiv class=\"\"\u003e\n\u003cdiv class=\"bg-token-bg-primary dark:bg-token-bg-elevated-primary corner-superellipse\/1.1 cursor-text overflow-clip bg-clip-padding p-2.5 contain-inline-size motion-safe:transition-colors motion-safe:duration-200 motion-safe:ease-in-out grid grid-cols-[auto_1fr_auto] [grid-template-areas:'header_header_header'_'leading_primary_trailing'_'._footer_.'] group-data-expanded\/composer:[grid-template-areas:'header_header_header'_'primary_primary_primary'_'leading_footer_trailing'] shadow-short-composer\" data-composer-surface=\"true\"\u003e\n\u003cdiv class=\"-my-2.5 flex min-h-14 items-center overflow-x-hidden px-1.5 [grid-area:primary] group-data-expanded\/composer:mb-0 group-data-expanded\/composer:px-2.5\"\u003e\n\u003cdiv class=\"wcDTda_prosemirror-parent text-token-text-primary max-h-[max(30svh,5rem)] max-h-52 min-h-[var(--deep-research-composer-extra-height,unset)] flex-1 overflow-auto [scrollbar-width:thin] default-browser vertical-scroll-fade-mask\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/form\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"Cama 3D","offers":[{"title":"Timber (Double-Sided Print)","offer_id":43975207223384,"sku":null,"price":24.95,"currency_code":"AUD","in_stock":true},{"title":"Metal (Single-Sided Print)","offer_id":43975207256152,"sku":null,"price":24.95,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0709\/4059\/0168\/files\/keychains_3d_texture.png?v=1776568389","url":"https:\/\/www.cama.com.au\/products\/custom-photo-keychain-personalised-uv-printed-keepsake","provider":"Cama 3D","version":"1.0","type":"link"}