Skip to main content

Direct Shopify connection · 9 min read

How to automate Shopify review requests with EmbedMyReviews

Written by , Founder & Lead Developer at EmbedMyReviews. LinkedInPublished

Connect a merchant-owned Shopify app to EMR and choose either fulfilled orders or paid orders as the trigger. EMR creates the webhooks and adds eligible buyers in your review campaign. Use fulfilled orders for physical goods only when your delay allows the customer to receive and experience the purchase.

TL;DR

The short version

  • The store owner creates the app inside the same Shopify organisation as the store.
  • Choose fulfilled or paid; fulfilled does not mean delivered.
  • Verify that a real order exposes the buyer email. Scopes alone do not prove customer-data access.

What happens automatically?

  1. 01

    Order is fulfilled or paid

  2. 02

    EMR applies your selected delay

  3. 03

    The buyer receives your campaign

Choose this when: A retailer wants a business review after a purchase and can reliably connect the order event to the customer experience.

Choose another route when: Carrier-confirmed delivery, product-specific ratings, or a shipping journey longer than the native seven-day delay. Use a delivery event when timing must follow actual arrival.

Who does what?

The business owner

Creates, releases and installs an app in the store’s own organisation, then supplies its credentials and confirms customer-data access.

You, the agency

Connects those credentials to EMR, chooses the correct purchase moment and delay, and verifies a real eligible order.

Set up EMR Automations while signed in as the agency owner and working in the intended client location. The business owner handles access to their own software. They do not need your agency login or a daily EMR task.

A message you can send the business owner
“We can connect your Shopify orders to your review campaign. Your store owner or administrator will create and install the connection app in your own Shopify account. I will connect its credentials to EMR, agree the right order event and delay, and check a real order. For shipped products, we must allow time for the customer to receive the purchase.”

Once it is connected

The merchant processes orders in Shopify as usual. The selected paid or fulfilled event starts the review workflow. You monitor the connection, customer email access and request timing, especially if delivery times change.

Have these ready

  • The store’s .myshopify.com domain, not only its public shop domain.
  • The store owner or an appropriately authorised administrator for the Dev Dashboard app setup.
  • Client ID, Client secret, read_orders and read_customers scopes, plus usable buyer email in an actual order.
First client? Prepare the review campaign first

From your agency, open Business → Customers → Manage Customers → Open dashboard (or the Customer tab if shown). Select the business location you are setting up.

A campaign is the review message and any follow-ups you want EMR to send. A feedback form controls where the customer is invited to leave their review.

Use Grow → Review Tools → Feedback Forms to prepare the customer’s review destination, then Grow → Campaigns → Request Reviews to create the campaign. Choose its feedback form, message and working sender. Start with one email step for this walkthrough. Add your own test contact through Grow → Campaigns → Invites and verify the message and link.

Set the campaign’s sending window and duplicate-request window. Honour opt-outs. For Google review campaigns, ask eligible customers consistently, leave review gating off and offer no incentives.

Campaign sending rules and setup reference →

Do I need to understand APIs or write code?

No coding is needed. Shopify calls the connection an “app”, but you only configure its settings and permissions. The store owner creates it in the store’s own organisation, then you paste its Client ID and Client secret into EMR. EMR handles the connection and token renewal.

A key or token is a private connection credential. A webhook is an automatic notice that something happened, such as a payment completing. Keep connection credentials private; the business owner does not need to share their everyday login password.

The walkthrough

Set it up, step by step

