Skip to content

Commit

Permalink
Docs overview added
Browse files Browse the repository at this point in the history
  • Loading branch information
ddxv committed Nov 16, 2023
1 parent a405b63 commit ed05cc9
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: ci


on:
push:
branches:
- master


- main
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- uses: actions/setup-python@v4
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV


- uses: actions/cache@v3
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: pip install mkdocs-material


- run: mkdocs gh-deploy --force
46 changes: 46 additions & 0 deletions docs/about/history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Background on Attribution

Attribution is the process of marking where a user came from for advertising purposes. In digital you might have a link like:

```https://ecommercesite.com/products/productA?referral=MyAdCampaign```

The above link hands off information about where the user came from to the destination. Thus if a person makes a purchase this can be attributed back to the source.

Attribution exists as a problem for mobile developers and advertisers because they do not have the same capabilities as web to use HTTP urls. When a user clicks a URL for the PlayStore that data can contain a referral but this information only goes to Google Play Store itself. Each user downloads the same app as each other. For security, there is no information from that URL inserted into the downloaded package. At this point the information in the URL is lost and thus not usable in the app when it opens for any kind of postback.

### Device identification: IMEI -> IDFA -> Fingerprinting

To get around the lack of HTTP URL data advertisers used identifiers like IMEI and UDID. These IDs presented a very concrete way of identifing devices across any app and presented much more capabilities than what would usually be pased in a URL. To combat this privacy concern the IFA/IDFA and Advertising IDs were introduced around 2012 by Apple and later Google.

These IDs only partially solved all privacy concerns as they still allowed any apps to match users without any explicit concent from the user.

In 2020 Apple decided to completely remove support for IDFA. Apps, still without the ability to use HTTP URLs to link where a user came from resorted to HTTP links.

## Q: So without URLs, how can one app know it's link to another? A: MMPs

MMPs like AppsFlyer, Branch and Adjust help advertisers recreate the HTTP URL by using using device identificaiton to attribute a user from a click to a later app open.

For our example lets say there are two apps: A social media platform and a indie game. The game sets up two campaigns on the social media platform, and wants to see which one converts users best.

In order for the game to know which campaign works best They use an MMP which collects two separate streams of information and performs attribution. Each app will query the operating system to find out that devices ifa and fill it in the link for `{ifa}`.

On the social media platform the click link:

`mmp.com/com.mygame?campaign=MyCampaign&ifa={ifa}`

From within the game when it is opened for the first time:

`mmp.com/com.mygame?event=app_open&ifa={ifa}`

Then the MMP would do lookback to see which click has the same matching IFA.

The problem here is that the MMP to do the matching requires both sets of data and thus has the most access to both the social media app and game's data. In the past this was a small price to pay for what was essentially impossible to do without the MMP.

## Enter Open Attribution

Open Attribution is here to empower a developer to keep ownership of their sensitive business data. Open Attribution gives the tools an MMP uses directly to the app so that they can manage their own advertising data without the need for a 3rd party.

### Open Attribution gives developers their data back

Using open attribution allows a developer to host their own MMP so that their campaign and sensitive data is not shared with another company.

9 changes: 9 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Open Attribution

Open attribution is a project to help developers control their data without resorting to third party control.


## Why do apps NEED attribution?

It's a technical requirement, not a business option. Apps cannot use regular HTTP Urls to connect users, deep links are too limited. Historically MMPs stepped in to help solve this complex problem but by doing so became the arbiters of large amounts of data that some apps may wish to maintain control over. Read more about [this historical overview here](/about/history/).

3 changes: 3 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
site_name: Open Attribution
theme:
name: material

0 comments on commit ed05cc9

Please sign in to comment.