Happy Returns a PayPal company

Happy Returns a PayPal company Logo

Built for Shopify

Happy Returns a PayPal company

Rating

83

%

Recommended

(

3

reviews

)

Pricing

Free plan available

Developer

Launched

12-Nov-20

Happy Returns a PayPal company Logo

Built for Shopify

Happy Returns a PayPal company

Rating

83

%

Recommended

(

3

reviews

)

Pricing

Free plan available

Developer

Launched

12-Nov-20

Happy Returns a PayPal company Logo

Built for Shopify

Happy Returns a PayPal company

Rating

83

%

Recommended

(

3

reviews

)

Pricing

Free plan available

Developer

Launched

12-Nov-20

We make returns beautiful for shoppers, merchants, and the planet.

We provide end-to-end returns solutions through a unique combination of returns software and reverse logistics. Through our nationwide network of Return Bar locations, we delight shoppers by enabling them to drop off returns with no packaging or printing in under 60 seconds. Returns are aggregated and shipped using reusable totes, reducing costs for merchants and increasing sustainability by reducing cardboard waste and carbon emissions.

Categories:

Returns and exchanges

Integrations:

Languages:

English, French, German

English, French, German

Filter Reviews

Operator reports

83

%

Recommended

(

3

reviews

)
Photo of Reviewer Jordan B.

Jordan B.

Role:

Owner

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Mar 10, 2026

Years of use:

More then 3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Valuable but not essential

What exceeded expectations

Found it a very comprehensive tool for returns. We set it up robustly a few years ago, and now it needs minimal adjustment. Quite happy with it.

What was disappointing

So far, so good.

Photo of Reviewer Jordan B.

Jordan B.

Role:

Owner

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Mar 10, 2026

Years of use:

More then 3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Valuable but not essential

What exceeded expectations

Found it a very comprehensive tool for returns. We set it up robustly a few years ago, and now it needs minimal adjustment. Quite happy with it.

What was disappointing

So far, so good.

Photo of Reviewer Anh V.

Anh V.

Role:

Operations

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Neutral

Oct 20, 2025

Years of use:

More then 3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Valuable but not essential

What exceeded expectations

We like the Returns Bar but sometimes the workers would take back items that do not match the brand. Ex. For Hurley, the Petco worker would take a Billabong item.

What was disappointing

It used to be free until UPS purchased it and the service levels declined.

Photo of Reviewer Anh V.

Anh V.

Role:

Operations

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Neutral

Oct 20, 2025

Years of use:

More then 3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Valuable but not essential

What exceeded expectations

We like the Returns Bar but sometimes the workers would take back items that do not match the brand. Ex. For Hurley, the Petco worker would take a Billabong item.

What was disappointing

It used to be free until UPS purchased it and the service levels declined.

Photo of Reviewer Ray

Ray

Role:

E-commerce Manager

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Oct 22, 2024

Years of use:

2-3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Valuable but not essential

What exceeded expectations

One of the biggest challenges with returns has been adapting to changing consumer preferences and one of those preferences has been not owning a printer. Being able to drop off the product at a local store, without the packaging, and without a return label has made our return process more efficient, reduce costs, and improved the experience.

What was disappointing

It is not available everywhere, the store diversity isn't that appealing, and the teams who process the drop offs don't always look at what is being returned leading to returns fraud.

Photo of Reviewer Ray

Ray

Role:

E-commerce Manager

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Oct 22, 2024

Years of use:

2-3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Valuable but not essential

What exceeded expectations

One of the biggest challenges with returns has been adapting to changing consumer preferences and one of those preferences has been not owning a printer. Being able to drop off the product at a local store, without the packaging, and without a return label has made our return process more efficient, reduce costs, and improved the experience.

What was disappointing

It is not available everywhere, the store diversity isn't that appealing, and the teams who process the drop offs don't always look at what is being returned leading to returns fraud.

