XR Direct as Source

XR Direct is a wholesale distributor of adult and lifestyle products that exposes its catalog and inventory through three static feeds: a Product XML feed, an Image XML feed, and a public Inventory CSV. This guide walks you through connecting XR Direct as a source in Flxpoint, configuring the Get Inventory Primary and Secondary operations, and troubleshooting common issues.

How to Connect

๐Ÿงญ Phase 1: Launch the Source Wizard +
Open Sources and start the Wizard
Go to Sources (building icon) โ†’ + Add Source โ†’ Configure Single Source. This opens the Source Wizard.
Step 1 โ€” Create Source
Enter a clear name (e.g., XR Direct). Then choose the Source Type that best fits how this Source will be used.

Choose the right Source Type

For most XR Direct setups, we recommend Vendor Warehouse. Use the other options only if they better match how you store and ship inventory.

  • Vendor Warehouse (Recommended): XR Direct ships products directly to your customers on your behalf.
  • Internal Warehouse: You stock items and ship from your own facility.
  • External Warehouse: A 3PL or external partner ships your owned inventory.
  • Product Data Source: Content-only source to enrich product details (no fulfillment).
For XR Direct: select Vendor Warehouse. This is the typical setup for the XR Direct catalog, where products are dropshipped to your customers.
After selecting the Source Type, click Save & Next.
Step 2 โ€” Vendor Set-Up
Choose Yes (Recommended) to Assign Vendor โ†’ Confirm. You'll enable Vendor reporting and an optional portal.
Step 3 โ€” Order Fulfillment
Decide if this source is eligible to fulfill orders:
  • Yes (Recommended): You can route orders here.
  • No: Routing/Shipping steps won't apply.
Click Confirm.
Heads up: Order operations (Send Fulfillment Requests, Get Shipments, Get Invoices) for XR Direct are configured separately from the feed-based inventory operations. See Phase 3 for details.
Step 4 โ€” Order Fulfillment Settings
Use Defaults or No, Customize. You'll see:
  • Override: Auto Processing (Use Global / Auto Process / Do NOT Auto Process).
  • Commit Stock + Inventory Management Options.
  • Allow Backorders / Cancel Unacknowledged Items.
Click Save & Next.
Step 5 โ€” Shipping Cost Estimations
Pick one:
  • Yes, Use Rate Shopping (Real-Time Estimates).
  • No, Set Up via Rules.
Note: XR Direct provides weight only, not full dimensions. Real-time rate shopping that requires dimensions may be limited; rule-based shipping is often the simpler fit.
Click Save & Next.
Step 6 โ€” Order Routing Groups
Enable on all routing groups? Select Yes or No, Customize. Optionally mark Default Order Routing Group. Save & Next.
Reminder: Complete Step 1 โ€” Shipping Methods and Step 2 โ€” Source Location in Phase 2 below, then move on to Phase 3 to set up the XR Direct feed connections.
๐Ÿšš Phase 2: Shipping Methods & Source Location (Finish the Wizard) +
Goal

Finish the Source Wizard by confirming your Ship From location and reviewing shipping behavior for XR Direct.

Step 1 โ€” Shipping Methods
When the wizard opens the Shipping Methods step for this Source:
  • Skip if you do not need to configure shipping methods at this time.
  • Or Add Method to configure shipping methods if required for your setup.
Click Save & Next to continue.
Step 2 โ€” Source Location (Ship From)
Enter the Ship From address:
  • Address, City, State/Code, Postal Code, Country/Code
  • Optional: Contact Name, Phone, Email
This address is used for routing logic, rate shopping (if enabled), and reporting.
Finish the Wizard
Review Steps 1โ€“2, then click Save and Complete. The wizard is now finished.
Next: Proceed to Phase 3 to configure the XR Direct feed connections used by the inventory operations.
๐Ÿ”‘ Phase 3: Configure Your XR Direct Feed Connections +
Goal

Unlike most sources, XR Direct does not use an interactive Test Connection button or a single connection record. The integration is configuration-driven: you provide three feed URLs in your XR Direct integration settings, and Flxpoint securely retrieves data from each feed on every run.

How XR Direct differs from a typical connection
XR Direct's catalog is delivered through three separate static feeds. Flxpoint reads each one on every Get Inventory (Primary) run and merges them into a single product record. There is no portal login, no Test Connection step, and no per-account API token to manage.
  • Feed 1 Product XML feed โ€” the full catalog (titles, descriptions, variants, options, pricing). Credentials are embedded in the feed URL itself. Pulled fresh on every run; not cached.
  • Feed 2 Image XML feed โ€” image URLs keyed by SKU. Credentials are embedded in the feed URL itself. Cached for 1 day to reduce repeated downloads.
  • Feed 3 Inventory CSV feed โ€” quantities keyed by ItemID. No credentials required โ€” this feed is public. Cached for 1 hour.
