I was tired of waiting days for spreadsheets just to figure out if my ads were working.
Today I want to show you how you can use Keymetrik to improve your overall marketing efforts.
First, what exactly is the goal of Keymetrik? Keymetrik was created solely because I couldn’t find a good software – that was easy to use – to manage my own marketing efforts. Multiple campaigns, leads, customers, and tracking individual KPIs became quickly impossible. Sooner or later you’ll end up with a huge marketing tech stack, different UIs, different ways to do X.
As someone who was always direct-response focused I wanted to have all metrics at a glance. See where my leads came from, how long it took them to conduct their first purchase and what their purchase frequency is. A few years ago I started to code the first version of Keymetrik. This was kinda rudimentary and not as extensive as of now. Still, I have used it and found out it had some flaws that needed to be fixed.
Few months ago I did a complete rewrite of the code and here’s what’s possible with Keymetrik:
- Managing multiple campaigns, doesn’t matter what source
- Tracking leads and customers from different campaigns
- Attribution of all leads through a privacy-by-design approach. So, you can see where the lead originally came from, without hurting privacy
- All important KPIs are visible at a glance
- Plug-and-play, it can be used anywhere
- And all this in one dashboard with just eight menu items. To be exact, there are only six menus that you need to use to manage your efforts. The other three are just for administrative purposes (settings, API keys, …)
Why privacy-by-design? I live in the heart of Europe, Austria. Or in other words, in the heart of GDPR. You can’t track people without their explicit consent. And even if you do, it becomes a pain in the ass. That’s why Keymetrik allows privacy-friendly attribution without fingerprints, cookies or whatever new tool emerges to track people across their screens.
Personally-identifieable data is never stored, whether at transit or rest. And yes, you don’t need cookies for Keymetrik. It’s a simple script you can use on your page, a few API calls and everything works automatically. No spreadsheets, no guesswork.
If you don’t know what API calls are, don’t worry. There is a extensive documentation available to show you every step.
The interface
The idea was to keep it as simple as possible. With only six menu items you’ll need daily.
You can manage multiple projects. Projects? You can say a project is your business or greatly simplified the website that runs Keymetrik’s script.
You can jump between these projects whenever you like, all metrics, leads, customers, are of course separated per project. So, if you run multiple ecommerce sites you can manage them with Keymetrik, all in one interface.
How does it work?
You only need to add a line of code to your website. And yes, this works for all websites, whether it is a CMS, like WordPress, or Shopify, BigCommerce, or a “normal” website, whatever it is.
<script defer src="https://cdn.keymetrik.com/script.js" data-project-id="your-project-id"></script>
That’s how it looks.
The job of this script is to keep track of all your visitors while not saving any personally-identifieable data. The data is later used for attribution of leads.
Then, an API key is needed to call the endpoints to add leads, customers and purchases automatically without you doing anything.
API? What is that thing?
So, for those of you who are not familar with some of the terms from above. Please let me elaborate.
The idea behind Keymetrik is to be used anywhere. To achieve this, I rely on an API that can be called anytime. Let’s say you have a newsletter signup on your website. And you want to treat such people as leads. Instead of manually entering his details (firstname, lastname, email) you can notify Keymetrik to create this lead on your behalf.
const payload = {
email: "[email protected]",
firstName: "Jane",
lastName: "Doe",
};
await fetch('https://api.keymetrik.com/lead/', {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": "your-key",
},
body: JSON.stringify(payload),
});
And that’s it. Even if you don’t understand a line of this, don’t worry. There are guides here with step-by-step instructions and snippets you only need to copy and paste.
Privacy & Attribution
I believe marketers shouldn’t have to choose between getting real insights and respecting user privacy. Keymetrik doesn’t use cookies, fingerprinting, or any of the usual tricks you see in shady analytics tools. No creepy tracking. No silent data collection.
However, to provide attribution reporting, Keymetrik uses a short-lived, privacy-safe identifier based on a visitor’s IP address and browser information (User Agent). This identifier is only stored temporarily (up to 7 days), and only if a visitor becomes a lead or customer.
While this method is designed to be compliant with GDPR and ePrivacy principles (no cross-site tracking, no profiling, no persistent identifiers), IP addresses and user-agents are technically considered pseudonymous data under GDPR. That means:
- You don’t need a cookie banner or explicit consent to use Keymetrik on your site,
- But you should mention Keymetrik in your privacy policy, under the section that describes analytics or attribution.
Short-lived, privacy-safe identifier
When someone visits your site, a temporary, privacy-safe identifier — a kind of visit “shadow” — is created that helps you know where they came from if they eventually become a lead or customer.
That’s it.
If they don’t engage after seven days this shadow is deleted. Either way, no IP addresses are stored, nor the plain User Agent string. Only this short-lived shadow is stored.
To accurately attribute conversions, Keymetrik uses this visit shadow for up to 7 days. This helps connect the dots between a user’s original visit and a later signup or purchase, without collecting or storing personal data unless the visitor explicitly interacts with your site. If after seven days this visitor did not interact with your website it will be deleted.

