RELAY·SENTRYGet notified
Partner documentation · Fruugo

Relay Sentry for Fruugo: retailer setup and integration guide

How Relay Sentry connects a Shopify store to Fruugo: the webhook, connecting a Fruugo account, how products are chosen for the feed and the Product API, orders, stock, pricing and migration.

Platform: Shopify (embedded app)Fruugo APIs: Product API v1, Orders API v3, CSV feedUpdated 28 September 2026

01How will retailers obtain their webhook URL?

Retailers do not need to obtain or enter a webhook URL. Relay Sentry uses one webhook endpoint for every retailer, and Relay Sentry, as the partner, registers it with Fruugo. There is nothing for the retailer to copy, paste or configure.

The endpoint is:

https://relay-sentry.fly.dev/webhooks/fruugo

How callbacks reach the right retailer

Every request Relay Sentry sends to Fruugo's asynchronous APIs carries a unique X-Correlation-ID. Relay Sentry records which retailer and which action each ID belongs to before the request is sent. When Fruugo posts the result to the webhook endpoint, Relay Sentry looks the correlation ID up and applies the result to that retailer's account only. A callback with an unknown correlation ID is refused with HTTP 404.

Security

  • The endpoint requires HTTP Basic authentication. The credential is agreed between Relay Sentry and Fruugo when the endpoint is registered, and is checked with a constant-time comparison. If the credential is not configured, the endpoint refuses every request.
  • Duplicate deliveries are safe. Each callback is recorded by correlation ID (and by merchant product ID for product callbacks, since Fruugo sends one callback per product in a batch), so a redelivery or two copies arriving at once are processed exactly once.

What arrives on the webhook

Results of order queries, order confirmations, shipments, tracking updates, cancellations, returns and packing-slip requests (Orders API v3), and results of product saves and stock/price updates (Product API v1).

The one URL a retailer does give Fruugo: the feed URL

Retailers who list products through the CSV feed (most retailers) have a private feed URL that Fruugo collects on its own schedule. It is different for each retailer. To find it:

  1. In Shopify admin, open Apps → Relay Sentry → Settings.
  2. In the Feed URL section, click Copy. The section appears once the retailer's Fruugo account is connected.
  3. Send the URL to Fruugo through the catalogue settings in the Fruugo Retailer Portal, or to the retailer's Fruugo account manager. Only Fruugo can register it.
  4. Tick Fruugo has this URL so the setup checklist on the Dashboard marks the step done.

The feed URL contains a random 256-bit token and needs no login, so the retailer should share it with Fruugo only.

02Connecting a retailer's Fruugo account

Fruugo's APIs accept the same email and password the retailer uses to sign in to retailer.fruugo.com. Fruugo does not issue separate API keys, so Relay Sentry asks for that login.

Before starting

  • An approved Fruugo retailer account (Fruugo runs its own onboarding and checks).
  • A Shopify store with Relay Sentry installed.

Steps

  1. In Shopify admin, open Apps → Relay Sentry. The first visit opens a short tour; it can be skipped and reopened later from Help.
  2. Go to Settings. In Connect your Fruugo account, enter the Fruugo Retailer Portal email in Fruugo username and the portal password in Fruugo password.
  3. Click Save Fruugo login. A confirmation message appears.
  4. Click Test connection. Relay Sentry asks Fruugo for its category list, the one Fruugo call that answers immediately. A pass means Fruugo accepted the login. An account with Orders API access only will fail this test even with a correct login; for those accounts, click Sync orders on the Dashboard and check that orders appear on the Orders page.
  5. In Catalog settings on the same page, set the currency, language and VAT rate (and whether Shopify prices include VAT), then click Save catalog settings.
  6. Open the Dashboard and follow Things to do next. It lists the remaining setup in order: map categories, publish the first feed, give Fruugo the feed URL, and turn on order import.
  7. When the retailer is ready to ship orders the same day, go back to Settings → Automation and switch on Import Fruugo orders automatically. This is deliberately the last step, because Fruugo expects each order to be confirmed within one business day.

How the login is protected

  • The password is encrypted with AES-256-GCM before it is stored.
  • It is never shown again in the app, not even to the retailer, and is never written to logs.
  • It is only ever sent to Fruugo's own API endpoints.
  • If the retailer changes their Fruugo password, they enter the new one in the same place. If Fruugo starts refusing the login during normal syncing, Settings shows it at the top of the page together with Fruugo's reason.

03How products are selected for Fruugo

Relay Sentry offers two ways to send products. Both use the same selection rules and the same pricing.

