Connection walkthrough

Shopify
Step-by-step setup

Follow this guide for an app owned by your store's Shopify organisation. You enter three values in Revient; Revient handles the access-token exchange. The Revient public app is coming soon and remains unavailable until Shopify review, applicable approvals and our setup are complete.

8 stepsVisual references includedChecked 2026-10-07

Before you start

Ticks are kept in this browser only.

Follow the path that matches your account. Provider screenshots come from the linked official documentation and may show a different theme or older navigation. Configuration examples are labelled separately.

Permissions to choose

Use these exact permission names. Conditional permissions are needed only for the features described.

Permission / scopeWhen neededWhat it allows
read_locationsConditionalRetail location for an in-store/POS order.Add for sale-location evidence. A POS sale can still be shipped; its retail location does not prove pickup.
read_merchant_managed_fulfillment_ordersConditionalDelivery method and assigned pickup/fulfillment location for merchant-managed fulfillment groups.Add for pickup-method evidence. Release the version, approve the changed installation, reconnect/check access and refresh cases. Revient reads up to 20 pages of 50 visible groups, reports failed or non-advancing pages, and retains successful earlier pages. Third-party-managed groups may remain unavailable even after the last visible page; do not interpret a partial result as complete coverage. No additional scope is requested just for pagination.
read_shopify_payments_disputesRequiredRead Shopify Payments dispute type and final status. Only CHARGEBACK + LOST qualifies; inquiries and won outcomes do not.Different from the restricted dispute-evidence permission below.
read_ordersRequiredOrder totals, payment authorisation and capture, AVS and CVV result letters, wallet, gateway error, refunds, and fulfilment on the order.Does not include card number, BIN, expiry or cardholder name. The normal order window is 60 days. Fraud-class losses also read Shopify’s billing/shipping comparison. An authorization is not a capture; matching addresses and successful payments do not establish cardholder identity. No extra payment scope is required for these typed order-transaction reads.
read_returnsRequiredReturn status and quantities, kept separate from refunds.Without it, Revient reports return access as unavailable rather than showing an empty return list as if it had been checked.
read_fulfillmentsRequiredFulfilment and tracking numbers used for carrier history and proof of delivery.Fulfilment on the order is also readable with read_orders. This scope covers fulfilment updates.
read_all_ordersConditionalRequired alongside read_orders when a lost chargeback belongs to an order created more than 60 days ago.Revient imports lost chargebacks whatever the order's age, so this covers every order older than 60 days. Request Shopify approval for this app first, then add the scope to a released version and approve the changed installation. A recent chargeback can refer to an older order.
read_shopify_payments_dispute_evidencesOptionalThe evidence you submitted to Shopify for each dispute, including proof of delivery files.Shopify grants this only to approved public apps in the dispute space; a store-owned app cannot declare it, and the app version fails to save if you try. Revient's public app will request it once Shopify approves it. Until then, download the proof you submitted from the chargeback in Shopify admin and upload it to the case under Add evidence. Revient reads it the same way. This matters most for orders older than about 120 days, after carriers such as UPS delete their tracking history.
read_customersRequiredFraud check app marks on the customer who placed a lost order, such as Beacon's Verify-SYS tag after the customer confirms a code sent to their phone. Counted on fraud claims.Revient reads only the tags of the customer on a lost chargeback's order. It never reads the customer's other orders, spend, notes or marketing consent. Customer fields are protected customer data: in the Dev Dashboard also allow protected customer data access for the app, then release the version and approve the changed installation. Without it, customer tags are simply not read.
Write permissions and read_shopify_payments_payoutsNot requestedRevient does not edit the store or read payouts.

Request read_shopify_payments_disputes, read_orders, read_returns, read_fulfillments and read_customers. For POS and pickup context also add read_locations and read_merchant_managed_fulfillment_orders; release the version and approve the changed installation. Verify sale channel, sale location, delivery method and assigned pickup location in the case. These do not prove handover. For a confirmed lost chargeback, Revient reads Order.name, processedAt, email, shippingAddress.name/city/zip/countryCodeV2 and billingAddress.name as a name fallback. Name, email and postcode are protected customer fields. No card numbers are requested. read_customers is requested only to read fraud check app tags on the ordering customer, such as Beacon's Verify-SYS. Orders older than 60 days require separately approved read_all_orders.

