What is a Signal?

A AppTelemetry Signal is the most basic building block in the AppTelemetry ecosystem. Every time an event happens in your app, you can send a signal using the TelemetryManager.send(...) function.

Signals have a type which is the name of the signal such as AppLaunchedViaNotification or SettingsShown, a user which is a String representation of a hashed user identifier, plus a payload dictionary which consists of various metadata, such as operatingSystem, platform, or custom metadata you want to deliver with each signal.

Signals are the raw data that is being interpreted by Insights.

Who is creating AppTelemetry?

Hi, I'm Daniel Jilg and I live in Augsburg, Germany. I've been a Swift developer since day one, and one of my apps was among the first 100 apps ever admitted to the App Store. I also have over 12 years of experience building server based applications.

User Privacy has always been an important value in the projects that I've worked on, and I loooove automatic data analysis. After creating a prototype of AppTelemetry for use on my own apps, I figured, this is a lot of work to do right! Why not offer this to my friends in the developer community? And here we are.

Can I use AppTelemetry for my Website? My Android App? My app for [platform x]?

All AppTelemetry Signals are sent via HTTP POST request, so you can send them from a web page, or any other app for any platform. There is a Swift Client to make things easier, but it is not strictly necessary.

Client packages for Kotlin and Python are planned. If you would like to see other client packages, open an issue or (if you want to be particularly awesome) maybe write one yourself and share it with me and the community? Here's a spec document to get you started.

To view and manage your Insights you currently need the app for iOS or macOS 11. In other words, you as the developer of the app currently need an iOS device or a Mac, but your clients do not.

A web app and/or an android app for managing your insights might follow at some point, but I can't give an ETA on those.

What are Insights and Insight Groups?

An Insight is a configurable way of looking at your signal data. You can think of it as a pre-defined database query with filters and groupings. This query will be run on the set of signals received in the currently visible date range (which is displayed in the top toolbar), and displayed in a customizable way.

Each insight runs its filters, groupings and breakdowns (see below for more on those) on all Signals that were received for the currently selected app in the currently selected date range.

Calculating an Insight's data will yield a number of, for lack of a better word, rows of data, with each line having a title (either a string of a date) and a result (either a string or a number).

See the Insights Reference for more in-detail information about Insights.

How does the Beta Period Work?

The beta period will work in three phases:

  1. In Phase 1, interested developers need to submit their email address to request a beta invite and will be manually approved. This allows me to control the number of people using the service while I'm still tuning the server performance. Everyone who applies (except, say, Parler) will eventually get a beta invite though, usually a few hours to a day after requesting it.

  2. Phase 2 will be an open beta, sometime in the spring of 2021. In this phase, everyone who is interested is free to register and try out AppTelemetry for free of charge, regardless of the amount of Signals they send. This will make sure I find all remaining issues and kinks in the system, and ensure things run smoothly.

  3. Phase 3 is the public launch, which I expect to be around mid- to late-2021. Way ahead of the launch, existing beta developers will be notified of the payment plans and if they fall within the bounds of the very generous plans for grandfathered-in early users.

I'll do my very best to ensure users are migrated smoothly between the phases, and to communicate clearly what will happen ahead of time, so you won't be surprised by any changes.

How will AppTelemetry be Priced?

While in Beta, AppTelemetry is completely free of charge. In return, I'm hoping for many comments, feedback and discussion in the Slack that will shape the service's future.

Once the service is launched publicly, there will be usage tiers based on the number of Signals received by AppTelemetry. Among these will be a free tier to try out AppTelemetry and for small businesses, a tier for medium-sized apps, and a tier for large-scale apps. Paid plans can be paid monthly or yearly.

There will also be a special tier for organisations that joined AppTelemetry during the beta period. This is a free tier, not publicly available, that grants a lot more free signals.

If the number of received Signals exceeds your organization's plan, you will be notified. No Signals will be lost. I'll try to make this as fair-use as possible with this rule: If you exceed the signals per month twice in a row, you'll be upgraded to a higher plan.

What Licenses are Applicable to my Code?

AppTelemetry has three parts: The server, the viewer app, and the client code which is included in your app.

The client code included in your app is licensed under a modified MIT License with a removed attribution clause. This means you can use it in any project without restriction, and you do not have to attribute it.

Server and Viewer App are currently not Open Source. Parts of them might be open sourced at some point in the future.

If you would like a custom license to view or modify AppTelemetry's code, for you self-hosted solution or to change how aspects work, or to make sure there are no shenanigans going on, I'm open to talks, just hit me up <3