Order Automator

Order Automator Logo

Built for Shopify

Order Automator

Rating

100

%

Recommended

(

1

reviews

)

Pricing

Free plan available. Free trial available.

Developer

Launched

27-Sep-19

Order Automator Logo

Built for Shopify

Order Automator

Rating

100

%

Recommended

(

1

reviews

)

Pricing

Free plan available. Free trial available.

Developer

Launched

27-Sep-19

Order Automator Logo

Built for Shopify

Order Automator

Rating

100

%

Recommended

(

1

reviews

)

Pricing

Free plan available. Free trial available.

Developer

Launched

27-Sep-19

Save time and scale: Automate order actions, grow revenue with post-purchase upsells, and more

Order Automator helps you save time and increase revenue with automated workflows, post-purchase upsells, Fraud Guard, custom notifications, scheduled automations, and Amazon MCF fulfillment. Create rules that tag, fulfill, notify, monitor, or protect orders. Launch smart cross-sell offers after checkout to increase AOV without disrupting the buying experience. Explore features, activate what helps you, and request customizations to tailor to your specific use case.

Categories:

Workflow automation, Orders - Other

Integrations:

Checkout, Shopify Admin, 2048 Variants, Amazon FBA, Amazon MCF, Post-purchase page, Thank you page

Checkout, Shopify Admin, 2048 Variants, Amazon FBA, Amazon MCF, Post-purchase page, Thank you page

Languages:

English

English

Filter Reviews

Operator reports

100

%

Recommended

(

1

reviews

)
Photo of Reviewer George P.

George P.

Role:

Owner

Category:

Sports & Recreation

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Sep 25, 2025

Years of use:

Less then 1 year

Relationship with this product:

I was the buyer, not really a user

Still use this tool:

Yes

Importance:

Critical for me to do my job

What exceeded expectations

There is a limitation in Shopify in that it will not automatically change the product line item or entire order status to 'fulfilled' for digital products if you're also selling physical products that should only change status to fulfilled after order has shipped. Order Automator resolves this problem. It took just a few minutes to configure and simply just works, couldn't do without it, and remains one of our most important apps on our Shopify store.

What was disappointing

None, it solves a problem and has worked perfectly since day 1, it's a crucial app.

Photo of Reviewer George P.

George P.

Role:

Owner

Category:

Sports & Recreation

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Sep 25, 2025

Years of use:

Less then 1 year

Relationship with this product:

I was the buyer, not really a user

Still use this tool:

Yes

Importance:

Critical for me to do my job

What exceeded expectations

There is a limitation in Shopify in that it will not automatically change the product line item or entire order status to 'fulfilled' for digital products if you're also selling physical products that should only change status to fulfilled after order has shipped. Order Automator resolves this problem. It took just a few minutes to configure and simply just works, couldn't do without it, and remains one of our most important apps on our Shopify store.

What was disappointing

None, it solves a problem and has worked perfectly since day 1, it's a crucial app.

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