This hidden shadow – which itself is a UUID – is built using a one-way cryptographic hash (SHA-512) of two inputs:
- the user’s IP address and
- browser type (User Agent)
combined with a long, private server-side secret.
This secret is never stored or shared, with more than 60 characters even knowing the original inputs wouldn’t be enough to recreate the UUID.
Attribution
Only if this visitor takes action on your site, Keymetrik will look up the initial visit (the shadow) and will connect the dots.
This is how you can attribute the first visit to a lead without hurting his privacy. Even if the dots are connected, Keymetrik never – under any circumstances – stores IP addresses or user-agent strings, not for visitors, not for leads, not for customers.
The only data that is saved if you register a lead or customers, is their name and email address. Which of course is personal data, so again, you should mention Keymetrik in your privacy policy, under the section that describes analytics or attribution.
Campaign Management
Handling multiple campaigns can become tedious. You have Facebook Ads, Google Ads, maybe even ads on Reddit, many visitors are coming to your landing pages and it becomes hard to find out where exactly they came from.
With Keymetrik, Urchin Traffic Monitors (UTM) are used to automatically create campaigns. How exactly? Each UTM is uniquely identified with it’s id (utm_id
). The other variations are irrelevant.
Let’s assume two UTMs
Id | Source | Medium | Name |
abc | cpc | spring_sale | |
abc | newsletter | spring_sale |
For Keymetrik this is one campaign that holds both UTMs from above, due to the same id of abc. Another id would result in a new campaign.

This also means you need to use UTMs in combination with Keymetrik, what you should do anyways, for it to work.
Besides this automatic registration of campaigns you can create your own campaigns and define the utm_id
you want to use. What about the investment? Yes, you can define and adjust the investment of any campaign whenever you want.
For me, using UTMs was the best way – and the most reliable – to find out where my traffic was coming from. This is why I used it as foundation for the campaign management.
Capturing Leads
How are leads attributed? Simply, when a lead is added, Keymetrik finds out who this visitor is and where he came from. If he came from an ad with a clear UTM, the lead will be assigned to the respective campaign. If not, the following happens:
- lookup if this visitor was recorded in the last seven days
- if, we find out if this visit was through a UTM or not
- if so, then the UTM is used to attribute the lead to the campaign,
- otherwise its just recorded as standalone lead.
This doesn’t mean you can’t assign this lead to a campaign of your choice. You can, whenever you want.
Now, the attribution type. You can decide if you want to attribute leads to the first touchpoint or the last. This can be configured for each campaign.

The first visit was from Google, the second from Facebook. Now, this person became a lead. Depending on your settings, you can attribute him to the campaign that holds abc or efg.
For each lead you also see all touchpoints he had with your website, as well as his acquisition cost – if he is attributed to a campaign.

Customers
A customer is a lead who did buy a product from your website, or started a subscription. Here we assume that he lead is logged in on your site (ecommerce site e.g.) and purchases something. Or he is in the trial phase and buys the subscription.
If not, that’s not a problem. You only need the email of this person to register him as a customer, plus an associated sale. This is important. You can’t create a customer without a purchase.
const payload = {
email: "[email protected]",
purchases: [{price: 19.99}],
};
await fetch('https://api.keymetrik.com/customer/', {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": "your-key",
},
body: JSON.stringify(payload),
});
As you can see you can add as many purchases as you want. For this example it’s just one product e.g. You may add more like this
const payload = {
email: "[email protected]",
purchases: [
{price: 10.99},
{price: 19.99},
{price: 49.99},
],
};
Purchases
When someone buys something he is of course logged in. Just like before, you only need the email of an existing customer to add as many purchases as you want.
For this you can call
const payload = {
email: "[email protected]",
amount: 19.99,
};
await fetch('https://api.keymetrik.com/purchase/', {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": "your-key",
},
body: JSON.stringify(payload),
});
Metrics
In total Keymetrik tracks and calculates eight metrics
- Lifetime Customer Value
- Purchase Frequency
- Customer Acquisition Cost
- Cost per Lead
- Lead to Conversion Rate
- Conversion Cycle
- Average Order Value
- Return on Ad Spend
(If you don’t know what some of these metrics mean, you can read about them here.)
By focusing only on these eight numbers you always have your overall marketing well-being under control. These are calculated separately for each campaign and globally for your business (project-wise).
I found it to be hard to measure marketing accountability if you keep track of dozens of numbers. Numbers that are itself irrelevant in the greater scheme of things.
Plus, with these numbers it’s easy to forecast based on historical data. Also a functionality added to Keymetrik. For each campaign you can find out what an additional investment would potentially yield.
Leave a Reply