PageSourceSearch

https://opus-re-production.up.railway.app/assets/product-tour-ClMfjkcQ.js

js opus-re-production.up.railway.app collected 2026-10-03 12:13:23 UTC 11,859 bytes, 1 lines download raw bytes

1import{w as m,u as x,c as h,r as j}from"./chunk-62JRHF6Z-BDW89uLg.js";import{j as e}from"./jsx-runtime-Dh1VeTZk.js";import{o as f}from"./social-meta-RRfKhWS_.js";const g=[{eyebrow:"Customer portal",title:"Customers choose what they need help with",description:"The portal reads eligible items from the order and guides the customer through a return, exchange, replacement, or store-credit request.",image:"/help-assets/customer-select-items.png",alt:"Opus customer portal showing eligible order items and the first request step"},{eyebrow:"Merchant workspace",title:"Every request lands in one clear queue",description:"Filter by status, reason, outcome, country, or date instead of piecing together a return from email threads.",image:"/help-assets/request-queue.png",alt:"Opus merchant request queue with status and resolution filters"},{eyebrow:"No-code setup",title:"Make the portal fit the storefront",description:"Change the wording, colors, logo, typography, and optional CSS from simple controls. The default setup works without custom code.",image:"/help-assets/portal-customization.png",alt:"Opus customer portal appearance settings in Shopify admin"}],d=[{placement:"tour_submit",action:"Submit sample exchange",eyebrow:"Customer portal",status:"Ready to submit",title:"Customer requests a different size",description:"The shopper found order #1042 using the checkout email and selected a Large instead of a Medium."},{placement:"tour_approve",action:"Approve exchange",eyebrow:"Merchant decision",status:"Needs decision",title:"Merchant reviews one complete request",description:"The item, requested replacement, reason, and customer note are together instead of split across an email thread."},{placement:"tour_inspect",action:"Mark return inspected",eyebrow:"Return inspection",status:"Return received",title:"The inbound item is checked before resolution",description:"The merchant records the inspection result and keeps the request history attached to the same case."},{placement:"tour_complete",action:"Complete resolution",eyebrow:"Shopify outcome",status:"Ready to resolve",title:"The approved outcome is completed in Shopify",description:"Opus completes the merchant-approved resolution and leaves the request with a clear final status."}],v=({data:i})=>{const t="See Opus Returns Before You Install | Product Tour",a="See the real Opus customer return portal, merchant request queue, and no-code customization before installing the free Shopify app.",c=(i==null?void 0:i.origin)??"https://opus-re-production.up.railway.app",r=`${c}/product-tour`;return[{title:t},{name:"description",content:a},{name:"robots",content:"index, follow"},{property:"og:type",content:"website"},{property:"og:title",content:t},{property:"og:description",content:a},{property:"og:url",content:r},...f(c),{tagName:"link",rel:"canonical",href:r}]},N=m(function(){const{source:t}=x(),a=h(),c=h(),[r,u]=j.useState(0),o=d[r],p=r===d.length,l=`/go/shopify?source=${t}&placement=product_tour`;return e.jsxs("div",{className:"opus-guide-shell",children:[e.jsxs("header",{className:"opus-guide-header",children:[e.jsxs("a",{href:"/free-shopify-returns-app",className:"opus-guide-brand",children:[e.jsx("span",{"aria-hidden":"true",children:"O"}),e.jsx("strong",{children:"Opus Returns & Exchanges"})]}),e.jsxs("nav",{"aria-label":"Product tour navigation",children:[e.jsx("a",{href:"/free-shopify-returns-app",children:"About Opus"}),e.jsx("a",{href:"/help",children:"Documentation"}),e.jsx("a",{href:l,className:"opus-guide-install",children:"Install free"})]})]}),e.jsxs("main",{className:"opus-tour",children:[e.jsxs("header",{className:"opus-tour-hero",children:[e.jsx("p",{className:"opus-guide-eyebrow",children:"Free guest returns and exchanges"}),e.jsx("h1",{children:"Shopify handles signed-in refund returns. Opus adds the guest exchange workflow."}),e.jsx("p",{children:"Customers find guest or legacy orders with their order number and checkout email, request the replacement they want, and stay in one workflow through inspection and resolution. Every current feature is free, with no card or trial."}),e.jsxs("div",{className:"opus-tour-actions",children:[e.jsx("a",{href:l,children:"Install Opus free on Shopify"}),e.jsx("a",{href:"#exchange-demo",children:"Run the 60-second exchange demo"})]})]}),e.jsxs("section",{className:"opus-tour-gap","aria-labelledby":"tour-native-gap-title",children:[e.jsxs("div",{className:"opus-tour-gap-intro",children:[e.jsx("p",{className:"opus-guide-eyebrow",children:"The reason to add Opus"}),e.jsx("h2",{id:"tour-native-gap-title",children:"Keep Shopify native when it covers the job. Add Opus for the exchange workflow it leaves in email."}),e.jsx("p",{children:"Opus does not replace Shopify. It gives customers and staff a structured path for the cases that otherwise become a support thread."}),e.jsxs("a",{href:"#exchange-demo",children:["Test the Opus difference ",e.jsx("span",{"aria-hidden":"true",children:"↓"})]})]}),e.jsxs("div",{className:"opus-tour-gap-grid",children:[e.jsxs("article",{children:[e.jsx("p",{children:"Shopify native is enough for"}),e.jsx("h3",{children:"Signed-in refund returns"}),e.jsxs("ul",{children:[e.jsx("li",{children:"Customer-account return requests"}),e.jsx("li",{children:"Basic merchant review and refund handling"}),e.jsx("li",{children:"Stores that do not need an exchange request flow"})]})]}),e.jsxs("article",{className:"is-opus",children:[e.jsx("p",{children:"Opus adds"}
1),e.jsx("h3",{children:"Guest exchanges from request to resolution"}),e.jsxs("ul",{children:[e.jsx("li",{children:"Order lookup with order number and checkout email"}),e.jsx("li",{children:"Requested size, variant, or different-product exchange"}),e.jsx("li",{children:"Evidence, inbound return, inspection, and Shopify outcome"})]})]})]})]}),e.jsxs("section",{className:"opus-tour-demo",id:"exchange-demo","aria-labelledby":"tour-demo-title",children:[e.jsxs("div",{className:"opus-tour-demo-copy",children:[e.jsx("p",{className:"opus-guide-eyebrow",children:"Interactive synthetic request"}),e.jsx("h2",{id:"tour-demo-title",children:"Run one exchange from request to resolution."}),e.jsx("p",{children:"This demo uses fictional order data. Nothing is submitted to a store, and no customer information is collected."}),e.jsx("ol",{"aria-label":"Exchange demo progress",children:d.map((s,n)=>e.jsxs("li",{className:n<r?"is-complete":n===r?"is-current":void 0,children:[e.jsx("span",{children:n<r?"✓":n+1}),s.eyebrow]},s.placement))})]}),e.jsx("div",{className:"opus-tour-demo-panel","aria-live":"polite",children:p?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"opus-tour-demo-status is-complete",children:[e.jsx("span",{children:"Completed"}),e.jsx("strong",{children:"Exchange resolved"})]}),e.jsx("h3",{children:"The workflow is finished and the history stays together."}),e.jsx("p",{children:"That is the full Opus loop: guest lookup, customer-requested exchange, merchant decision, inspection, and Shopify outcome."}),e.jsxs("div",{className:"opus-tour-demo-actions",children:[e.jsx("a",{href:l,children:"Install Opus free"}),e.jsx("button",{type:"button",onClick:()=>u(0),children:"Run it again"})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"opus-tour-demo-status",children:[e.jsx("span",{children:o.eyebrow}),e.jsx("strong",{children:o.status})]}),e.jsx("p",{className:"opus-tour-demo-order",children:"Sample request #1042"}),e.jsx("h3",{children:o.title}),e.jsx("p",{children:o.description}),e.jsxs("dl",{className:"opus-tour-demo-details",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Item"}),e.jsx("dd",{children:"Classic cotton tee"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Requested"}),e.jsx("dd",{children:"Medium to Large"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Reason"}),e.jsx("dd",{children:"Too small"})]})]}),e.jsx(a.Form,{method:"post",action:`/product-tour?source=${t}&placement=${o.placement}`,children:e.jsx("button",{type:"submit",onClick:()=>u(s=>s+1),children:o.action})})]})})]}),e.jsxs("section",{className:"opus-tour-trust","aria-labelledby":"tour-trust-title",children:[e.jsxs("div",{className:"opus-tour-trust-intro",children:[e.jsx("p",{className:"opus-guide-eyebrow",children:"Before you install"}),e.jsx("h2",{id:"tour-trust-title",children:"Know the cost, cleanup, and limits."}),e.jsx("p",{children:"A new app should be easy to evaluate and easy to remove. These are the practical tradeoffs, stated before Opus touches a store."}),e.jsx("a",{href:"mailto:[email protected]?subject=Pre-install%20question%20about%20Opus",onClick:()=>c.submit({intent:"preinstall_support_click"},{method:"post",action:`/product-tour?source=${t}&placement=preinstall_question`}),children:"Ask a pre-install question"})]}),e.jsxs("div",{className:"opus-tour-trust-grid",children:[e.jsxs("article",{children:[e.jsx("p",{children:"Cost"}),e.jsx("h3",{children:"$0 to use"}),e.jsx("p",{children:"Every current feature is free. There is no trial, card, paid plan, or usage fee."})]}),e.jsxs("article",{children:[e.jsx("p",{children:"Theme cleanup"}),e.jsx("h3",{children:"No theme code edits"}),e.jsx("p",{children:"Opus uses a Shopify theme app extension. Shopify removes its blocks when the app is uninstalled, so it leaves no injected theme code behind."})]}),e.jsxs("article",{children:[e.jsx("p",{children:"Current limit"}),e.jsx("h3",{children:"Bring your own postage"}),e.jsx("p",{children:"Opus does not buy carrier labels or manage complex international routing. Your team can upload a prepaid label or let the customer arrange postage."})]}),e.jsxs("article",{className:"opus-tour-permissions",children:[e.jsxs("div",{children:[e.jsx("p",{children:"Shopify permissions"}),e.jsx("h3",{children:"Only what the return workflow needs"}),e.jsx("p",{children:"Shopify shows access requests during installation. Opus uses them to run the workflow below, not for advertising or unrelated personalization."}),e.jsx("a",{href:"/privacy",children:"Read the privacy details"})]}),e.jsxs("ul",{children:[e.jsxs("li",{children:[e.jsx("strong",{children:"Orders and returns"}),e.jsx("span",{children:"Find eligible orders and record the outcome a merchant approves."})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Products, inventory, and locations"}),e.jsx("span",{children:"Show valid exchange choices and support inspection and restocking."})]}),e.jsxs("li",{children:[e.jsx("strong",{children:"Draft orders and fulfillment"}),e.jsx("span",{children:"Create or release approved replacements and exchanges when the resolution requires it."})]})]})]})]})]}),e.jsx("section",{className:"opus-tour-steps","aria-label":"Opus product tour",children:g.map((s,n)=>e.jsxs("article",{children:[e.jsxs("div",{className:"opus-tour-copy",children:[e.jsxs("p",{className:"opus-guide-eyebrow",children:[n+1,". ",s.eyebrow]}),e.jsx("h2",{children:s.title}),e.jsx("p",{children:s.description})]}),e.jsx("figure",{children:e.jsx("img",{src:s.image,alt:s.alt,loading:"lazy"})})]},s.title))}),e.jsxs("section",{className:"opus-resource-index-cta",children:[e.jsxs("div",{children:[e.jsx("p",{className:"opus-guide-eyebrow",children:"Founding 100"}),e.jsx("h2",{children:"Try the full workflow without a subscription."}),e.jsx("p",{children:"Every current Opus feature is free. Install it, run a test request, and keep it only if it makes returns easier for your store."})]}),e.jsx("a",{href:l,children:"Install Opus free"})]})]}),e.jsxs("footer",{className:"opus-guide-footer",children:[e.jsx("span",{children:"Opus Returns & Exchanges"}),e.jsxs("span",{children:[e.jsx("a",{href:"/free-shopify-returns-app",children:"About"})," ·"," ",e.jsx("a",{href:"/help",children:"Help"})," · ",e.jsx("a",{href:"/support",children:"Support"})," ·"," ",e.jsx("a",{href:"/privacy",children:"Privacy"})]})]})]})});export{N as default,v as meta};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.