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
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).
- Yes (Recommended): You can route orders here.
- No: Routing/Shipping steps won't apply.
- Override: Auto Processing (Use Global / Auto Process / Do NOT Auto Process).
- Commit Stock + Inventory Management Options.
- Allow Backorders / Cancel Unacknowledged Items.
- Yes, Use Rate Shopping (Real-Time Estimates).
- No, Set Up via Rules.
Finish the Source Wizard by confirming your Ship From location and reviewing shipping behavior for XR Direct.
- 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.
- Address, City, State/Code, Postal Code, Country/Code
- Optional: Contact Name, Phone, Email
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.
- 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.
- 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.
- 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.
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.
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.
- 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.
- 3Select a Mapping Template: Choose XR Direct Get Source Product 1 and click Save and Complete.
- 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 wheremasterProductIddiffers frommodelare variants of the parent. - Map, merge with inventory + images, save in batches of 500.
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. |
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.
- 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.
- 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
masterProductIdvalues for variants โ this is how Flxpoint detects variant relationships. -
MPN missing or truncated:
manufacturerCodeis hard-capped at 50 characters; longer values are truncated by design.
| 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. |
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).
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.
- 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.
ItemID (first-in wins for duplicates), skips rows with missing IDs, maps SKU + quantity, and saves variants in batches of 500.
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. |
- 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.
- 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
ItemIDappears 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.
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.
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.
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.
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.
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
masterProductIdis set to the parent style. - If the vendor's data is inconsistent, contact XR Direct support to correct it on their end.
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
suggestedRetailon the affected SKUs. - You can also override the fallback by adding a Flxpoint mapping rule that sets MSRP from a different source.