Shift Happens
Week of Aug 24, 2026
·
2
new
·
9
improved
·
2
fixed
Switch subscription plans and products together
Shipped
Areas
Payments, Subscriptions, Discounts, Shopify
Switch subscription plans and products together

You can now switch a subscription to a different plan and replace any products that are not available in the new plan in the same step. Firmhouse checks the subscription’s current products against the new plan group and only asks you to choose a replacement for the ones that do not fit.
Give each language its own discount description

You can now write a separate public discount description for every language enabled in your project. New invoice lines always show the description that matches the subscription’s language. In the Customer Portal, that description replaces the default discount label when a subscription has exactly one active discount; with multiple active discounts, the portal keeps using the default label.
Improvements
·
9
Schedule upcoming billing webhooks up to 30 days ahead
You can now configure the Subscription upcoming billing webhook to fire between 1 and 30 days before the next billing date, up from a maximum of 5 days. Use the extra range to send earlier reminders or start an integration well before the charge.
Clearer reasons for failed Adyen payments
Failed Adyen payments now record the reason they were refused. Common cases such as insufficient funds, an expired or blocked card, a failed 3D Secure authentication, or a payment the customer cancelled are recognised and shown on the payment itself, so you can tell at a glance what went wrong.
Add a private reason when you reject a subscription
When you reject a subscription from the Firmhouse Portal, you can now add an optional internal reason. It stays private to your team and shows on the rejected subscription, making it easier to classify and report on rejections without exposing details to customers.
Control when Adyen payments are captured
You can now choose whether Adyen credit card and Klarna signup payments are held until the subscription activates. Configure each payment method separately in your Adyen payment provider settings when you want to review a subscription before its initial payment is collected.
Completing a return for your last Shopify product now asks you to cancel
Completing a return for the final active product on a live Shopify subscription used to fail, because a Shopify contract cannot be left without any lines. You now get a clear message asking you to cancel the subscription as part of the same return, and nothing changes until you confirm.
Won Adyen chargebacks now restore payments automatically
When Adyen confirms that you won a chargeback dispute, Firmhouse now marks the payment paid again and recalculates the invoice automatically, so the subscription leaves its non-paying state without a manual correction. Reversals that Adyen still lists as pending stay charged back until the dispute is final.
Customer Portal swaps can now include products already on another line
When a customer swaps or replaces a product in the Customer Portal, they can now choose a product that’s already active on a different line of the same subscription. Previously that product was hidden from the list.
See and manage applied Shopify discounts at a glance
The applied discounts table on a subscription is easier to scan: a green or red status dot shows whether a discount is active, and usage count and its recurring-cycle limit are combined into a single column. Removing a discount is now a visible trash icon instead of a text link tucked at the far edge of the table.
Checkout stays reliable when Shopify shipping rates are busy
Firmhouse now reuses a recent Shopify shipping calculation for five minutes when nothing about the order has changed, instead of recalculating it on every request. This reduces load on your Shopify shipping rates and keeps checkout responsive during busy periods.
Fixes
·
2
Loading a default Klaviyo payload no longer resets your metric name
Using Load default payload on a Klaviyo email template now only replaces the JSON payload, keeping your configured Klaviyo metric name in place. Previously it also reset the metric name to the Firmhouse default, so events kept arriving under a new metric while you were still watching the old one.
Complimentary add-ons now reach already-scheduled prepaid orders
Adding a free Next order only product to a prepaid subscription now places it directly into the next scheduled delivery when that delivery has already been generated. Previously it stayed on the subscription with no future order to attach to.