import * as React from "react" type Props = { name: string slug: string description: string image: string developer: string categories: string pricing: string launchedAt: string dateModified: string ratingValue: number ratingCount: number faqQ1: string faqA1: string faqQ2: string faqA2: string faqQ3: string faqA3: string faqQ4: string faqA4: string faqQ5: string faqA5: string } export function SchemaMarkup(props: Props) { const { name, slug, description, image, developer, categories, pricing, launchedAt, dateModified, ratingValue, ratingCount, faqQ1, faqA1, faqQ2, faqA2, faqQ3, faqA3, faqQ4, faqA4, faqQ5, faqA5 } = props const scriptContent = ` (function () { var ORIGIN = window.location.origin; var SAT = { "Very Satisfied": 100, "Neutral": 50, "Not Satisfied": 0 }; var AGG_NOTE = "Percentage of vetted Shopify merchants and agency operators who recommend this app, based on first-party reviews collected by app store research."; function read(root, key) { if (!root) return ""; var el = root.querySelector('[data-k="' + key + '"]'); return el ? el.textContent.trim() : ""; } function iso(v) { if (!v) return null; var d = new Date(v); return isNaN(d) ? null : d.toISOString().slice(0, 10); } function notes(text) { return { "@type": "ItemList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": text }] }; } var root = document.getElementById("asr-seo-data"); if (!root) return; var NAME = read(root, "name"); var SLUG = read(root, "slug"); if (!NAME || !SLUG) return; var PAGE_URL = ORIGIN + "/shopify-app-reviews/" + SLUG; function collectReviews() { var out = []; Array.prototype.forEach.call( document.querySelectorAll(".asr-review-seo"), function (n) { var author = read(n, "author"); var pos = read(n, "positive"); var neg = read(n, "negative"); if (!author || (!pos && !neg)) return; var r = { "@type": "Review", "author": { "@type": "Person", "name": author }, "itemReviewed": { "@id": PAGE_URL + "#app" } }; var d = iso(read(n, "date")); if (d) r.datePublished = d; var s = read(n, "satisfaction"); if (s && SAT.hasOwnProperty(s)) { r.reviewRating = { "@type": "Rating", "ratingValue": String(SAT[s]), "bestRating": "100", "worstRating": "0", "alternateName": s }; } if (pos) r.positiveNotes = notes(pos); if (neg) r.negativeNotes = notes(neg); out.push(r); } ); return out; } function buildGraph(reviews) { var app = { "@type": "SoftwareApplication", "@id": PAGE_URL + "#app", "name": NAME, "url": PAGE_URL, "applicationCategory": "BusinessApplication", "operatingSystem": "Web (Shopify)" }; var v; if ((v = read(root, "description"))) app.description = v; if ((v = read(root, "image"))) app.image = v.replace(/&/g, "&"); if ((v = read(root, "developer"))) app.author = { "@type": "Organization", "name": v }; if ((v = read(root, "categories"))) app.keywords = v; if ((v = read(root, "pricing"))) { app.offers = { "@type": "Offer", "price": "0", "priceCurrency": "USD", "description": v }; } if ((v = iso(read(root, "launchedAt")))) app.datePublished = v; if ((v = iso(read(root, "dateModified")))) app.dateModified = v; if (reviews.length) app.review = reviews; var rv = read(root, "ratingValue"); var rc = parseInt(read(root, "ratingCount"), 10); if (reviews.length && rv && rc > 0) { app.aggregateRating = { "@type": "AggregateRating", "ratingValue": String(parseFloat(rv)), "bestRating": "100", "worstRating": "0", "ratingCount": String(rc), "description": AGG_NOTE }; } var graph = [app]; var faq = []; for (var i = 1; i <= 5; i++) { var q = read(root, "faqQ" + i); var a = read(root, "faqA" + i); if (q && a) { faq.push({ "@type": "Question", "name": q, "acceptedAnswer": { "@type": "Answer", "text": a } }); } } if (faq.length) { graph.push({ "@type": "FAQPage", "@id": PAGE_URL + "#faq", "mainEntity": faq }); } graph.push({ "@type": "BreadcrumbList", "@id": PAGE_URL + "#breadcrumb", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": ORIGIN + "/" }, { "@type": "ListItem", "position": 2, "name": "Shopify App Reviews", "item": ORIGIN + "/shopify-app-reviews" }, { "@type": "ListItem", "position": 3, "name": NAME, "item": PAGE_URL } ] }); return graph; } function build() { var reviews = collectReviews(); var old = document.getElementById("asr-jsonld"); if (old && old.dataset.count === String(reviews.length)) return; if (old) old.remove(); var s = document.createElement("script"); s.type = "application/ld+json"; s.id = "asr-jsonld"; s.dataset.count = String(reviews.length); s.textContent = JSON.stringify({ "@context": "https://schema.org", "@graph": buildGraph(reviews) }); document.head.appendChild(s); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", build); } else { build(); } [300, 900, 2000].forEach(function (ms) { setTimeout(build, ms); }); })(); ` return ( <> {/* HIDDEN DIV – provjeri da li je ID tačan */} {/* SCRIPT TAG – OBAVEZNO zatvoren */} </> ) } SchemaMarkup.defaultProps = { name: "Naziv aplikacije", slug: "slug-aplikacije", description: "", image: "", developer: "", categories: "", pricing: "", launchedAt: "", dateModified: "", ratingValue: 0, ratingCount: 0, faqQ1: "", faqA1: "", faqQ2: "", faqA2: "", faqQ3: "", faqA3: "", faqQ4: "", faqA4: "", faqQ5: "", faqA5: "" }