RouteWho uses itHow products are chosen
CSV feedEvery retailer. Needs no Product API access.Automatic. Every Shopify product that passes the rules below goes into the feed. The feed is rebuilt within minutes of any product, price or stock change.
Product APIRetailers Fruugo has given Product API access.Manual. The retailer publishes chosen products from the Catalog page, one at a time or several together.

Selection rules, applied in this order

  1. Shopify status. Active products only, by default. On Catalog → Feed policy → Product selection the retailer can also include draft or archived products.
  2. Excluded tags. Any product carrying a tag listed under excluded tags on Feed policy is held back. Tags are the way to leave individual products out.
  3. Duplicate titles and blocked words. Two products with the same title are both held back until one is renamed. Products whose text contains a word on the retailer's blocked-word list are held back.
  4. Markets. Products or categories can be excluded from specific countries on Market access. A product excluded from every market is not sent.
  5. Category. Each Shopify product type must be mapped to a Fruugo category on Catalog → Mappings. Relay Sentry suggests up to three categories from Fruugo's own taxonomy for each unmapped type, but nothing is saved until the retailer accepts it.
  6. Required data. Each variant needs a brand (the Shopify vendor), a description, a title of 5 to 150 characters, a primary image whose URL is 150 characters or shorter, a SKU, and a valid GTIN/EAN/UPC (the check digit is verified).

A product that fails a rule is left out of that run and is not removed from Fruugo, so fixing it puts it back. Each product on the Catalog page shows a Why isn't it live? reason, such as No category, Invalid barcode or Rejected by Fruugo, and the list can be filtered by reason so the retailer can fix one cause at a time.

Publishing through the Product API

  1. Open Catalog and scroll to Publish via Product API.
  2. One product: choose it under Shopify product, enter the exact Fruugo category path, and click Publish product.
  3. Several products: tick products in the product table and click Publish N products together. Batch publishing is available for single-variant products that already have a mapped category.
  4. Fruugo's verdict arrives on the webhook. Each product then shows Live, Awaiting Fruugo or Rejected by Fruugo. For a rejection, See why shows Fruugo's own validation message per variant, with a Publish again button.

After a product is published this way, Relay Sentry sends stock changes to Fruugo within minutes of a Shopify inventory change, and checks Fruugo's stock, price and listing status every few minutes, correcting any difference it finds.

04Additional details

Orders

  • With automatic import on, Relay Sentry asks Fruugo for new orders every 5 minutes, over an overlapping 24-hour window so an order is never missed. Retailers can also click Sync orders at any time.
  • Each Fruugo order is created as a Shopify order, then confirmed back to Fruugo automatically. An order whose item can't be matched to a Shopify variant waits in a fix queue on the Orders page until the retailer maps it.
  • Fulfilling an order in Shopify with a tracking number sends the shipment and tracking to Fruugo. A shipped order can also produce Fruugo's packing slip.
  • Cancelling an unshipped order in Shopify cancels it on Fruugo. Refunding items in Shopify sends a return to Fruugo.

Stock, price and removals

  • Stock is the variant's total across Shopify locations, minus a safety buffer and up to an optional maximum, both set on Feed policy.
  • Prices can be adjusted store-wide, per product type or collection, per country, and by scheduled sales on Catalog → Pricing. Relay Sentry never changes Shopify prices.
  • Deleting, archiving or drafting a product in Shopify sets it to NOTAVAILABLE on Fruugo, which is Fruugo's way of removing a listing.
  • Under Settings → What stays in sync, retailers can stop automatic updates to title, description, images, price or stock on listings Fruugo already has.

Product and SKU IDs

IDs sent to Fruugo are fixed and derived from Shopify's own IDs (shopify-product-<id>, shopify-variant-<id>). They never change when a retailer edits a SKU, so a listing is never duplicated by a SKU rename.

Retailers moving from another connector

On Settings → Migration, a retailer already selling through another connector (for example CedCommerce) uploads or links that connector's feed. Relay Sentry matches each row to a Shopify variant and keeps the existing Fruugo product and SKU IDs, so current listings are updated rather than duplicated. An order cutover date stops orders the previous connector already imported from being imported twice.

Rate limits and reliability

Relay Sentry respects Fruugo's 1,000 requests per minute limit and waits for the Retry-After period when Fruugo returns HTTP 429. Failed requests are retried automatically with backoff, and Relay Sentry's own team is alerted about requests that keep failing, orders nearing Fruugo's confirmation deadline, and feeds that have not updated within a day.

Support

Retailers contact Relay Sentry from Help → Support inside the app, or at support@relaysentry.app.

Get notified at launch