How We Fixed Dynamic Bundle Pricing with WPC Product Bundles & Multi-Currency in CTX Feed
Client: Frederic Prevost-Lebeuf
Challenge: Feed not showing correct bundle prices when using WPC Product Bundles with location-based multi-currency setup.
๐งฉ The Problem
Frederic was trying to generate a product feed using CTX Feed Pro for his WooCommerce store, which uses the WPC Product Bundles plugin. This plugin automatically calculates bundle prices by summing the prices of individual items within the bundle.
However, the <g:sale_price/>
tag in the feed was returning empty or incorrect values, despite trying different attribute inputs (_price
, _regular_price
, _sale_price
, etc.).
Additionally, Frederic’s store uses location-based currency switching, which made the issue more complex. The plugin couldnโt fetch the correct price due to currency conversion being dependent on geolocation.
๐ Investigation
Our support team did the following:
- Verified the bundle plugin used (WPC Product Bundles).
- Logged into the staging environment provided by Frederic.
- Confirmed that bundle prices were not manually set โ they were dynamically calculated.
- Detected that currency was changing based on user location, but no static conversion rate was defined in WPML or any custom logic.
This resulted in CTX Feed being unable to consistently capture the correct price value.
โ The Solution
To solve the issue, we recommended two approaches:
๐ง Manual Price Import (Quick Fix)
Frederic manually added the USD prices for each bundle using the “Import feature” in the plugin, allowing the USD feed to work correctly.
โ๏ธ Dynamic Attribute for Currency Conversion (Scalable Fix)
Here are step by step guide:
Step 1: Navigate to the Dynamic Attribute Panel
Go to your WordPress dashboard:
CTX Feed โ Dynamic Attributes โ Create New
Step 2: Create a New Dynamic Attribute
- Name your attribute (e.g.,
converted_price_cad
) - In the attribute dropdown, select:
price
- In the output type, choose:
number
Step 3: Apply the Fixed Exchange Rate Formula
In the formula field, enter a simple multiplication based on your rate. For example:
[price]*1.35
This assumes the CAD rate is 1.35ร the base price.
Step 4: Add Rounding (Optional)
To round the value to 2 decimal places, update the formula:
round([price]*1.35, 2)
This ensures clean, shopper-friendly prices like
$25.49
instead of$25.4873
.
Step 5: Save the Attribute
Click Save to add your new dynamic attribute.
โ๏ธ How We Used the Dynamic Attribute in the Feed
Once the dynamic attribute was ready, we used it in the actual product feed:
Step 1: Refresh Attribute List
- Go to CTX Feed โ Manage Feeds
- Click on Clear Cache
This step ensures that the new dynamic attribute appears in your feed attribute dropdown.
Step 2: Edit or Create Your Feed
- Click Make Feed (or edit an existing feed)
- In the mapping section, locate the price-related field (e.g.,
g:sale_price
org:price
) - From the dropdown, select your dynamic attribute (e.g.,
converted_price_cad
)
Step 3: Clear Other Caches
- Clear your website cache (if using caching plugins)
- Clear your browser cache or try incognito mode to confirm changes
Step 4: Regenerate the Feed
Download or preview the feed to ensure the prices reflect the converted and rounded values
Click Update & Generate Feed
๐ก Key Takeaways
- WPC Product Bundles dynamically generates prices, so CTX Feed needs clear logic or manual input to fetch them accurately.
- When using location-based currency switching, it’s best to use language-based or fixed-rate conversions for feeds.
- CTX Feedโs Dynamic Attributes are powerful for custom calculations like currency conversion, rounding, or margin-based pricing.
๐จโ๐ผ Customer Feedback
โI was able to make the USD feed work by manually adding prices. The dynamic attribute solution for CAD feed using a fixed rate worked perfectly. Appreciate the support!โ
โ Frederic Prevost-Lebeuf
๐ง Need Help with a Similar Setup?
If you’re using bundle plugins or currency switchers and seeing pricing issues in your feed, contact our support team. We’re happy to help you set up the right logic using dynamic attributes or troubleshoot any plugin conflicts.
Read our full guide on how to configure the Dynamic Attribute step by step.