- You have an edition coming out every 1 or 2 months, but people can pay annually. Or an edition comes out weekly and customers pay monthly or per 4 weeks.
- You can set up delivery/shipment anchors so that orders are always generated on fixed days of the week, month, or year, regardless of when people start their subscription. The order will then always be generated on the billing moment, but the fulfillment date will be correctly set on any of the configured anchors.
- You can add actual magazine edition SKUs to the future scheduled fulfillments and also show those in the Firmhouse account portal. This is done via API and Shopify Flow.
Enable the Prepaid plans feature
Before you can set up magazine subscriptions with prepaid plans, you need to enable this feature in your Firmhouse Portal:- Log in to your Firmhouse Portal.
- Navigate to the New Features page from the main menu.
- Find the Prepaid plans toggle in the list of available features.
- Enable the toggle to activate prepaid plans for your project.
Create a product for your magazine in Shopify
In Shopify, create a Product that can serve as the subscription product for your magazine subscription. Tag the product withFIRMHOUSE_SUBSCRIPTION as per our regular setup guides so that the product is synced to Firmhouse.
For example you could have a product “Magazine” which has its own Product Detail Page, potentially with a different template in Shopify so you can make a distinct page from other products on your store.
If you want to disable regular one time purchases for this project, you can do so after assigning it to a plan group (see next step). This way the product can then only be sold through a subscription.
Set up the magazine product, and subscription plans with delivery anchors
In the Firmhouse Portal, go to Plans and create a Plan Group and give it a name, such as “Magazine Subscription”. Through the Manage Products button, select the Magazine product you just created so that your magazine product is assigned to that plan group. Create a Plan in the Plan Group for each option you want to offer. For example:- Name: Annual
- Pricing strategy: Fixed price
- Fixed price: €96
- Plan mode: Prepaid plan
- Plan type: Recurring charge
- Billing cycle:
- Recurring charge moment: every 1 year
- Delivery cycle: every 2 months
- Prepaid commitment: Renew for the next billing cycle
- 5 January
- 5 March
- 5 May
- 5 July
- 5 September
- 5 November
Set up the Subscription Options theme block on your product detail page
In the Shopify theme editor, you can add the standard Subscription Options theme block from the Firmhouse app to your product page, to show the various plans you configured. Your customers can add a subscription option to their cart, and pay for their subscription via Shopify Checkout. For detailed instructions on adding the theme block, see the Quick install on Shopify guide.What happens after Checkout: A scheduled order and fulfillment for each edition
When customers sign up for a prepaid subscription and you’ve set up a bunch of delivery anchors, then after Checkout Firmhouse and Shopify will automatically generate all the orders for the duration of the subscription period. So if someone signs up for the annual plan as configured in the above samples, Firmhouse will generate 6 scheduled orders and will put the fulfillment date on the appropriate delivery anchors, starting with the closest delivery anchor that was available, taking the cutoff days into account.Scheduling the actual edition SKU on future orders
When checking out an annual subscription with a prepaid plan, Firmhouse and Shopify generate all the fulfillment up front. These fulfillments all have the “generic” magazine product SKU included that someone put in their cart at signup. If you work with actual edition SKUs that need to be shipped, then you’ll want to schedule those in the future as well. Either just in time before an order or fulfillment is due, or load up all future scheduled orders with the right edition SKUs (or placeholders of them) periodically or automatically whenever someone signs up for a subscription. The added benefit of pre-loading all scheduled orders/fulfillments for a subscription with (placeholder) SKUs is that they will also be visible in the Firmhouse Subscription Management Portal for your customers.Update scheduled orders in Firmhouse with the right SKU
To update future scheduled orders with the appropriate SKU you can perform two steps via the Firmhouse API: First, fetch all theOrderLine objects from all scheduled orders in the Firmhouse API for a given date range:
How the updated SKU gets added to Shopify orders
How the edition-specific SKU gets added to your Shopify fulfillment orders depends on the payment method used by your customers.SEPA/Local Payment Method subscriptions (automatic)
For subscriptions paid via SEPA or other local payment methods, Firmhouse entirely manages the order creation. When a scheduled fulfillment is due, Firmhouse will generate an order in Shopify just in time on the fulfillment date, with the right specific edition SKU already included as an order line. No additional setup is required.Native Shopify Subscriptions (Credit Card and PayPal)
For native Shopify Subscription contracts paid via Credit Card or PayPal, you need to set up a Shopify Flow to add the edition-specific SKU to the order when a fulfillment is ready. The Shopify Flow should include the following steps:- Trigger on the “Fulfillment order ready to fulfill” event.
- Use the “Send HTTP request” action to call the Firmhouse GraphQL API with the
getOrderByquery (see sample below) to look up the scheduled order and get theshopifyVariantIdof the edition SKU. - Use the “Add order line item” action (included in default Shopify functionality) to add the product with the
shopifyVariantIdat €0 price to the prepaid Order. - Shopify will include the product on the FulfillmentOrder for your warehouse to pick.
Looking up the scheduled order by Shopify Fulfillment Order ID
When the “fulfillment order ready to fulfill” event fires in Shopify, you receive the Shopify Fulfillment Order ID. You can use this ID to look up the corresponding scheduled order in Firmhouse using thegetOrderBy query: