91³Ô¹ÏÍø

Watch CBS News

Salad dressings recalled in 27 U.S. states because they could contain "foreign objects"

Ventura Foods is recalling thousands of cases of salad dressings sold at retailers including Costco and Publix because the condiments could contain "foreign objects," according to an  from the Food and Drug Administration.

More than 3,500 cases of different varieties of salad dressing could be contaminated by "black plastic planting material" in granulated onion, an ingredient in the dressings, according to the FDA. 

Irvine, California-based Ventura Foods initiated the voluntary recall on Nov. 6. The salad dressing products were distributed to seven different retailers at 42 store locations across 27 states. The company is recalling the following types of salad dressing: 

  • Creamy Poblano Avocado Ranch Dressing and Dip
  • Ventura Caesar Dressing
  • Pepper Mill Regal Caesar Dressing
  • Pepper Mill Creamy Caesar Dressing
  • Caesar Dressing served at Costco Service Deli
  • Caesar Dressing served at Costco Food Court
  • Hidden Valley, Buttermilk Ranch

The dressings were sold at Costco and six other retailers across the following states:

  • Arkansas
  • Colorado 
  • Florida
  • Georgia
  • Illinois
  • Indiana
  • Kansas
  • Kentucky
  • Louisiana
  • Maryland
  • Michigan
  • Minnesota
  • Missouri
  • Nebraska
  • New Hampshire
  • New Jersey 
  • North Carolina
  • North Dakota
  • Ohio
  • Oklahoma
  • Oregon
  • South Carolina
  • Texas
  • Virginia
  • Washington
  • Wisconsin

Costco issued an  in November notifying customers that it was recalling the Ventura Foods dressings. The retailer also said people should stop consuming the products and that they could return them to stores for a full refund. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });