Case Study

How Datafunc cut cost per enrollment by 65–87% on an already-optimised account

This account had mature campaign structure, tested creative and actively managed budgets. What it did not have was a conversion signal the platforms could use. We rebuilt that layer. Enrollments went up with the same spend.

Client

EKEK Athina,
Lifelong learning programmes delivered in partnership with the University of Patras

Engagement

Performance marketing and growth since 2021
Attribution infrastructure since 2026

Disciplines

Performance marketing, data engineering, marketing attribution

At a glance

−65 to −87%

Cost per enrollment, first two programmes migrated

6x to 11x

Paid-attributed ROAS on the strongest programmes in the portfolio

−63 to −90%

Cost per application

Flat or lower

Ad spend

01

The account was already optimised

Datafunc has run performance marketing for EKEK Athina since 2021. By the time we rebuilt the measurement layer in 2026, this was not an account failing through neglect. Structure was mature, creative had been tested at volume, budgets were managed weekly, and media buying had taken most of the gains available to it on the data it had.

What was left was an information problem. Most applications reached the forms without a usable click identifier. The conversion that carried the revenue, a paid enrollment, happened offline in the back office, usually one to two weeks after the application. Google and Meta could see the lead. They could not see the student.

So they optimised toward the lead.

02

The measurement gap

A prospect clicks an ad, reads a sponsored article, submits an application, leaves the browser, and pays for the programme nine days later. To the platform that is a click and a form submission with nothing connecting them, and silence after that. To the business it is one customer who paid.

Tell a platform that a form submission is the success event and it will go and find more people who submit forms. It has no way of knowing which of them pay.

The open loop

Ad spend
→
Application
→
measurement gap
→
Enrollment

Closed

Ad spend
→
Application
→
Enrollment
→
Google / Meta
→
Optimisation

85%

Most applications carried no usable click ID

Roughly 85% arrived with neither a gclid nor an fbclid. A large share of demand comes through sponsored editorial and organic discovery, where the advertising identifier does not survive the route to the form. That figure is conservative.

1 person, several users

Browser analytics cannot stitch the journey

GA4 and client-side tracking describe sessions and behaviour well. They are not an identity layer. The same person on a phone and a laptop can appear as two unrelated users, and there is no reliable way to merge them afterwards.

1 to 2 weeks

The conversion that mattered happened offline

Payment was recorded in back-office systems, typically one to two weeks after the application, and that record never made it back to the advertising platforms.

03

Closing the loop

We built a first-party, server-side pipeline that connects each application to its eventual enrollment and sends that outcome back to the platforms. Four components.

Ad platforms and publishers paid clicks, sponsored articles Back-office enrollments the paid decision, offline Application capture signed webhook, real time Enrollment import normalised, deduplicated FIRST-PARTY WAREHOUSE Identity match hashed email, phone Programme mapping 60+ programme keys Segmentation 13 audience segments Meta CAPI lead and purchase Google Ads offline conversions Reporting layer paid ROAS by programme confirmed enrollments feed back into platform optimisation

01

Capture every application as first-party data

Every form submission is written straight into a cloud data warehouse through a cryptographically signed webhook, carrying identity, source and campaign fields. Nothing depends on a third-party cookie surviving the journey.

02

Match applications to actual enrollments

Offline enrollment records are reconciled against applications on normalised email as the primary key and phone as fallback. Programme names differ between the back office and the intake forms, so matching runs on identity, never on programme title.

03

Send the real conversion back to Google and Meta

Confirmed enrollments are delivered server to server: offline conversions to Google Ads, Conversions API events to Meta. The optimisation target moves from people likely to submit a form to people likely to pay.

04

Segment and enrich

The same layer classifies every lead by programme, source and first-party attributes. That feeds audience segmentation, suppression and reporting.

04

Making sure the signal is real

Sending an event is the easy part. The failure modes sit in what the event contains and whether the platform accepts it.

Deduplication

Every application gets one stable ID when it lands, and each enrollment is matched to it once. A repeat submission or a rerun does not create a second conversion.

Identity quality

Email and phone are hashed before transmission. Malformed click identifiers are rejected at write time rather than passed downstream, where platforms discard them silently and nobody finds out.

Match rate

We measure what share of offline enrollments find their original application, and treat a fall in that number as a pipeline fault, not a market change.