Your steps

Connect your organisation's app

Keep Shopify and Revient open in separate tabs. Complete the provider setup first, then connect and check a known order.

  1. Check the organisation and create an app

    Shopify Dev Dashboard → Apps

    • Confirm the selected organisation contains your store. For a development store, check Dev stores under the same organisation.
    • Choose Create app, then Start from Dev Dashboard. Name it Revient and create it.
    You should seeYour new app appears in the same organisation as the store you will connect.
  2. Set the read permissions and release a version

    Your Shopify app → Versions → Create version

    • For this API-only connection, use Shopify's default app-home URL below.
    • Switch on exactly the seven scopes in the configuration reference, then release the version. Leave approval-only scopes out unless Shopify has granted them.
    • In the same app, open API access → Protected customer data access. Request access to customer data and to the name, email and address fields, giving fraud prevention and chargeback evidence as the reason. Without it Shopify refuses the customer's tags and the order's name and email even when read_customers is switched on.
    • If the app is already installed, open your store admin → Settings → Apps, open the app and approve the updated permissions. A released version does nothing for an installed store until this approval. Then select Check connection in Revient.
    Provider screenshotProvider reference: look for the released version on this screen.Shopify: create and install a Dev Dashboard app ↗

    Provider reference: look for the released version on this screen.

    You should seeA released version is listed, and Check connection in Revient shows every requested scope as granted.
  3. Install the released app on your store

    Your Shopify app → Installs → Install app

    • Choose the target store in Shopify's installation screen and approve installation.
    You should seeShopify lists the store as an installation of this app.
  4. Find the client credentials

    Your Shopify app → App settings

    • Locate Client ID and Client secret. Keep this tab open while completing the Revient form.
    Provider screenshotProvider reference: copy these two fields from your own app.Shopify: create and install a Dev Dashboard app ↗

    Provider reference: copy these two fields from your own app.

    You should seeYou have the two credentials from the installed app. You do not need to generate or copy an access token yourself.
  5. Enter the three values in Revient

    Revient → Integrations → Shopify → Connect Shopify

    • Choose App owned by the store's organisation.
    • Enter the Shop domain, Client ID and Client secret using the Revient field reference. Select Connect Shopify.
    • The Revient public app option remains unavailable. It will use Shopify's install-and-approve flow when ready.
    You should seeYour store appears as a saved connection, or the form explains the problem. Save success is not proof that every permission has passed.
  6. Check access, then sync and compare

    Revient → Integrations → Shopify → Manage Shopify

    • For the correct store, select Check connection and review missing scopes separately from protected-field warnings.
    • Follow the automatic sync, or select Sync now to refresh, then open the intake queue and run progress.
    • Choose an order linked to a CHARGEBACK with final status LOST. Compare its order number, amount, currency, order date, name, email, shipping street lines, city, postcode and country against Shopify's order-time values. A guest checkout may have no Customer object; a display name that is only an email is not a verified name.
    • For POS or collection, compare the sale channel, retail sale location, fulfillment method and assigned location. POS does not mean pickup, and an assigned location does not prove handover. Merchant-managed access can omit third-party-managed groups; partial coverage stays explicit.
    • Confirm any successful refund is allocated to that dispute or covers the whole order. A fully refunded case is excluded; a partial refund needs a verified remaining disputed balance.
    • In Order & customer, verify ordered products and quantities. Timeline includes available Shopify order events; partial API coverage is shown and may differ from the Shopify admin timeline. Optional address line 2 is omitted when absent. These order reads use read_orders and approved older-order access, not read_customers. read_customers is used only for fraud check app tags on the ordering customer.
    • Open Cases. Incomplete lost chargebacks show Needs information; inquiries, won and open outcomes are excluded. Add tracking in Shopify and refresh the affected case to create a new evidence revision.
    You should seePartial GraphQL results retain the available fields and identify restricted, unsupported, missing or temporarily unavailable fields without dropping a genuine dispute.
  7. Resolve missing access only when needed

    Shopify app access settings, then Revient → Manage Shopify

    • Compare the installation's granted scopes in Check connection with this guide. For a missing standard scope, create and release an updated app version, approve the changed permissions on the installed store, reconnect if prompted, then check again.
    • Compare the order creation date, not the dispute date, with the 60-day order window. In this app's API access requests, request access to all orders where Shopify makes that request available. After approval, add read_all_orders alongside read_orders, release the version and approve the changed installation. If the request is unavailable for your app, ask Shopify about that app's eligibility; do not change distribution merely to bypass the requirement.
    • For redacted names, email or addresses, inspect the field-specific errors and actual app type. Shopify documents protected fields as available to custom apps; admin-created custom apps vary by plan. Public apps require protected-data review. A merchant-owned Dev Dashboard credential is not proof that the installation has every requested permission.
    • For a public app, the app owner opens Partner Dashboard → Apps → API access requests → Protected customer data access and selects the necessary name, email and address fields, completes data protection details and requests review. Development-store-only testing has a different review requirement. Revient will manage its future public app; merchants should not create one themselves.
    • read_customers does not fix missing order email or addresses: Revient reads those from the original Order, and uses read_customers only for fraud check app tags on the ordering customer. A null order response alone does not distinguish permissions, an old order or a deleted order.
    • Resync after permissions are effective. If Shopify cannot supply a fact, upload an original order export to supplement an exact same-store order ID, or add a reviewed evidence-backed correction. The export supplies order facts, never proof that a chargeback was lost.
    You should seeEach missing fact has an identified access limitation or a separate evidence source.