Step 1 โ€” Open the Get Inventory [Primary] integration
Inside your XR Direct source, open Integrations โ†’ Get Inventory [Primary] and click Start Creating Integrations. In the connector gallery, choose XR Direct. If you don't see it, use Not Listed? โ†’ Request a custom integration.
Step 2 โ€” Enter the three feed URLs
On the integration settings page, you'll enter each feed URL in its own configuration field:
  • Product Feed URL โ€” the XR Direct product XML feed. The login and password supplied by XR Direct are embedded directly in this URL.
  • Image Feed URL โ€” the XR Direct image XML feed. As with the product feed, credentials are embedded in the URL.
  • Inventory Feed URL โ€” the public XR Direct inventory CSV feed. No credentials are needed for this one.
Where do these URLs come from? XR Direct (also known as Sex Toy Distributing / STD) provides them when you sign up as a reseller. Paste each URL exactly as given. If your credentials change later, update the affected feed URL in the integration settings.
Security tip: Because the product and image feed URLs contain your account login and password, treat these URLs like passwords. Do not share them in support tickets or screenshots without redacting the credential portion.
Step 3 โ€” Save and run
Save the integration settings, then run Get Inventory [Primary] manually for your first sync. There is no Test Connection step โ€” the integration verifies the product feed URL is reachable as the first step of every run, so credential or URL issues will surface in the run logs.
What success looks like: The first run downloads the product XML feed fresh, caches the image XML feed for 1 day, caches the inventory CSV for 1 hour, and writes products and quantities to your Global Inventory Pool in batches of 500.
Step 4 โ€” About the other operations
Get Inventory [Secondary] reuses the same public Inventory CSV feed URL as a lightweight quantity refresh between full Primary runs.
  • The order-side operations (Send Fulfillment Requests, Get Shipments, Get Invoices) are not delivered through these three feeds. If your XR Direct workflow requires them, contact your Flxpoint account manager to confirm availability and configuration.
Next Configure Inventory Operations ๐Ÿš€
Now that your XR Direct feed URLs are saved, go to the Operations section of this doc to set up Get Inventory [Primary] and Get Inventory [Secondary]. Each operation will read from the feed URLs you configured here.

Product Operations

Get Inventory Primary imports the full XR Direct catalog (products, images, pricing, attributes) once daily. Get Inventory Secondary is a lean delta from the public Inventory CSV โ€” run hourly.

Get Inventory (Primary)
Get Inventory (Secondary)
Supported
Introduction

XR Direct โ€” Get Inventory [Primary] imports your full XR Direct catalog into Flxpoint by downloading and merging three feeds: the Product XML, the Image XML, and the public Inventory CSV. You'll (1) confirm the three feed URLs are in place, (2) choose a few settings, and (3) select a mapping template. When a step is finished, you'll see a check mark next to it.

Setup Steps
  • 1Connect XR Direct: Confirm the three feed URLs (Product XML, Image XML, Inventory CSV) are saved on your XR Direct source. Click Save and Proceed.
  • 2Choose Settings:
    • Copy Variant Images โ€” If true, every variant keeps its own image set. If false (default), images shared across all variants of a parent are promoted to the product level.
    • Archive/Un-Archive Inventory โ€” Items absent from the latest feed are archived (qty 0); they auto-restore when they reappear.
      Tip: Turn on Archive in either Primary or Secondary, not both.
    Click Save and Proceed.
  • 3Select a Mapping Template: Choose XR Direct Get Source Product 1 and click Save and Complete.
What happens on each run
  • Ping the product feed URL first โ€” fast-fail if it's unreachable or credentials are bad.
  • Download the Product XML fresh on every run (no caching).
  • Download the Image XML (cached in S3 for 1 day) and parse into a SKU โ†’ image-URLs map.
  • Download the Inventory CSV (cached for 1 hour) and parse into a SKU โ†’ quantity map.
  • Parse the Product XML with a resilient JAXB unmarshaler โ€” if it fails due to unescaped & characters outside CDATA blocks, the integration auto-applies a CDATA-aware regex fix and retries.
  • Group variants by masterProductId: items where masterProductId differs from model are variants of the parent.
  • Map, merge with inventory + images, save in batches of 500.
Field Mapping (Product XML โ†’ Flxpoint)

Product-level fields (apply to the parent SKU).