Owner creates and installs a custom app. Work through this together the first time.

  1. Together

    Choose the event that matches the product

    For physical goods, choose When the order is fulfilled and allow time for delivery. For a service or digital purchase experienced at checkout, When the order is paid may fit.

    If fulfilment means the parcel has only just left the warehouse, do not call this a delivered-order trigger. Use a delivery-based route if the required timing cannot fit the available delay.

    Before moving on: The owner agrees that customers will have experienced the purchase before the request.

  2. Business owner

    Create and install the merchant-owned Shopify app

    Open the Shopify Dev Dashboard while signed in as the store owner or an authorised administrator. Select the organisation that owns this store. Under Apps, choose Create app → Start from Dev Dashboard, name it Review requests and create it.

    On Versions, create a version and add read_orders and read_customers under Scopes. Scopes are the permission checkboxes for the app. If an App URL is required, Shopify provides the default https://shopify.dev/apps/default-app-home for a connection without its own app screen. Release the version.

    Open the app’s Installs card → Install app, select this store and approve the installation. Open App settings and copy Client ID and Client secret. You will paste these into EMR; you do not need to request or renew access tokens yourself.

    Before moving on: The app is released and installed on the intended store in the same organisation.

  3. Agency

    Connect Shopify in the client location

    From your agency account, open the client dashboard and select the correct location. Go to Connect → Integrations → Automations. On the Shopify card, click Connect Shopify. If it already shows Manage Shopify, open that and choose New Integration.

    Enter the .myshopify.com domain, Client ID and Client secret. These are the credentials for this connection; do not substitute an old Admin API token. Validate and continue.

    Before moving on: EMR accepts the store and app credentials.

  4. Agency

    Choose the campaign, trigger and delay

    Select the branded campaign and the fulfilled or paid trigger you agreed. Choose a delay up to seven days or The next morning with the correct timezone.

    Review the settings and click Create Webhooks & Activate. EMR sets up paid, fulfilled, cancelled and refunded order subscriptions.

    Before moving on: The active connection matches the agreed event and destination.

  5. Together

    Verify a real eligible order and its email

    Use the next agreed legitimate order or an owner-approved real transaction with your own contact details. Shopify gateway test orders are ignored by this EMR integration; a test order cannot prove the production path.

    Check the activity entry and buyer email before judging message delivery. Shopify distinguishes custom-app types in its protected-data rules. An older admin-created app’s plan restriction is not a universal rule for every Dev Dashboard app.

    Before moving on: A non-test, non-zero order exposes the email and reaches the intended inbox through the campaign.

Example: a local retailer ships an online order

The retailer fulfils an order on Monday and normally delivers within three days. A five-day delay is an example starting point, not a delivery guarantee. EMR schedules from fulfilment. If delivery can regularly exceed seven days, use a delivery-confirmation workflow instead of this fixed-delay route.

How to know it is working

Follow the event all the way to a message you receive. A green connection or a successful test response is only part of that journey.

Where to look: Open Automations → Shopify, click the connection name and check Recent orders. Match a genuine eligible order and its buyer email. Check the contact under Grow → Campaigns → Invites, then confirm the review message. In the automation’s activity, Sent means the contact was passed to the campaign; the inbox check confirms the message actually arrived.

When to expect the message: Set the first-request delay here in the automation. EMR does not add the campaign’s first-step delay on top, but its allowed sending hours still apply. For example, a request due at 8 pm waits if the campaign only sends between 9 am and 6 pm. Follow-up timing stays in the campaign.

Testing again? Use another email address you control for a second successful-send test. Reusing the first address can correctly trigger your duplicate-request rule. Keep that protection on for real customers.

Test 1: Create and activate the webhook subscriptions.

Expected result: Shopify accepts them. Continue to the order test; this alone is not a successful customer journey.

Test 2: Follow one agreed real, non-zero order through the selected paid or fulfilled event.

Expected result: EMR records the event with a buyer email and the expected schedule. Verify the campaign message, branding and link.

Test 3: On a suitable order agreed with the owner, check a cancellation or refund while its request is still Scheduled in EMR.

Expected result: The received cancellation or refund stops that pending automation request. It does not withdraw an order already passed to the campaign. Use an appropriate existing case rather than creating unnecessary payments or refunds.

If something does not work

The app credentials are rejected

Check installation, released scopes, Client ID and secret, .myshopify.com domain and app/store organisation. This credential flow is for stores in the app’s own organisation.

Orders arrive without contact details

Check whether the buyer supplied an email, the app’s scopes and protected-customer-data access. The native connection skips orders without an email. Diagnose the app type before recommending a Shopify plan upgrade.

The test order is ignored

Gateway test orders are intentionally skipped. Use an agreed eligible real order to validate production delivery.

At handover, record the connection name, source account, client location, campaign, timing, test result and person responsible for failures. Test again after changing the workflow. Keep passwords, API keys and private webhook URLs out of the handover notes.

Cost, reliability and the simpler alternatives

Cost: No separate bridge subscription for this route. Shopify, EMR and delivery costs remain. Confirm customer-data access for the app and store before paying for any plan upgrade.

Reliability: EMR subscribes to order, cancellation and refund events. It also periodically repairs missing subscriptions and checks recent orders. A successful subscription proves connectivity, not access to the buyer’s email or delivery of the campaign.

When to use something else: Use a carrier or fulfilment system’s delivered event through an inbound webhook when arrival varies. Use an existing suitable customer email if it is the only reliable completion signal. Avoid running both a store review app and EMR invitations to the same customer unintentionally.

Common questions

Need help with a setting?