Firmhouse for Developers
FirmhouseHelp CenterStatusPortal / Login
  • ❤️Firmhouse for Developers
  • GraphQL API
    • Introduction
    • Getting Started
    • Pagination
    • Handling Errors
    • API Reference
      • Queries
        • assets
        • currentCart
        • discountCodes
        • getCollectionCase
        • getCurrentProject
        • getDiscountCode
        • getInvoice
        • getOrder
        • getOrderBy
        • getOrderCalculations
        • getOrders
        • getPayment
        • getRefund
        • getServiceChannelBy
        • getSubscription
        • getSubscriptionAccount
        • getSubscriptionBySelfServiceCenterLoginToken
        • getSubscriptions
        • invoices
        • orderedProducts
        • orders
        • outstandingInvoices
        • payments
        • plans
        • products
        • returnOrders
        • subscriptionAccounts
        • subscriptions
      • Mutations
        • activateSubscription
        • applyPromotionToSubscription
        • assignAsset
        • cancelReturnOrder
        • cancelSubscription
        • completeReturnOrder
        • completeSubscriptionCancellation
        • createAsset
        • createCart
        • createDiscountCode
        • createInvoiceLineItem
        • createInvoicedOneTimeCharge
        • createOrder
        • createOrderedProduct
        • createOrderedProductV2
        • createProduct
        • createPromotion
        • createReturnOrder
        • createSelfServiceCenterLoginToken
        • createSelfServiceCenterLoginTokenV2
        • createServiceChannel
        • createSubscription
        • createSubscriptionFromCart
        • creditAndRefundInvoice
        • deactivateAppliedPromotion
        • destroyInvoiceLineItem
        • destroyOrderedProduct
        • editPlan
        • fulfillOrder
        • fulfillOrders
        • importSubscription
        • pauseSubscription
        • refundPayment
        • resumeSubscription
        • sendSelfServiceCenterLoginTokenEmail
        • shipOrderedProducts
        • switchSubscriptionPlan
        • syncShopifyProducts
        • unassignAsset
        • undoSubscriptionCancellation
        • updateAddressDetails
        • updateAppliedPromotion
        • updateAsset
        • updateAssetOwnership
        • updateInvoice
        • updateInvoiceLineItem
        • updateOrder
        • updateOrderedProduct
        • updateOrderedProductQuantity
        • updatePlan
        • updateProduct
        • updatePromotion
        • updateReturnOrder
        • updateShippingCostsExemption
        • updateSubscribedPlan
        • updateSubscription
      • Objects
        • AcceptanceCheck
        • AcceptanceCheckStatus
        • ActivateSubscriptionInput
        • ActivateSubscriptionPayload
        • AdyenPaymentMethodVariant
        • AppliedBillingCyclePromotion
        • AppliedOrderDiscountPromotion
        • AppliedPromotion
        • AppliedPromotionDeactivationStrategy
        • ApplyPromotionToSubscriptionInput
        • ApplyPromotionToSubscriptionPayload
        • Asset
        • AssetConnection
        • AssetCustomField
        • AssetCustomFieldInput
        • AssetCustomFieldValue
        • AssetEdge
        • AssetOwnership
        • AssetStatus
        • AssignAssetInput
        • AssignAssetPayload
        • BaseIntervalUnit
        • BillingCycleIntervalUnit
        • BillingCyclePromotion
        • Boolean
        • CancelReturnOrderInput
        • CancelReturnOrderPayload
        • CancelSubscriptionInput
        • CancelSubscriptionPayload
        • Cart
        • CollectionCase
        • CollectionCaseConnection
        • CollectionCaseEdge
        • CollectionCaseStatus
        • CommitmentUnit
        • CompleteReturnOrderInput
        • CompleteReturnOrderPayload
        • CompleteSubscriptionCancellationInput
        • CompleteSubscriptionCancellationPayload
        • CreateAssetInput
        • CreateAssetPayload
        • CreateCartInput
        • CreateCartPayload
        • CreateDiscountCodeInput
        • CreateDiscountCodePayload
        • CreateInvoiceLineItemInput
        • CreateInvoiceLineItemPayload
        • CreateInvoicedOneTimeChargeInput
        • CreateInvoicedOneTimeChargePayload
        • CreateOrderInput
        • CreateOrderPayload
        • CreateOrderedProductInput
        • CreateOrderedProductPayload
        • CreateOrderedProductV2Input
        • CreateOrderedProductV2Payload
        • CreateProductInput
        • CreateProductPayload
        • CreatePromotionInput
        • CreatePromotionPayload
        • CreateReturnOrderInput
        • CreateReturnOrderPayload
        • CreateSelfServiceCenterLoginTokenInput
        • CreateSelfServiceCenterLoginTokenPayload
        • CreateSelfServiceCenterLoginTokenV2Input
        • CreateSelfServiceCenterLoginTokenV2Payload
        • CreateServiceChannelInput
        • CreateServiceChannelPayload
        • CreateSubscriptionFromCartInput
        • CreateSubscriptionFromCartPayload
        • CreateSubscriptionInput
        • CreateSubscriptionPayload
        • CreditAndRefundInvoiceInput
        • CreditAndRefundInvoicePayload
        • CustomerFeedback
        • DeactivateAppliedPromotionInput
        • DeactivateAppliedPromotionPayload
        • DestroyInvoiceLineItemInput
        • DestroyInvoiceLineItemPayload
        • DestroyOrderedProductInput
        • DestroyOrderedProductPayload
        • DiscountCode
        • DiscountCodeConnection
        • DiscountCodeEdge
        • EditPlanInput
        • EditPlanPayload
        • ExtraField
        • ExtraFieldAnswer
        • ExtraFieldInput
        • ExtraFieldInterface
        • FeedbackTypeEnum
        • Float
        • FulfillOrderInput
        • FulfillOrderPayload
        • FulfillOrdersInput
        • FulfillOrdersPayload
        • ID
        • ISO8601Date
        • ISO8601DateTime
        • ImportSubscriptionInput
        • ImportSubscriptionPayload
        • InstalmentIntervalInterface
        • Int
        • Invoice
        • InvoiceConnection
        • InvoiceEdge
        • InvoiceLineItem
        • InvoiceReminder
        • InvoiceStatusEnum
        • InvoiceUpdatableStatusEnum
        • JSON
        • Licence
        • LineItemTypeEnum
        • MaximumCommitmentUnit
        • MetadataInterface
        • ModelValidationError
        • Offer
        • OfferTypeEnum
        • Order
        • OrderCalculation
        • OrderConnection
        • OrderDiscountPromotion
        • OrderEdge
        • OrderLine
        • OrderSortEnum
        • OrderStatus
        • OrderedProduct
        • OrderedProductEdge
        • OrderedProductInput
        • OrderedProductIntervalUnitOfMeasure
        • OrderedProductStatus
        • OrderedProductTypes
        • OrderedProductsWithSummaryConnection
        • PageInfo
        • PauseSubscriptionInput
        • PauseSubscriptionPayload
        • Payment
        • PaymentConnection
        • PaymentEdge
        • PaymentStatusEnum
        • PaymentTypeEnum
        • Plan
        • PlanConnection
        • PlanEdge
        • PlanProduct
        • Price
        • PriceDeleteInput
        • PriceInput
        • Product
        • ProductConnection
        • ProductEdge
        • Project
        • Promotion
        • Refund
        • RefundPaymentInput
        • RefundPaymentPayload
        • RefundStatus
        • ResumeSubscriptionInput
        • ResumeSubscriptionPayload
        • ReturnOrder
        • ReturnOrderConnection
        • ReturnOrderEdge
        • ReturnOrderProduct
        • ReturnOrderProductInput
        • ReturnOrderStatus
        • SelfServiceCenterLoginToken
        • SendSelfServiceCenterLoginTokenEmailInput
        • SendSelfServiceCenterLoginTokenEmailPayload
        • ServiceChannel
        • ShipOrderedProductsInput
        • ShipOrderedProductsPayload
        • String
        • SubscribedPlan
        • Subscription
        • SubscriptionAcceptanceCheck
        • SubscriptionAcceptanceCheckConnection
        • SubscriptionAcceptanceCheckEdge
        • SubscriptionAccount
        • SubscriptionAccountConnection
        • SubscriptionAccountEdge
        • SubscriptionAccountStatus
        • SubscriptionConnection
        • SubscriptionEdge
        • SubscriptionIdentity
        • SubscriptionStatus
        • SwitchSubscriptionPlanInput
        • SwitchSubscriptionPlanPayload
        • SyncShopifyProductsInput
        • SyncShopifyProductsPayload
        • TaxRate
        • UnassignAssetInput
        • UnassignAssetPayload
        • UndoSubscriptionCancellationInput
        • UndoSubscriptionCancellationPayload
        • UpdateAddressDetailsInput
        • UpdateAddressDetailsPayload
        • UpdateAppliedPromotionInput
        • UpdateAppliedPromotionPayload
        • UpdateAssetInput
        • UpdateAssetOwnershipInput
        • UpdateAssetOwnershipPayload
        • UpdateAssetPayload
        • UpdateInvoiceInput
        • UpdateInvoiceLineItemInput
        • UpdateInvoiceLineItemPayload
        • UpdateInvoicePayload
        • UpdateOrderInput
        • UpdateOrderPayload
        • UpdateOrderedProductInput
        • UpdateOrderedProductPayload
        • UpdateOrderedProductQuantityInput
        • UpdateOrderedProductQuantityPayload
        • UpdatePlanInput
        • UpdatePlanPayload
        • UpdateProductInput
        • UpdateProductPayload
        • UpdatePromotionInput
        • UpdatePromotionPayload
        • UpdateReturnOrderInput
        • UpdateReturnOrderPayload
        • UpdateShippingCostsExemptionInput
        • UpdateShippingCostsExemptionPayload
        • UpdateSubscribedPlanInput
        • UpdateSubscribedPlanPayload
        • UpdateSubscriptionInput
        • UpdateSubscriptionPayload
  • Liquid
    • Introduction
    • Email template overview
    • Using Extra Fields in Liquid
    • Available tags
  • Webhooks
    • Overview
  • Guides
    • Creating a Storefront App
    • Updating the amount of discount on each order
    • Build a switch/upgrade plan flow that requires payment
  • SDKs
    • Storefront JS SDK
      • Configuration Options
      • Create a Storefront API token
      • Shopify
        • Add an integrated cart to your Shopify store
        • Link up "View Cart" button
      • Translations and custom copy
      • Using with Next.js
    • Firmhouse SDK
      • Getting Started
      • Examples and Boilerplates
      • Handling Errors
      • Reference
        • Classes
          • FirmhouseClient
        • Resources
          • CartsResource
          • InvoicesResource
          • PlansResource
          • ProductsResource
          • ProjectsResource
          • SelfServiceCenterTokenResource
          • SubscriptionsResource
        • Errors
          • NotFoundError
          • ServerError
          • ValidationError
        • Enumerations
          • AcceptanceCheckStatus
          • Access
          • AppliedPromotionDeactivationStrategy
          • AssetStatus
          • BaseIntervalUnit
          • BillingCycleIntervalUnit
          • CollectionCaseStatus
          • CommitmentUnit
          • FeedbackTypeEnum
          • InvoiceStatusEnum
          • LineItemTypeEnum
          • MaximumCommitmentUnit
          • OrderStatus
          • OrderedProductIntervalUnitOfMeasure
          • OrderedProductStatus
          • OrderedProductTypes
          • PaymentStatusEnum
          • PaymentTypeEnum
          • RefundStatus
          • ReturnOrderStatus
          • SubscriptionStatus
        • Functions
          • mapExtraFieldsByFieldId()
        • Interfaces
          • FirmhouseAppliedOrderDiscountPromotion
          • FirmhouseAppliedPromotion
          • FirmhouseBillingCyclePromotion
          • FirmhouseCart
          • FirmhouseCollectionCase
          • FirmhouseConfig
          • FirmhouseDiscountCode
          • FirmhouseExtraField
          • FirmhouseExtraFieldAnswer
          • FirmhouseInvoice
          • FirmhouseInvoiceLineItem
          • FirmhouseInvoiceReminder
          • FirmhouseOrder
          • FirmhouseOrderLine
          • FirmhouseOrderedProduct
          • FirmhouseOrderedProductUtils
          • FirmhouseOrderedProductWithUtils
          • FirmhouseOriginalInvoice
          • FirmhousePayment
          • FirmhousePlan
          • FirmhouseProduct
          • FirmhouseProject
          • FirmhousePromotion
          • FirmhouseRefund
          • FirmhouseSubscribedPlan
          • FirmhouseSubscription
          • FirmhouseSubscriptionUtils
          • FirmhouseSubscriptionWithUtils
          • FirmhouseTaxRate
          • FirmhouseVerifiedIdentity
          • FirmouseCollectionCase
        • TypeAliases
          • PaginatedResponse
    • Headless React
      • Examples
      • Components
        • FirmhouseCartProvider
        • CheckoutForm
        • OrderedProductList
        • OrderSummary
        • Translated