Your steps

Review the collected evidence

Check the source facts and processing result after completing the provider-specific connection steps.

  1. Check the case and automatic evidence results

    Revient → Integrations → Intake, then Cases → Evidence

    • Compare the order's saved contact fields and billing/shipping addresses, including partial-field access warnings. Do not substitute a current customer profile for historical order facts.
    • Shopify intake accepts only CHARGEBACK disputes with final status LOST and a verified remaining disputed balance. Inquiries, won and open outcomes are excluded before customer enrichment, tracking, scoring and AI.
    • Confirmed lost chargebacks with missing facts appear in Cases as Needs information. Missing facts remain unknown until supported by evidence.
    • Historical non-qualifying records remain in internal audit history, outside merchant intake and active Cases.
    • Cases combines retained Test and ordinary records. A small Test badge identifies records that cannot be routed, sold or counted in live financial totals. AI still requires its approved configuration and valid permissions.
    • For each outbound, replacement or return parcel, check the tracking number, event dates and item coverage. Registration requires a confirmed lost dispute and verified notification-disabled settings. Delivery photos and signatures are separate private assets; unavailable assets are labelled, and a recipient postcode does not prove the delivery address.
    • Use the row menu for one case. Select at least two checkboxes to show bulk actions. Refresh evidence requests current connected-source data and then checks it; Recheck stored evidence uses the facts already retained. Follow each row's progress and refusal reason.
    • Archive retains history and may be blocked by active obligations. Use the Archived filter to restore a case. Reimporting its source does not restore it.
    You should seeYou can identify the current evidence, unknown fields, processing state and next merchant action without losing historical assessments.

Match these fields in Revient

Enter your own account’s values. Example values are for orientation; do not paste them as credentials.

Revient fieldWhere to find itExample / guidance
Shop domainYour Shopify store's permanent domain; enter the hostname only, without https:// or a page path.your-store.myshopify.com
Client IDDev Dashboard → your app → App settings → credentials.Paste your app's Client ID
Client secretKeep privateThe same app's credentials. Enter it directly in Revient's password field.Paste your app's Client secret

If something goes wrong

shop_not_permitted

Compare the organisation ID in both Dev Dashboard URLs and confirm the store and app are listed there. If they belong to different organisations, use CSV import while Revient's public app is unavailable.

A scope cannot be selected or the version will not release

