First rolls arrived on a Thursday. Three weeks before the hotel's soft opening, I was standing in the warehouse with a sample card and a bad feeling.
The chenille looked right. A deep mineral green, soft under the hand, exactly the tone we'd approved for the guestroom lounge chairs. But when I ran my thumb against the pile, the yarn moved differently. Less dense. Slightly too smooth.
I pulled a roll from the middle of the delivery. The label had been switched. What it said underneath stopped the whole order.
I'm the quality/compliance manager at a B2B textiles company. I review every curtain, upholstery, rug, and wallcovering delivery before it's accepted—roughly 200 unique items a year. In 2024, I rejected 11% of first deliveries due to color, finish, or specification issues. This was one of them.
Background: how we ended up with OEM chenille
The project was a 58-room coastal hotel—or rather, 58 guestrooms plus a small spa. The design called for Romo chenille on the lounge chairs, Romo rugs in the lobby and corridors, and Romo outdoor fabrics on the terrace cushions. I use 'Romo' a lot in specs because their test data is consistent. When a client asks for a fabric that will survive hospitality use, I'd rather start with a product that already has a proper rub count and a clear care specification.
For upholstery, I normally choose a private-label product from an established brand. The mill may be an upholstery fabric manufacturer, but the brand controls the dyeing, the finishing, and the quality checks. But the client's purchasing director asked if we could source the same chenille as an OEM product to save money. 'Same base cloth, same yarn, same dye recipe, 28% below the equivalent,' the agent said.
I'd had enough experience with contract textiles to be skeptical. A tapestry fabric supplier can offer a decorative weave without the same structural standards. An upholstery fabric manufacturer is a different conversation. But the samples matched, the lab report looked solid, and the price was compelling. So we approved an OEM trial.
When a sample is not a production run
We ordered 3,100 metres. The first 500 metres passed inspection. The color was within tolerance, the width was correct, and the Martindale result came back at 62,000 cycles. I signed off.
Then the second delivery arrived.
The thickness of the pile looked fine on top. The base cloth felt closer to a lightweight drapery than the upholstery base we had approved. I removed a label from the centre roll and compared it with the strike-off specification.
It wasn't the same construction. The approved chenille was 80% viscose, 20% cotton, with a high-twist core yarn. The delivered fabric was 65% viscose, 35% cotton, and the twist in the core was visibly lower. In chenille, twist determines durability. If the core yarn is soft, the fibres shed, the pile flattens, and the fabric starts to look 'old' before the first season is over.
Everything I'd read about OEM vs private label said the same thing: 'OEM is riskier.' In practice, I found the risks aren't where people expect. A private-label supplier like Romo has to protect its name, so it tests consistently. With an OEM, the responsibility moves to you. We had accepted the OEM's test report without doing our own verification on the production batch. I should have known better. I did know better. I only believed it after a 3,000-metre delivery turned into a crisis.
I don't have hard data on how often OEM fabric mills substitute yarn between sample and production. But based on four years of inspecting deliveries, my sense is it happens more often than any of us want to admit. It's not always intentional; sometimes the mill runs out of the original yarn or adjusts the recipe to meet a margin. The label should catch it.
The label was the issue. Under the FTC's Textile Fiber Products Identification Act (ftc.gov, 16 CFR Part 303), fiber content labels on fabrics must be accurate. Our approved spec said 80/20 viscose/cotton. The delivered label said 65/35. That's not a minor tolerance—that's a different product. The mill claimed the original yarn was 'no longer available.' They replaced it without telling us.
A week later, we found a second problem. The OEM label also said 'contains recycled polyester,' but the mill couldn't produce a certificate for the recycled content. Per the FTC Green Guides (ftc.gov), environmental claims need substantiation. On its own, that would have been enough to pause the order.
What it actually means: OEM vs private label
The episode forced me to define something that had been fuzzy for a long time.
Chenille fabric OEM means you are specifying the product directly with a mill. You approve the yarn, the base cloth, the finish, and the tests. You own the quality process. An OEM mill is an upholstery fabric manufacturer; it can make excellent cloth, but you are the one holding the spec.
Private label, in our context, means you buy from a brand that has already done the product development. When I order a Romo chenille, the fabric has a spec, a test history, and a label that someone has to protect. The control point is upstream, with the brand.
Neither option is automatically better. The mistake was treating OEM as if it were private-label. We handed over a spec and assumed someone else would enforce it.
Interestingly, the other Romo products in the project passed without drama. The Romo rugs had their own construction data and a clear backing specification. The Romo outdoor fabrics had already been tested for water resistance, UV fade, and dimensional stability. Those were private-label products. They did what private label is supposed to do: lower the buyer's risk.
A tapestry fabric supplier might read this and wonder: so what? For a tapestry throw or a decorative wall hanging, fiber substitution doesn't change the end result. But when a fabric has to perform on a dining chair for five years, the difference between 80/20 and 65/35 is the difference between a one-time order and a callback.
What I check now before approving chenille fabric
- Fiber content on the production label, not just the sample card
- Core-yarn twist in chenille: higher twist means better wear
- Backing construction: lightweight drapery base is not upholstery base
- Martindale and pilling test results on the actual lot
- Dye lot tolerance and shade bands
- Lab report chain: who tested, against which spec, and where is the evidence
That last point is the one I'd forgotten. It's not enough to have a test report. You need the report to match the delivery you're inspecting.
What I would do differently
If I could replay the project, I'd order a production sample first. Not a strike-off from the sample yarn, but a cutting from the first production run. I'd also require a third-party inspection before shipping.
The cost difference was about $1,400 for 3,100 metres. The redo cost more than double that, plus air freight on replacement fabric to keep the opening on schedule. That decision looked smart on the purchase order. In the end, the 'saving' disappeared into rush sampling, freight, and a re-dyeing bill. I don't want to say the OEM option can never work. It can. But it only works with verification built in.
This approach worked for us because we're a B2B operation with repeat orders and enough volume to justify third-party inspections. If you're a small designer ordering a single roll for one client, you might not need the same level of controls. But you should still ask the same questions about fiber content, twist, and test reports.
The lesson
Ten years ago, the rule was simple: buy from a brand you trust. In 2026, the market is more complicated. OEM and private-label are not binary categories. Some private-label suppliers are vertically integrated enough to be their own mills, and some OEM mills have control systems that rival any brand. The fundamentals haven't changed—fiber content, yarn twist, rub count, building trust on a label. But the execution has transformed. The label on the roll is no longer enough; the evidence behind the label is everything.
I still specify Romo products. I still buy from private-label suppliers. But I no longer assume that a supplier's label is the product. It's the beginning of the check, not the end.
Oh, and one more thing: the replacement fabric was from the private-label line, not from the OEM mill. Everyone agreed it was worth the difference.