Temporal integrity

In reporting, an enrollment is only credited to an application submitted before it.

60+

programmes mapped to one canonical taxonomy

50+

intake forms unified into a single first-party table

13

audience segments wired to live conversion rules

Daily

enrollment reconciliation, rebuilt and revalidated every evening

05

Privacy and control

No personal data leaves in clear form. Email and phone are hashed before anything is sent to a platform. Consent is captured with the application and carried through the pipeline. The warehouse runs in a dedicated cloud project in the EU. GDPR was a design constraint from day one.

06

The results

First two programmes migrated to the closed loop. Comparable windows of roughly four weeks before and after, same programmes, same channel mix.

Programme A

Cost per application −63%
Cost per enrollment −65%
Enrollment volume +150%

Programme B

Cost per application −90%
Cost per enrollment −87%
Enrollment volume +800%

Combined ad spend across the two programmes was flat (−1%). Spend on one programme fell and on the other rose. Absolute figures are withheld at the client's request.

Two things worth saying about these numbers. The enrollment counts behind them are small, which is what a four-week window on a single programme looks like in this market. And the after period was measured while part of the cohort was still converting, because enrollment lags application by one to two weeks. The measured improvement is understated.

07

What you cannot measure, you switch off

Before the loop was closed, a seminar with real Meta spend and almost no attributed enrollments looked like a failing campaign. Some of them were. Others were converting normally and the enrollments simply never found their way back into the reporting.

Those two situations are indistinguishable in a platform dashboard and they call for opposite decisions. Without offline matching there is no way to tell them apart, so the default is to pause, and some of what gets paused is profitable.

With the loop in place the distinction is visible. Across the portfolio we separated the genuinely underperforming programmes from the under-measured ones and stopped spending on the first group, moving roughly a sixth of monthly advertising budget off programmes that were not working.

Cheaper acquisition was one outcome. Knowing which budget to stop was the other.

08

From blended ROAS to channel-true economics

On one programme in the portfolio, blended ROAS across all sources read roughly 16x. Separated by actual acquisition source, the paid component was closer to 2.7x. The rest came through organic and CRM channels.

Blended ROAS, all sources ~16x
Paid-attributed only ~2.7x

Both numbers are accurate. Only one of them should inform a decision about paid budget.

With the attribution layer in place, paid, organic, publisher and CRM demand are evaluated separately. Across the portfolio, the strongest programmes run at roughly 6x to 11x on a paid-attributed basis. Those are the numbers we scale against.

09

Audiences built from people who paid

Once the warehouse knows who actually enrolled, targeting stops running on form fillers.

Audiences are seeded from paying students rather than applications.

People who have already enrolled are suppressed, so budget stops chasing customers the client already has.

Leads are segmented by interest, so each campaign optimises against a conversion rule that matches its audience.

This is the part that compounds. Every month of enrollment data makes the targeting inputs better.

10

It runs as an operation

Morning

Advertising cost data is ingested.

Through the day

Applications land in the first-party layer continuously.

Evening

Enrollment records are reconciled and confirmed conversions are queued for Google and Meta.

Overnight

The reporting layer rebuilds.

Failure modes are documented, the pipeline is recoverable from source, and every change goes out as an isolated deploy so a fault can be traced to one thing. The client's team opens one report and sees cost per application and cost per enrollment by programme, without asking anyone to run a query.

11

What it takes on your side

A cloud project. Ours to begin with if you prefer, with a migration later.

Read access to wherever the paid outcome is recorded. A CRM, a spreadsheet, a back-office export. It does not need to be clean.

One person who can confirm what a conversion is worth commercially.

The diagnostic takes one to two weeks.

12

Where else this applies

The problem is not specific to education. It shows up wherever the sale closes after the lead leaves the website.

B2B

A lead becomes a signed contract weeks later.

SaaS

A trial becomes a paying account.

High-value services

The close happens by phone, in a branch or in a back office.

If your platforms can see your leads but not which leads paid, they are optimising against the half of the funnel that does not generate revenue.

 

Find out what your ad platforms cannot see

Your campaigns may not have a media-buying problem. They may have a measurement problem.

We map where your conversion signal is lost, and tell you whether closing the gap is worth the money. If it is not, we will say so.

Clean data in. Better decisions out.