Wholesale Gorilla

Wholesale Gorilla Logo

Built for Shopify

Wholesale Gorilla

Rating

75

%

Recommended

(

2

reviews

)

Pricing

From $34.95/month. Free trial available.

Launched

26-Sep-18

Wholesale Gorilla Logo

Built for Shopify

Wholesale Gorilla

Rating

75

%

Recommended

(

2

reviews

)

Pricing

From $34.95/month. Free trial available.

Launched

26-Sep-18

Wholesale Gorilla Logo

Built for Shopify

Wholesale Gorilla

Rating

75

%

Recommended

(

2

reviews

)

Pricing

From $34.95/month. Free trial available.

Launched

26-Sep-18

Grow your wholesale / B2B business with a comprehensive and efficient merchant solution.

Wholesale Gorilla is the app we wish we had when we launched our Shopify store. It seamlessly integrates wholesale pricing into your existing store—approved customers simply log in and shop with their special rates. Keep it simple with wholesale price rules, or unlock powerful B2B features like net terms, custom shipping, order limits, product exclusions, and quantity breaks. Whatever your needs, our full suite of tools has you covered. And when you need support? We’ve got your back.

Categories:

Wholesale

Integrations:

Checkout, Customer accounts, Shopify Admin

Checkout, Customer accounts, Shopify Admin

Languages:

English

English

Filter Reviews

Operator reports

75

%

Recommended

(

2

reviews

)
Photo of Reviewer Angela L.

Angela L.

Role:

E-commerce Manager

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Neutral

Apr 2, 2025

Years of use:

Less then 1 year

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

No

Importance:

Valuable but not essential

What exceeded expectations

Was an easy way to implement wholesale channel without building a wholesale site.

What was disappointing

Would be great if there were more sophisticated discounting options and customisations

Photo of Reviewer Angela L.

Angela L.

Role:

E-commerce Manager

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Neutral

Apr 2, 2025

Years of use:

Less then 1 year

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

No

Importance:

Valuable but not essential

What exceeded expectations

Was an easy way to implement wholesale channel without building a wholesale site.

What was disappointing

Would be great if there were more sophisticated discounting options and customisations

Photo of Reviewer Dwayne D.

Dwayne D.

Role:

E-commerce Manager

Category:

Arts & Crafts

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Apr 2, 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

The application seamlessly (and thankfully invisibly) integrated with our business and our Shopify theme. The support documents and the support staff are fantastic to work with.

What was disappointing

We wish there was more flexibility in customizing login/admin pages and the quick catalogue.

Photo of Reviewer Dwayne D.

Dwayne D.

Role:

E-commerce Manager

Category:

Arts & Crafts

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Apr 2, 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

The application seamlessly (and thankfully invisibly) integrated with our business and our Shopify theme. The support documents and the support staff are fantastic to work with.

What was disappointing

We wish there was more flexibility in customizing login/admin pages and the quick catalogue.

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