Skip to main content
All CollectionsIntegrationsAdd-ons
Firmhouse - Subscriptions
Firmhouse - Subscriptions

Measure and maximize 100% of Subscriptions with the Firmhouse integration

Tim Schouten avatar
Written by Tim Schouten
Updated over a week ago

Subscription and recurring based e-commerce brands often use Firmhouse as a subscription management platform that turns customers in subscribers.

Firmhouse hosts their own checkout page, which makes it more difficult to track where subscriptions are coming from. With our Firmhouse <> Billy Grace integration, a new subscription will be tracked as a Custom Event in your reports. Giving you insights into the conversion paths and which of your campaigns contributed to new subscriptions.

In addition to the new Custom Event, Customer life time metrics will become available:

New Customer Lifetime Value = new customers including all revenue that is generated from this new subscription. Over time, this will increase. If you look back at reports, you can better determine which campaigns over time are profitable.

Customer Lifetime Value Return on Adspend = The total ROAS of new and returning customers. Depending on the period you are viewing, the same client can be counted twice in this metric.

Follow these steps to add the subscription custom event to your account:

Billy Grace - Shopify pixel

First install the regular Pixel in Customer events of Shopify. Read here how this is done: Manual Pixel installation

Firmhouse - Checkout

Please add the script below to the body of the checkout (checkout -> preferences -> body). In a Firmhouse test account, it should appear as follows:

Important: In the snippet, you need to update the ID-**-****** to your account ID. You can find the ID on the Billy Pixel page in your account. Read on to see where you can find the right account id.

<!-- Start Billygrace Pixel Snippet -->
<script>
!function(B, G, _, P, I, X, E, L) {
B[P] || ((I = B[P] = function() {
I.process ? I.process.apply(I, arguments) : I.queue.push(arguments);
}).queue = [], I.t = +new Date(), (X = G.createElement(_)).async = 1, E = 216e5 * Math.ceil(new Date() / 216e5),
X.src = "https://bgmin.cdn.billygrace.com?t=" + E + "&v=0.1.0.1", (L = G.getElementsByTagName(_)[0]).parentNode.insertBefore(X, L));
}(window, document, "script", "BillyPix");

// Setup and start subscription event
BillyPix("init", "ID-**-******");
BillyPix("event","pageload");

// Send subscription_started event
if (window.Firmhouse) {
eventData = {transaction_id : window.Firmhouse.currentSubscription.id}
BillyPix('event', 'subscription_started', eventData)
}

var checkDataLayerInterval = setInterval(function() {
if (window.dataLayer && window.dataLayer.length > 0) {
for (var i = 0; i < window.dataLayer.length; i++) {
if ('transactionId' in window.dataLayer[i]) {
eventData = {
transaction_id: window.dataLayer[i].transactionId,
value: window.dataLayer[i].transactionTotal
};
BillyPix('event', 'subscription', eventData);
clearInterval(checkDataLayerInterval); // Clear the interval once a matching dataLayer item is found and used
return; // Exit the for loop once a match is found
}
}
}
}, 100); // Check every 100ms

// Stop checking after 3 seconds
setTimeout(function() {
clearInterval(checkDataLayerInterval);
}, 3000);
</script>
<!-- End Billy Grace Pixel -->

Important: In the above snippet, you need to update the ID-**-****** to your account ID. You can find the ID on the Billy Pixel page in your account:

In doubt if the pixel is installed correctly? Please contact our support team via the in-app messenger and will guide you through the steps.

Did this answer your question?