Appbrew integration
Your app sells.
Your ads get no credit.
A shopper taps an ad, installs your app, and buys three days later. Shopify files that sale as Direct, because the tap and the purchase were never introduced. This puts them back together.
- Campaign
- not recorded
- First touch
- not recorded
- Device
- not recorded
- What the ad platform learns
- nothing
- Campaign
- spring_snowboards
- First touch
- Instagram, 3 days earlier
- Device
- the install that tapped the ad
- What the ad platform learns
- this ad sells
On one Shopify store we measured, the app placed 487 orders in 30 days. Around 20% could be joined to a journey, and just 5 orders out of the 487 carried a campaign tag. The rest were filed as Direct: real revenue, earned by ads that were never told they earned it.
How the join works
Three routes to the same answer.
An app order can lose its trail in several places, so it is given more than one way to arrive. If a checkout app rebuilds the cart, or the shopper takes a week to decide, the sale still finds the tap that started it.
The cart carries it
At checkout the cart is stamped with the device, the session and both touches. Shopify copies cart attributes onto the order, so the order arrives already knowing where it came from.
Every attribute we do not own is read off the cart and written back untouched, including Appbrew’s own instance id and any checkout partner’s keys.
The app reports the sale
The app sends the purchase the moment it happens, with the order id. The Shopify webhook for that same order merges into the same row rather than creating a second one.
Both observations are kept. Two witnesses to one sale is a feature, not a duplicate.
The install id as a backstop
Appbrew stamps a stable per-install id on every app order. If a checkout app rebuilds the cart and drops everything else, that id still joins the order to the device.
Three independent routes to the same answer, so one of them failing is not a lost sale.
Setup
One key. No release.
There is nothing to build and nothing to submit to an app store. The integration is pure JavaScript, so switching it on is a configuration change that ships with your next bundle.
Ask Appbrew to switch it on
CookieBees is a published Appbrew package. Appbrew enables it for your app. Because it is pure JavaScript, this is a configuration change and not an app-store release, so it ships with the next bundle rather than the next version.
Paste your tracking key
In the Appbrew dashboard, under Integrations, CookieBees. Copy the key from Cookiebees under Settings, Tracking. The endpoint is already filled in. That is the whole configuration.
Buy something
Open the app from a tagged link, view a product, add it to the cart and check out. In Cookiebees, open Integrations. The Appbrew card reads Sending, with counts.
Settings
Four fields, one of them required.
In the Appbrew dashboard, under Integrations, CookieBees.
trackingKeyYour workspace’s tracking key, from Cookiebees under Settings, Tracking. The same key your website tag already carries. Leave it empty and the tracker stays idle and sends nothing.
endpointOnly change this if your store uses a first-party tracking domain. It is prefilled otherwise.
stitchCartStamps the cart so app orders join the device that placed them. Turn it off and orders join through the install id or the app’s own purchase report instead.
debugLogs every batch to the console while you are testing.
What it records
Enough to credit the sale.
Nothing you did not ask for.
The integration reads what the app already knows, and none of it leaves your workspace. Email and phone are hashed before they are stored. There is no advertising identifier, no device fingerprint and no tracking across other apps.
One device id
Minted once per install and kept in the app’s own storage. Never copied from a web cookie, because an app is not a browser.
The in-app funnel
Screen views, product views, add to cart, checkout, purchase and search, each carrying the session, the platform, the build and the attribution as it stood at that moment.
What opened the app
A deep link, OneLink or MMP payload becomes the first touch, written once, and the last touch, replaced by every tagged open. A purchase days later still names the campaign.
Sign-in
When the shopper signs in, the device links to the customer. Email and phone are hashed before they are stored.
How to know it is working.
Open the app from a tagged link and buy something. Then open the order in Shopify: under Additional details you will see the device, the session and both touches sitting alongside Appbrew’s own install id. In Cookiebees, the same order shows the screens the shopper saw and the ad that started it, instead of a bare Direct.
Your app is already selling
Give the ads that fill it
the credit they earned.
Connect your Appbrew app to Cookiebees and every app order arrives naming the campaign that produced it. 30-day free trial on every plan, no card required.