BitelioBitelio

Conversion goals

Measure what a campaign achieved, not just who opened it

Opens and clicks tell you an email was interesting. They do not tell you whether it worked. A conversion goal names the event that counts as the outcome — a purchase, a signup, a booking — and credits it back to the email that earned it.

Defining a goal

In Settings → Data → Conversion goals, name the event that counts. It does not have to exist yet: you can define purchase before your application has ever sent one, the same way you can declare an event before building a workflow around it.

A goal has:

  • The event name. Exactly the name your application sends to /v1/track.
  • An attribution window — how long after an email a conversion still counts. Fourteen days by default.
  • An amount field and a currency field, optional. Both are paths into the event's data, so an event like {"revenue": 49.90, "currency": "EUR"} needs revenue and currency.

Leave the amount empty to count conversions without money attached. Signups and bookings are real outcomes with no price.

The window belongs to the campaign, the goal does not

You set the window on the goal, but any campaign can override it — and only the window.

That split is deliberate. What counts as a purchase is a property of your business: it has to mean the same thing on every report, or two campaigns are no longer comparable. How long a purchase can still be credited to a particular send is a property of that send. A flash sale converts in hours; a mattress converts in weeks. One default cannot be right for both, and forcing one would either lose the mattress conversions or credit the flash sale for purchases it had nothing to do with.

So: define purchase once, then give the flash sale a two-day window and the mattress campaign sixty.

How a conversion is credited

When a goal's event arrives, Bitelio looks back over the window for the emails that contact engaged with, and credits the most recent click. If there were no clicks, it credits the most recent open.

A click is intent. An open increasingly is not — Apple's Mail Privacy Protection opens messages nobody read — so the open is a fallback, never a tie-break.

This is the same rule used for Shopify order attribution, deliberately. Two attribution rules would credit different campaigns for the same contact, and the first time both numbers appeared on one screen, neither would be believable.

What the numbers mean

The campaign report shows conversions, the attributed conversion rate, revenue, and the average time from engagement to conversion — plus unsubscribes and complaints in the same card, because a campaign that converts well and burns your list is not doing well.

Two things are worth being precise about.

The attributed rate is not your conversion rate

It counts only conversions by contacts who clicked or opened one of these emails inside the window. Customers who bought without ever engaging with the campaign are not in it — and neither are those who would have bought anyway.

It will therefore be lower than the conversion rate in your own analytics, and that is correct, not a bug in either system. They are answering different questions: yours asks how many visitors bought, this one asks how many purchases can be traced back to an email.

Revenue is never combined across currencies

If a campaign earns 1,000 EUR and 1,000 USD, the report shows both figures, separately. It never shows 2,000.

Bitelio does not know your exchange rates, and a converted total would be a number with no defensible date attached to it. Adding them anyway would produce something that looks entirely reasonable and means nothing.

Conversions are final

A recorded conversion is never revised. There are no refunds, no cancellations and no reversals — if a customer converts and later gets their money back, the conversion and its revenue stay in the report.

This is a real limitation, and worth knowing before you use these figures for anything financial. Attribution answers "which email led to this?", and the answer to that does not change when the order is later refunded: the email did lead to it. If you need revenue net of refunds, the Shopify integration tracks order cancellations and refunds against the order itself, and that is the number to use.

A/B tests

If the campaign is running an experiment, the report breaks each goal down by arm, with each arm's recipient count next to its rate.

The recipient counts are shown rather than assumed because arms are rarely the same size — a holdout least of all — and two bare percentages invite exactly the comparison that sample size is supposed to qualify.

Timing

Attribution runs in the background, within seconds of the event arriving. It never delays or fails the event itself: if attribution cannot run, the event is still recorded, and only the crediting is lost.

Goals also apply to workflows, with the same window override and the same report.

The campaign that never wins the last click

Attribution credits one email. A newsletter that is never the thing clicked five minutes before the purchase — because it is not the one with the discount code in it — reports near-zero conversions and looks like something to cut.

So each campaign also reports what it was in the path of:

  • assisted conversions — how many conversions it was engaged with before, without earning them
  • linear model revenue — each conversion's amount divided by the number of campaigns in its path, this campaign's share summed

Two models, one amount of money

Last click and the linear model are two ways of dividing the same money, not two amounts. Each one, added across all your campaigns, comes to what actually came in. They disagree per campaign, which is the entire point: last click says the discount email did all the work, linear says the newsletter read ten days earlier did an equal share.

Adding one to the other is not a number. Nothing in Bitelio will show you that sum.

Neither is true, either. Both are conventions. The only thing here that measures whether sending caused anything is a holdout, which withholds email from part of your audience and compares — which is why the two conventions sit beside each other, labelled, instead of one of them quietly claiming to be the correct one.

What counts as being in the path

A campaign counts once per conversion, however many of its emails the contact opened. Two runs of the same automation are one thing in the path. And transactional email is not in the path at all: nobody would credit a password reset for a purchase.

Assists start from the day this feature shipped. Conversions recorded before it have no path, and the report says so rather than presenting a partial history as a complete one.

Did any of it help?

Attribution answers which email earned a conversion. It cannot answer whether the conversion would have happened anyway — the customer who was going to buy regardless still clicked, and still gets credited.

A holdout can measure a goal, and that is the question it answers. Note that it counts the goal's events for everyone, attributed or not: the held-out group receives no email, so it has nothing attributed by definition, and comparing attributed figures between the two would measure the split rather than your email. The two reports are meant to disagree.