XR Direct Source Field Flxpoint Field Processing Notes
masterProductId Product โ†’ SKU (parent) Parent SKU; same as model for standalone products.
title Product โ†’ Title Whitespace trimmed.
description Product โ†’ Description HTML tags stripped.
brand Product โ†’ Manufacturer Title-cased.
primaryCategory Categories โ†’ Level 1 CamelCase converted to spaced words (e.g., AdultToys โ†’ Adult Toys).
category Categories โ†’ Level 2 First semicolon-delimited value only.
uom Product โ†’ Selling Unit As-is.
Image URLs (from Image XML) Images Shared images promoted to product level; variant-specific images stay on the variant.

Variant-level fields (apply to each variant SKU).

XR Direct Source Field Flxpoint Field Processing Notes
model Variant โ†’ SKU Variant SKU.
price Pricing โ†’ Cost Wholesale cost (USD).
suggestedRetail Pricing โ†’ MSRP Fallback: if null or zero, MSRP is computed as price ร— 1.4.
map Pricing โ†’ MAP Minimum Advertised Price.
weight Shipping โ†’ Weight Weight only โ€” no dimensions in this feed.
upc Identifiers โ†’ UPC Barcode string.
manufacturerCode Identifiers โ†’ MPN Truncated to 50 characters.
active Status 1 = active; any other integer marks the variant inactive (still imported).
color, size, option, flavor Variant Options Up to four option types per product. For standalone items, these become product attributes instead.

Inventory fields (from the public Inventory CSV, joined on SKU).

Inventory CSV Column Flxpoint Field Notes
ItemID (join key โ†’ SKU) Matched to Product XML model.
QtyAvailable Inventory โ†’ Quantity If a SKU is missing from the CSV, quantity is null but the item is still mapped.
Variant detection: items where masterProductId โ‰  model (or masterProductId is null) are variants of the parent product. Standalone products are items where masterProductId = model โ€” their size/color/option/flavor fields are mapped as product attributes rather than variant options.
Quick Checks
  • All three feed URLs are saved on the XR Direct source.
  • Product XML and Image XML URLs include the correct embedded credentials.
  • Mapping template is selected and saved.
  • Archive is enabled in only one of Primary or Secondary.
Troubleshooting
  • HTTP 401 / 403 downloading the product or image XML feed: credentials embedded in the feed URL are invalid or expired. Get the corrected URL from XR Direct support and update the integration configuration.
  • "No items found in the product file": the vendor returns an empty feed when credentials are invalid. Verify the feed URL by hitting it in a browser; if it loads no items, contact XR Direct support.
  • JAXB XML parsing failure: the vendor's XML occasionally contains unescaped & characters outside CDATA blocks. The integration automatically applies a CDATA-aware fix and retries. If parsing still fails after the retry, the product feed itself may be corrupt โ€” re-trigger the run after a few hours or contact the vendor.
  • Inventory CSV download failure or empty CSV: the inventory CSV is public; failures usually indicate the vendor's CSV host is down. The 1-hour S3 cache will be used as a fallback if available.
  • Variants are not grouping under one parent: Ensure the product XML returns distinct masterProductId values for variants โ€” this is how Flxpoint detects variant relationships.
  • MPN missing or truncated: manufacturerCode is hard-capped at 50 characters; longer values are truncated by design.
Operation Details
Feature Availability What to Expect
Custom Fields Not Supported XR Direct does not expose custom fields beyond the standard schema.
Variations / Options Supported Up to 4 option types: Size, Color, Option, Flavor.
Generic Pricing (& Currency) Supported Cost, MSRP (auto-fallback price ร— 1.4), MAP. USD.
Client Pricing Not Supported All accounts get the same wholesale price.
Quantity Supported From public Inventory CSV; null when the SKU isn't in the CSV.
Multiple Warehouses Not Supported Single total quantity per SKU, no warehouse breakdown.
Weights & Dimensions Weight only No dimensions in the feed.
Images Supported Multiple images per SKU via separate Image XML feed; shared images promoted to product level by default.
Categories Supported Two levels (Primary Category โ†’ Sub Category).
Delta vs Full Feed Full Feed Every run downloads the complete catalog. No delta/incremental feed.
Archive Support Supported Via the active flag and the standard Archive setting.
Treat the feed URLs as secrets

Unlike API-key sources, XR Direct embeds your login and password directly in the path portion of the Product XML and Image XML feed URLs. Anyone with the URL has full read access to your XR Direct catalog โ€” including pricing.

โš ๏ธ What this means

  • Do not paste the feed URLs in chat, email, or shared docs.
  • Do not commit them to source control.
  • If a credential is exposed, contact XR Direct support to rotate it and update your integration configuration immediately.

โœ… What you can share safely

  • The fact that you use XR Direct as a source.
  • The public Inventory CSV URL (it requires no authentication, only the SKU + quantity columns are exposed).
