Measuring what an advertisement actually produced
Report sign-ups and purchases with values, eliminate duplicate counts, and measure ROI and ROAS.
1. Clicks are not results: Understanding conversions
Impressions and clicks measure audience attention, but they do not measure business success. An ad with a high CTR that generates zero leads or sales wastes marketing budget.
A Conversion represents a meaningful business outcome on your website — an account sign-up, a lead form submission, a newsletter subscription, or an ecommerce purchase.
AdServeKit's conversion tracking connects ad delivery directly to your business results, attributing sales to specific campaigns and calculating true Return on Ad Spend (ROAS).
2. Installing the tracking tag
Conversions are reported by the unified houseads.js measurement script. Include it in the <head> of your website:
Copy your site-specific snippet from Websites → your website → Tracking code. The script includes an asynchronous queue stub, so tracking calls made before the script finishes loading are safely queued in memory rather than lost.
The unified tracking tag
<script async fetchpriority="low" src="https://api.adservekit.com/houseads.js" data-measurement-id="G-XXXXXXXXXX"></script>3. Reporting standard conversion events
Call houseAds.track() when a conversion event occurs — such as inside a form submission handler or on a thank-you page.
Six standard event names are treated as conversions across all dashboard reports: signup, lead, subscribe, add_to_cart, checkout, and purchase.
Example sign-up conversion
window.houseAds.track("signup", { method: "email" });4. Reporting purchases with values and transaction deduplication
For ecommerce orders, call houseAds.purchase() with the transaction identifier, monetary value, and currency code.
Always provide a transactionId. Order confirmation pages get refreshed, bookmarked, and reopened from emails. When you supply a transactionId, AdServeKit prevents duplicate counting. If a customer reloads the page 5 minutes or 5 days later, the system recognizes the duplicate transaction and records the purchase only once.
Example completed purchase
window.houseAds.purchase({
transactionId: "ORD-94821",
value: 49.99,
currency: "USD",
items: 2
});A purchase without a transactionId cannot be deduplicated, and page refreshes will overstate your recorded revenue.
5. Attribution mechanics and ROI reporting
Attribution flow:
1. When a visitor clicks an ad, the landing URL carries a signed click identifier.
2. houseads.js reads the identifier on your landing page, cleans the URL, and securely remembers attribution state for that session.
3. When the user navigates through your site and completes a purchase, the conversion payload includes the attribution identifier.
4. The system credits the conversion to the originating campaign, creative, publisher, and country.
Review results in Analytics → Post-click / ROI: Inspect delivery spend against recorded conversion revenue to view net profit, ROI percentage, and ROAS multiplier.
6. Privacy and data protection
Send order identifiers, not personal identities. Never pass email addresses, customer names, or credit card details into conversion tracking.
AdServeKit respects Global Privacy Control (GPC) and Do Not Track (DNT) browser signals. Opted-out visitors have their conversions counted, but without generating persistent visitor identifiers.