file_download

A link to a file was followed. A count, and not a proxy.

FieldValue
Namefile_download
Severity9 (INFO)
Written byBrowser tag.
Turned off bydata-auto-outbound="false", the same switch as outbound_click.

When it fires

On a click on an anchor whose path ends in one of a fixed list: pdf, zip, dmg, exe, msi, pkg, deb, rpm, appimage, csv, xlsx, doc, docx, mp3, mp4.

A fixed list rather than anything with a dot in it, because /v1.4/setup is a page and /pricing.html is not a download.

A link that is both off-site and a file is a download only. What is interesting is that somebody took the file, not that the file happened to live on a CDN.

firstrun is not in the way of the file. No href is rewritten, no redirect is inserted and nothing is proxied. The download starts exactly as it would have if the tag had never loaded, and it still works when we are down.

Attributes

AttributeTypeWhat it holds
url.fullstringThe href of the file.
firstrun.file.extstringThe lower-cased extension that made it a file link. What a breakdown by platform usually groups on.

Every entry also carries the resource its client sends once per batch: session.id, user.id once you have called user(), and the rest of the list on the overview. Anything you pass yourself lands in the same map, and your key wins on a collision.

What it never carries

Whether the download finished, how large the file was, or how long it took. This is a click on a link and does not claim to be anything else.

It is not an install. Nothing here is joined to a later app_install, and no such join exists anywhere in the product: two sources in one project are two separate anonymous id spaces, deliberately. If you want installs, report app_install from the application itself.

Questions it answers

A widget is a filter, a group by, an aggregate, a time bucket and a limit. These are those five parts written out, and every one of them is something you can build yourself.

QuestionThe query
What people downloadName is file_download . group by url.full . count of entries
Which platform they takeName is file_download . group by firstrun.file.ext . count of entries
Downloads over timeName is file_download . count of entries . bucket by day
Downloads from a campaignName is file_download . firstrun.utm.source is set . count of entries

See also