Hextom: Free Shipping Bar

Hextom: Free Shipping Bar Logo

Built for Shopify

Hextom: Free Shipping Bar

Rating

100

%

Recommended

(

2

reviews

)

Pricing

Free plan available. Free trial available.

Developer

Launched

16-Sep-15

Hextom: Free Shipping Bar Logo

Built for Shopify

Hextom: Free Shipping Bar

Rating

100

%

Recommended

(

2

reviews

)

Pricing

Free plan available. Free trial available.

Developer

Launched

16-Sep-15

Hextom: Free Shipping Bar Logo

Built for Shopify

Hextom: Free Shipping Bar

Rating

100

%

Recommended

(

2

reviews

)

Pricing

Free plan available. Free trial available.

Developer

Launched

16-Sep-15

Promote free shipping with progressive messages to motivate customers to buy more & boost sales

Free Shipping Bar displays progressive messages when customers put more items in their shopping carts, and lets them know how much more to buy in order to get your free shipping. This increases average order value and boosts sales. The bar is fully customizable with advanced targeting options including geo location, Shopify markets, customer, page, product, etc. You can have multiple free shipping offers for different countries, customers, and optimize the sales.

Categories:

Banners, Discounts

Integrations:

Shopify Admin, Hextom: Translate & Currency

Shopify Admin, Hextom: Translate & Currency

Languages:

English, Chinese (Simplified), Chinese (Traditional), French, German, Japanese, Spanish, Portuguese (Brazil), Portuguese (Portugal), Italian

English, Chinese (Simplified), Chinese (Traditional), French, German, Japanese, Spanish, Portuguese (Brazil), Portuguese (Portugal), Italian

Filter Reviews

Operator reports

100

%

Recommended

(

2

reviews

)
Photo of Reviewer Simon L.

Simon L.

Role:

Owner

Category:

Sports & Recreation

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

May 25, 2026

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

Hextom is easily customisable and allows for geo messaging about delivery or other important messaging

What was disappointing

can't think of any bad about it

Photo of Reviewer Simon L.

Simon L.

Role:

Owner

Category:

Sports & Recreation

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

May 25, 2026

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

Hextom is easily customisable and allows for geo messaging about delivery or other important messaging

What was disappointing

can't think of any bad about it

Photo of Reviewer Daniel V.

Daniel V.

Role:

Owner

Category:

Health & Beauty

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Feb 1, 2024

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:

Critical for me to do my job

What exceeded expectations

From the moment we added the bar, the average basket size went up. We have a tier system that offers first free tracked shipping, than free priority shipping and then different gifts.

What was disappointing

Both the level of customisation and geotargetting functions do the job for us. We like that the app keeps it simple but complex in terms of options. No complaints.

Photo of Reviewer Daniel V.

Daniel V.

Role:

Owner

Category:

Health & Beauty

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Feb 1, 2024

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:

Critical for me to do my job

What exceeded expectations

From the moment we added the bar, the average basket size went up. We have a tier system that offers first free tracked shipping, than free priority shipping and then different gifts.

What was disappointing

Both the level of customisation and geotargetting functions do the job for us. We like that the app keeps it simple but complex in terms of options. No complaints.

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