Shift Happens
Week of Aug 17, 2026
·
4
new
·
12
improved
·
8
fixed
Notify customers when a recurring order is skipped
Shipped
Areas
Subscriptions, Customer Portal, Developers, Shopify
Notify customers when a recurring order is skipped

You can now turn on a Recurring order skipped notification that lets customers know when their scheduled order wasn’t placed and they weren’t charged. The default message points them to the right next step, whether that’s adding products if the order fell below the minimum amount, or swapping out anything unavailable or out of stock, and custom templates can use {{recurring_order_skip.reason}} to tailor their own copy. Each subscription gets at most one of these notifications per day. Learn how to enable and customize the email.
Customize translations in Customer Portal templates

You can now edit translated copy directly in the Customer Portal template editor, for every language enabled in your project. Select any template text and choose Create translation from selection to make it translatable without writing Liquid translation tags by hand.
Track your estimated monthly recurring revenue

You can now see Estimated MRR on the Metrics dashboard: a monthly run-rate built from the current recurring charges across your actively charging subscriptions, shown separately for each currency.
Review and merge related subscription accounts
You can now review likely duplicate subscription accounts from Accounts → Merge candidates. Firmhouse groups suggestions by normalized email and compares customer, address, and payment details so you can decide with confidence which account to keep.
Improvements
·
12
Shopify subscription contracts stay in sync automatically
Shopify-billed subscriptions now stay in sync automatically, including subscriptions imported into Firmhouse. Activating or resuming one creates its Shopify subscription contract if it doesn’t exist yet, or reconciles the contract against the subscription’s current billing lines if it already does.
Customize your Customer Portal login form text
You can now customize the submit button label and hint text on the Customer Portal v2 login form using the submit_label and hint options on the {% login_form %} tag. Leave hint blank to hide it entirely, so the login screen matches your brand’s voice while Firmhouse continues to manage the secure login flow. Learn how to customize the login form.
Customize Customer Portal login and access screens
You can now customize the login, email confirmation, and full-access-required screens in Customer Portal v2, using the login.liquid and full_access_required.liquid templates. Firmhouse continues to securely manage the login form itself, so you can adjust the surrounding layout and messaging without touching authentication. See the template reference for the available Liquid variables.
Use cancellation reasons in Klaviyo flows
Cancellation-confirmed Klaviyo events now include the customer’s selected cancellation reason, so you can segment customers and build reason-specific flows. Free-text feedback remains available through the churn_request_feedback_updated metric webhook. Learn how to use cancellation data in Klaviyo.
Include invoice references in the Payments report
You can now include the invoice ID when exporting the Payments report, making it easier to reconcile each payment with its invoice. The export also now includes the complete final day of the date range you select.
Load large Customer Portal catalogs faster
Customers can now start browsing large add-product and replacement catalogs immediately instead of waiting for every product to render. Firmhouse loads products progressively in responsive groups, keeping catalogs with thousands of products quick and usable.
Record products a customer already owns
You can now choose Already owned when adding a product to a subscription. The product stays on the customer’s record for reference without being shipped, billed, counted toward monthly value, or added to a Shopify subscription contract. Learn about product behavior when adding products.
Use ordered product status and recurrence in Liquid
You can now use ordered_product.status and ordered_product.recurring in Liquid templates, so emails, webhooks, and Customer Portal templates can distinguish active, returned, and already-owned products and check whether an item recurs. Learn how to use ordered product fields in Liquid.
Compare before and after values in extra field webhooks
You can now see which extra field answer triggered an extra_field_answer_updated webhook and compare its previous and updated values. Use extra_field_answer.parameterized_name, change_set.value.before, and change_set.value.after in your webhook template. See the webhook example.
Send Shopify customers to a specific Customer Portal page
You can now send customers from Shopify directly to a specific page in the Firmhouse Customer Portal instead of the portal root. Add an encoded, relative redirect_to path to your /a/firmhouse bridge link, and Firmhouse preserves it through both single- and multi-subscription login. Learn how to configure Shopify portal login.
Select an existing Mollie mandate for a subscription
You can now select an existing, valid Mollie mandate for a subscription instead of asking the customer to complete the payment-method flow again when they already authorized one.
Retry failed Shopify subscription imports yourself
When a Shopify subscription import fails, you now receive a project notification you can act on directly. After correcting the customer or order data in Shopify, choose Retry subscription import to import the missing subscription without contacting Firmhouse support.
Fixes
·
8
Upcoming order shipping costs now display correctly
Upcoming order previews in the Customer Portal and admin no longer show free shipping when the shipping cost hasn’t been calculated yet — that row now stays hidden until a real cost is available. Reloading a scheduled prepaid order also keeps its saved shipping and discount amounts.
Match Shopify percentage discount rounding
Percentage discounts on Shopify-backed subscriptions now use the same per-unit rounding as Shopify checkout, so upcoming order previews and recurring orders stay aligned with the subscription contract, including cases where fractional cents previously caused a small difference.
Add one-time products across plan groups
One-time products configured to ship only once are now available to customers from the Customer Portal regardless of their subscription’s plan group, instead of being hidden outside the group they were added in. Recurring products remain correctly limited to the active plan group. Learn how portal product availability works.
Clearer guidance for paused shipment dates
You can now see that no shipment will be created while a subscription is paused, even though its scheduled delivery date stays visible so the schedule is preserved. Shipment dates can still be changed, but they can no longer be cleared in a way that caused a technical error.
Show product-scoped discounts correctly in the Customer Portal
Customers now see a promotional price in the Customer Portal only for products the promotion actually applies to. Promotions limited to specific required products no longer make unrelated products appear discounted.
Fix Shopify fulfillment matching from a notification
When missing Shopify app permissions prevent Firmhouse from matching a fulfillment, you now get an actionable project notification. Choose Update app permissions to start Shopify’s permission flow for the affected shop, then retry the fulfillment.
Retry Shopify imports when contracts take too long
You now also get a project notification when Shopify has not finished creating a subscription contract before Firmhouse’s import retries run out. Once the Shopify order is ready, choose Retry subscription import from the notification to recover the missing subscription.
Collection case details stay visible when Intrum is unreachable
We fixed an issue where the collection case page redirected you away when Intrum was slow or briefly unreachable. It now shows a retry notice instead, so your local case details and invoices stay visible while you wait to try again. Learn about accessing collection cases.