Remove approval-only scopes from this initial setup. Restricted dispute-evidence access also requires an eligible public app; adding a scope name cannot grant it.

Connection saved, but orders or fields are unavailable

Run Check connection. Review installed scopes, the order's age and protected-data access separately. Releasing a version alone does not approve changed permissions on the store.

No disputes appear

Confirm that the dispute belongs to Shopify Payments and is accessible to this app. For another payment provider, import that provider's dispute evidence.

Only one active case appears, but there are many archived records

Active cases and archived cases are separate counts. Sync refreshes available Shopify source facts on archived records without restoring or assessing them. Review the current outcome and refunds, then use Cases → Archived → Restore for qualifying losses. Exported order counts are not lost-chargeback counts.

An order still says Needs information after connecting

Verify the order number/date, name/email, shipping city/postcode/country, CHARGEBACK + LOST outcome, refund allocation and tracking individually. Missing shipment proof blocks recovery; it does not remove the genuine loss. Correct tracking in Shopify and refresh the case. Automatic webhooks and reconciliation may take time, so check the last successful refresh.

Common questions

What does the evidence engine read from Shopify?

A confirmed lost dispute, the order total, payment authorisation and capture, AVS and CVV result letters when Shopify returns them, refunds, returns, and fulfilment with tracking numbers. It does not read the card number. Proof of delivery is fetched from the carrier after the tracking number is known.

Do I need a callback URL or an access token?

No callback is needed for this method. Enter the client credentials; Revient requests and renews Shopify access tokens on the server.

Should I create the Revient public app myself?

No. Revient owns that future app and its approval process. When available, merchants will install it and approve access without creating an app or entering a client secret.

Do I need write permissions to read refunds or returns?

No. Revient reads available refund facts using read_orders and return objects using read_returns. It does not create refunds or process returns in your store.

What happens if Shopify records an accepted or completed return?

Revient pauses pursuit for review of the affected goods, replacements and disputed balance. A completed return with zero processed or refunded quantities is still a return; it must not be shown as no return requested. Return approval or completion is kept separate from independently verified warehouse receipt and successful payment refunds. No additional write scope is needed.

Does a missing postcode always mean Shopify permissions are wrong?

No. Revient distinguishes a restricted field from a source that returned no value. An AE destination can legitimately have no postcode; its absent value remains null and does not block canonical intake or count as a verified address match. Do not enter 00000 or invent a postcode. Check the country and original address first. Changing read scopes cannot supply information that was never recorded. Other missing address requirements are shown individually for review.

Why does a refund still need reconciliation?

Revient compares successful refund transactions with Shopify's typed order refund total. A matching zero establishes no successful refund in that source snapshot; an incomplete transaction list alone does not. Missing totals, partial field errors, currency differences or disagreement leave the balance unknown for review. A whole-order refund total does not identify which smaller disputed transaction or item was refunded. These reads use read_orders; adding write scopes is not a fix.

What is the difference between Refresh evidence and Recheck stored evidence?

Refresh evidence queues new reads from available connected sources and already selected mailbox messages, then tracking and reassessment. Recheck stored evidence reassesses the retained facts without claiming a new provider read. Existing findings stay visible until the work finishes; unavailable sources and partial refusals are reported for each case.

Which disputes receive recovery scoring?

Shopify intake accepts only CHARGEBACK disputes with final status LOST and a verified remaining disputed balance. Inquiries, won and open outcomes are excluded before customer enrichment, tracking, scoring and AI. Historical non-qualifying records remain in internal audit history, outside merchant intake and active Cases. An order or tracking number alone does not establish a lost dispute. Supply the actual confirmed loss and preserve its original order and dispute identities.

Will testing send messages or release a case?

Evidence-testing mode blocks customer, agency and buyer delivery. Importing records or reviewing an assessment does not release a case.

What happens when I disconnect?

New reads stop and the Revient connection is disabled. Evidence already retained remains subject to the workspace retention and removal controls. Revoke the application or key in the provider account as well if you want to remove its access there.

Source documentation

Use these provider pages if a menu name has moved or your plan shows different options.

Set up another source