Wonderment Post‑Purchase

Wonderment Post‑Purchase Logo

Wonderment Post‑Purchase

Rating

100

%

Recommended

(

2

reviews

)

Pricing

From $99/month

Developer

Launched

5-Oct-20

Wonderment Post‑Purchase Logo

Wonderment Post‑Purchase

Rating

100

%

Recommended

(

2

reviews

)

Pricing

From $99/month

Developer

Launched

5-Oct-20

Wonderment Post‑Purchase Logo

Wonderment Post‑Purchase

Rating

100

%

Recommended

(

2

reviews

)

Pricing

From $99/month

Developer

Launched

5-Oct-20

Provide self-serve order tracking and real time estimated delivery dates for better CX

Track by Loop (formerly Wonderment) gives customers full visibility before and after purchase. Display accurate delivery estimates on product pages and at checkout to increase conversion and reduce hesitation. After purchase, branded tracking pages provide real-time order updates and built-in upsell opportunities. Proactive shipping notifications and transparent tracking reduce WISMO inquiries and build customer confidence.

Categories:

Order tracking, Staff notifications

Integrations:

Checkout, Customer accounts, Shopify Flow, Attentive, Gorgias, Klaviyo, Postscript, Reviews Platforms, Slack

Checkout, Customer accounts, Shopify Flow, Attentive, Gorgias, Klaviyo, Postscript, Reviews Platforms, Slack

Languages:

English

English

Filter Reviews

Operator reports

100

%

Recommended

(

2

reviews

)
Photo of Reviewer Jack B.

Jack B.

Role:

Owner

Category:

Health & Beauty

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Oct 17, 2025

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

Makes it super easy for customers to track their orders and that makes it easier for the CS team.

What was disappointing

Nothing to complain about this product or company.

Photo of Reviewer Jack B.

Jack B.

Role:

Owner

Category:

Health & Beauty

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Oct 17, 2025

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

Makes it super easy for customers to track their orders and that makes it easier for the CS team.

What was disappointing

Nothing to complain about this product or company.

ML

Marie L.

Role:

Marketing

Category:

Food & Drink

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Jan 6, 2025

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:

Critical for me to do my job

What exceeded expectations

accurate, easy, timely updates for our clients easy to integrate with klaviyo for email drips tracking page is helpful for customers who don't know where to find their confirmation email/tracking number reports on delayed orders is useful

What was disappointing

low adoption by CX/ecom team some discrepancies with tracking where the info is different from the one supplied y the courier

ML

Marie L.

Role:

Marketing

Category:

Food & Drink

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Jan 6, 2025

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:

Critical for me to do my job

What exceeded expectations

accurate, easy, timely updates for our clients easy to integrate with klaviyo for email drips tracking page is helpful for customers who don't know where to find their confirmation email/tracking number reports on delayed orders is useful

What was disappointing

low adoption by CX/ecom team some discrepancies with tracking where the info is different from the one supplied y the courier

Related Apps

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: "" }