All articles

What France’s top news apps do after you refuse tracking

We took 20 of the most highly ranked apps in the French ACPM ranking of digital brands for May 2026, news and media category. On each one we tapped refuse on the tracking prompt, then used the app the way anyone would for about two minutes. Here is what came back, with tracking refused the whole time.

How we measured

Everything here comes from a physical Android phone running Android 15, not an emulator. The steps were the same for each app. Launch it, with instrumentation in place to record what it sends and what it writes to the device. Tap refuse on the tracking prompt as soon as it shows up. Then browse the home, scroll, open a few articles, play a video, for about two minutes. The charts show what happened in that window.

Ninety-five third-party vendors

Start with the count. Across these apps there are 95 distinct third-party vendors, spread over close to 150 domains, more than 300 counting subdomains. Tracking was refused across the whole measured journey.

Most are there to advertise: 40 of the 95, about 42 percent. Add identity and data brokers, audience measurement and social networks, and tracking purposes reach 65 percent of the total. The rest is infrastructure, video, payment, and the consent tools themselves.

Horizontal bar chart of the third-party vendor categories seen across the 20 news apps: advertising leads with 40 vendors, ahead of identity and data brokers, infrastructure, analytics, video, and consent tools. App names not shown.
What the third-party vendors do. Advertising leads, and tracking purposes are 65 percent of all vendors.

The banner is not missing

The question does get asked. We identified four different consent platforms, with Didomi well ahead, then OneTrust, AppConsent by SFBX, and TrustArc. A few names also come back in nearly every app. Google is present in all of them, Didomi in close to three quarters, Piano Analytics and Meta follow.

Bar chart of the vendors present in the most apps: Google in all of them, the Didomi consent platform and jsDelivr next, then Piano Analytics and Meta. Tracking vendors marked apart from infrastructure and consent tools.
The vendors present in almost every app, led by Google, the Didomi CMP, and Piano Analytics.

The issue is timing

About four in ten vendor contacts happen in the first ten seconds. The banner itself shows up around the ninth second. So part of the collection has already started before the question is on screen, and the rest fires while the banner waits for an answer.

Timing chart of when each purpose first appears after launch, on a log scale: identity and data brokers, video and advertising fire well after the consent banner, which loads around the ninth second, while collection is already running.
When each purpose first appears after launch. Tracking starts before the consent banner is answered.

What leaves the device

What leaves is not trivial either. 41 vendors send at least one identifier before consent. The most common is a persistent pseudonym, and about nine identifiers out of ten are persistent rather than disposable. Some are shared identifiers, the same value received by several separate vendors, which is what lets them recognize the same person across each other.

Bar chart of the identifiers sent before any consent, by type: persistent pseudonym most common, then shared cross-vendor IDs, install IDs and device fingerprints.
Identifiers sent before any consent, by type. The shared ID is what lets separate companies recognize the same user.

Tracking does not stop at the network

On the device, data gets written from the moment the app opens, mostly into app preferences and local databases, and a good share of it comes from tracking SDKs. Again, before any consent.

Two more things, on the side. In one app, email addresses were sent to an error monitoring tool. And two SDKs, including Google’s advertising SDK and Batch, encrypt their payload on top of HTTPS, which makes the content unreadable to ordinary network inspection.

Stacked bar chart of data written to the device before consent, by storage location: app preferences dominate, ahead of local databases, with a large share coming from tracking SDKs.
Data written to the device before consent, by storage location and type of writer.

One request worth a closer look

Most of the above is a pattern. This one is a single request, and it is hard to read any other way. The same behavior shows up in five of the apps, from an advertising SDK named Start.io.

With tracking refused, the SDK calls home, and the request proves it got the message: the advertising identifier is zeroed out, and a flag named limit ad tracking is set to true. On its own, that looks like a vendor doing the right thing.

Then you read the rest of the body. In the same request it ships its own device identifier, which our detection flags as persistent, next to a fingerprint of the phone: model and manufacturer, OS version, free and used memory, network type and roaming state, time since the last boot, and whether the device is rooted. The official identifier is off. The device is recognized by everything around it instead.

An advertising SDK request sent with tracking refused: the advertising ID is zeroed and limit ad tracking set to true, while the same body carries the SDK’s own persistent device id and a device fingerprint. Values shown as placeholders.
With tracking refused, an ad SDK zeroes the advertising ID and sets limit ad tracking to true, then sends its own persistent device id and a device fingerprint in the same request.

Proof a DPO cannot wave away

This is the part a DPO cannot really wave away. The request itself is the proof that the refusal was received, since the SDK zeroed the ad ID and set the limit flag on its own. Collecting a persistent id and a hardware fingerprint in the same breath is not a technical need for reading the news. It is recognition by other means, after a no.

What the banner lists, and what actually runs

The banner is supposed to name the vendors an app works with. A consent platform can declare them three ways: through the IAB vendor list, through custom vendors the publisher adds by hand, and through Google’s Additional Consent list for ad tech outside the IAB. A vendor counts as declared if it shows up in any of the three.

So we took every advertising, identity, analytics and social vendor that fired before consent and checked it against all three. A vendor that runs without appearing in any of them is active without being declared. We could only do this where the consent setup was readable in full, which here means the apps on the most common of the four platforms.

After that check, thirteen vendors come back active before consent while missing from the declaration in at least one app. A single app is enough to count.

Bar chart of vendors active before consent yet absent from the app’s declared set, after checking all three channels: the IAB vendor list, custom vendors, and Google Additional Consent. Adjust leads, present in three apps.
Vendors active before consent that the app does not declare, checked against all three channels: the IAB vendor list, custom vendors, and Google Additional Consent.

The gap takes three shapes

A vendor registered with the IAB that the app simply left off its list. A Google ad tech provider the app did not select. And a vendor that is nowhere in the consent setup at all. Adjust, an attribution SDK, runs unlisted in three of the apps. Meta is active before consent in one app without being declared there, even though another app does declare it through Google’s list, the sort of thing you only catch by checking all three routes.

A careful reading

A few of these come with a reading a DPO might offer. One analytics vendor can point to the audience measurement exemption. Two of the social names are embedded posts and a comments widget rather than partners the publisher chose. Take those out, and what is left is advertising and attribution, the vendors whose whole purpose needs consent.

Even on that careful reading, ad and attribution vendors are running before consent that the banner never names.

The same view limited to advertising and attribution vendors, with audience measurement and embedded social content removed: Adjust, MediaGo, Integral Ad Science, Start.io, Meta and others still run before consent without being declared.
The same view limited to advertising and attribution vendors, with audience measurement and embedded social content removed.

How to read all this

These are signals, not verdicts. What governs reading and writing information on a device in France is Article 82 of the Loi Informatique et Libertés, not the legitimate interest basis people often reach for. Whether any of it is compliant is a call for the DPO, with the full context of each app in hand.

That last point is the reason we built Skanopy: replay the analysis on every release, keep a reproducible record, and leave the qualification to the people whose job it is.

Common questions

Can an app keep tracking after you refuse?
That is what observation regularly shows. The refusal is recorded by the banner, but traffic to third parties does not stop for it: some SDKs fire before the choice is even shown, others never consult the signal at all. The finding is factual; qualifying it is the data protection officer’s call.
How do you check whether an app honours a tracking refusal?
By starting from a clean install, refusing at the prompt, then recording what leaves the device afterwards. Every exchange has to be timestamped against the moment of refusal, or nothing separates a legitimate call from one that should have stopped. The record places the exchanges; it does not decide in the DPO’s place.