Supported
Introduction

XR Direct โ€” Get Inventory [Secondary] is a lightweight, quantity-only refresh that reads the public Inventory CSV between full Primary runs. Pair it with Primary on an hourly schedule to keep stock current without re-pulling the full Product + Image XML feeds.

Setup Steps
  • 1Connect XR Direct: Re-use the same XR Direct source created during Primary setup โ€” this operation only needs the Inventory CSV URL (which is public, no credentials).
  • 2Configure Settings: Verify the Inventory CSV URL is set. Confirm the schedule is more frequent than Primary (hourly is typical).
  • 3Select a Mapping Template: Choose XR Direct โ€” Get Inventory (Secondary) โ€” it only maps SKU + Quantity.
How it works: on each run, Flxpoint downloads the CSV, deduplicates by ItemID (first-in wins for duplicates), skips rows with missing IDs, maps SKU + quantity, and saves variants in batches of 500.
Field Mapping (Secondary)

Secondary maps only the two CSV columns โ€” no pricing, no images, no attributes.

Inventory CSV Column Flxpoint Field Notes
ItemID Variant โ†’ SKU (join key) Rows with missing ItemID are skipped entirely.
QtyAvailable Inventory โ†’ Quantity Decimal value; numeric mapping.
Description (not mapped) CSV description is intentionally ignored in Secondary.
Catalog-level fields (titles, descriptions, images, attributes, pricing) are NOT refreshed by Secondary. Keep Secondary lean โ€” it's optimized for high-frequency stock refresh only. Use Primary to refresh the rich catalog data on a daily cadence.
Quick Checks
  • Inventory CSV URL is saved on the XR Direct source.
  • Mapping template (Secondary) selects SKU + Quantity.
  • Schedule runs more frequently than Primary (hourly is typical).
  • Archive is OFF here if Primary already archives.
Troubleshooting
  • Inventory CSV download failure / empty CSV: The CSV host may be experiencing downtime; the 1-hour S3 cache will be used if available.
  • Some SKUs not updating: the deduplication rule is "first-in wins." If the same ItemID appears multiple times in the CSV, only the first row is processed. Spot-check the CSV by URL if you suspect a SKU got the wrong quantity.
  • SKUs in Flxpoint but not in the CSV: those SKUs won't get quantity updates on Secondary runs. Run Primary to refresh the full catalog.

Troubleshooting

Common issues and solutions for the XR Direct integration. Click any card to expand.

!Product feed download fails (HTTP 401 or 403)

What's happening

The embedded credentials in your Product XML feed URL are invalid or expired.

How to fix it

  • Contact XR Direct support to get a fresh feed URL with valid credentials.
  • Update the Product XML feed URL on your XR Direct source in Flxpoint.
  • Re-run Get Inventory (Primary) to confirm the connection now succeeds.
!"No items found in the product file"

What's happening

XR Direct returns an empty feed when credentials are invalid โ€” the response is technically successful but contains zero products.

How to fix it

  • Open the Product XML feed URL in a browser; if it loads no items, the URL is wrong.
  • Verify with XR Direct support that your account is active and API-enabled.
!JAXB XML parsing failure

What's happening

The vendor's XML occasionally contains unescaped & characters outside CDATA blocks, which breaks standard XML parsers.

How to fix it

  • The integration automatically applies a CDATA-aware fix and retries. No action needed unless the retry also fails.
  • If parsing still fails after the retry, the feed itself may be corrupt โ€” re-trigger the run later or contact the vendor.
!Inventory CSV is empty or fails to download

What's happening

The public Inventory CSV is hosted by XR LLC Systems separately from the vendor's main feed; it can be intermittent.

How to fix it

  • Wait โ€” the 1-hour S3 cache will serve last-known-good data on a transient failure.
  • If failures persist beyond a few hours, contact XR Direct support to confirm the CSV host is operational.
!Variants not grouping under one parent

What's happening

XR Direct uses masterProductId to identify variants of the same parent. If masterProductId equals model (or is null), Flxpoint treats the item as standalone.

How to fix it

  • Check the Product XML directly: for the affected SKUs, confirm masterProductId is set to the parent style.
  • If the vendor's data is inconsistent, contact XR Direct support to correct it on their end.
!MSRP coming in as price ร— 1.4 instead of a real value

What's happening

The integration falls back to price ร— 1.4 when suggestedRetail is null or zero on a variant.

How to fix it

  • If you need accurate MSRP, contact XR Direct support to populate suggestedRetail on the affected SKUs.
  • You can also override the fallback by adding a Flxpoint mapping rule that sets MSRP from a different source.