Powered by GitBook
On this page
  • What is the Firmhouse Storefront JS SDK?
  • It's that simple, eh?

Was this helpful?

  1. SDKs

Storefront JS SDK

Explore our guides and examples to use our Storefront JavaScript SDK to integrate Firmhouse with your website or e-commerce.

Note: Our Storefront JS SDK is still quite new! While tested extensively some things might not yet work as expected. We recommend to set this up in a test environment first before implementing it in your live store.

What is the Firmhouse Storefront JS SDK?

The Firmhouse Storefront JS SDK allows you to very easily add subscription, lease, rent, and membership functionality to your already existing website or to your existing e-commerce webshop.

With only a few lines of JavaScript and HTML code you can:

  • Add an Add to cart or Subscribe button to your website.

  • Show an on-page subscription cart with price overviews and quantity selectors.

  • Replace or add a subscribe button to your Shopify pages.

It's that simple, eh?

Yes! At least we hope so. Here's a quick primer:

Add the SDK JavaScript library:

Add the following snippet to the <head> of your website to add our SDK:

<script 
  src="https://storefrontjs.firmhouse.com/dist/storefront.js"></script> 
<script> 
window.Firmhouse = { storefrontToken: "", } 
</script>

Adding a product

Add the following to add a Firmhouse product with ID 123 to the cart:

<button onClick="Firmhouse.addToCart({productId: '123'})">Add to subscription</button>

Choosing a plan

Add the following to choose a Plan with slug premium:

<button onClick="Firmhouse.updatePlan('premium')">Choose Premium</button>

Opening the cart

To open the current cart:

<button onClick="Firmhouse.showCart()">View cart</button>

Last updated 1 year ago

Was this helpful?

and replace `yourtokenhere` in the previous snippet.

Generate a token