How AppSpot Works
AppSpot is an extremely flexible ad-serving platform, enabling you to maximize the value of your inventory with ads from direct advertisers and one or more ad networks. You start by defining Ad Spaces within your various Applications – Ad Spaces are simply “windows” of specific sizes (e.g. 320x50 pixel banners, full-screen interstitials, or custom sizes) placed at defined locations in your apps. You can setup as many or as few ad spaces as you wish for your applications. The actual ad creatives that run in these ad spaces are defined via Advertiser Campaigns and/or Network Campaigns.
In AppSpot’s simplest configuration, you can setup an ad space, integrate the Ad Space code into your app, and immediately start receiving ads via the Flurry AppCircle network. AppCircle will fill your ad space with App Promotion, Re-engagement and Video Clips ads, on rewarded on non-rewarded basis.
When you’re ready to move beyond AppCircle, you can configure campaigns on the Flurry Developer Portal to show ads from Direct Advertisers and other mediated ad networks, like AdMob, iAd, Millennial Media, inMobi, Greystripe and Mobclix. You’ll need to have an active publisher account with these networks and integrate their SDK’s into your app, after which all configuration can be done server-side on the Flurry developer portal by creating Network Campaigns.
Advertiser (Direct) Campaigns are linked with one or more Creatives (e.g. an image or rich media ad to be shown to the user) and various targeting options. For example, you could create a campaign that targets certain types of users & devices (male, aged 25-34, living in the US, using an iPhone 4). You also specify which of your ad space(s) this campaign should run in. This setup gives you the flexibility to target different ads to different users in different sections of your apps.
Each Campaign also has a Priority level, ranging from 1 (highest priority) to 20 (lowest). Priority levels allow you to manage several campaigns targeting a single ad space. You can specify your high-CPM, direct-sold Advertiser campaigns as a higher priority, and your Network campaigns (e.g. AppCircle or AdMob) as lower priorities. This setup enables you to maximize the revenue you make from your various sources of demand.
When a user opens your app and an ad is to be shown, an ad request is sent to Flurry’s servers with information about the ad space (the application and the dimensions), the user (their location, user segment and Flurry ID, for example) and the device (the handset model, operating system and language setting). The AppSpot ad selection logic then looks through the various campaigns that are eligible for that ad space to find the most suitable ad. AppSpot checks for high priority campaigns that are eligible to serve, and if one is not found, it works its way down through the 20 priority levels until a matching campaign is found. The selection process, which takes just a few milliseconds, enables maximum revenue and fill rates for your inventory, even as the various ad campaigns and networks fluctuate in the amount of fill they can provide.
What’s changed from the previous version of AppCircle?
This section is for publishers with older Flurry AppCircle hook integrations. New Flurry publishers should skip to Getting Started With AppSpot. Flurry publishers with older Flurry AppCircle hook integrations will find changes in the developer portal interface and SDK. The changes are listed below:
|View Revenue Reporting||
|Set Ad Filtering||
|Create New Hook (Ad Space)||
|Call Flurry Analytics methods||
|Call Flurry Ads methods||
|Show an Ad||
Getting Started with AppSpot
First, log into the developer portal at http://dev.flurry.com and navigate to the Publishers tab (if this isn’t visible to you, contact your Account Manager). Along the left, you’ll see a navigation bar, which you’ll use to access Inventory setup, Ad Setup and Reporting. As a first time user, you’ll be prompted to accept the AppSpot Terms of Service, which you can also view on Flurry.com. For an overview of setting up your first ad space, you can also watch our video: Setting Up AppSpot.
Inventory consists of Applications and Ad Spaces, accessed under the Inventory tab. If you’ve used Flurry Analytics or AppCircle in the past, you should see your Applications already setup. You can add more Applications by clicking the New Application button on the top right.
Now you can define Ad Spaces within each application. Navigate to the Ad Spaces tab on the left-hand nav. Here, you’ll see an index of previously created Ad Spaces. Click on the New Ad Space button on the top right to setup a new Ad Space. The Ad Space setup screen has 3 modules. The Basic Setup section includes fields required to define the name, application, dimensions, placement and orientation of the ad space. Further customized controls of ad unit behavior can be added via delegate definition in the client.
By default, you will receive yield-optimized ads from Flurry’s AppCircle network. The AppCircle Network and Advanced Options modules contain all of your customizable set up logic for participating as a publisher. You can edit look and feel options here, or use Flurry’s defaults. You can display ads without further definition within this module. For more information, see the Configuring AppCircle section.
From here, you can click Save, and you’ll be given an Invocation Code to use in your app. Copy and paste this exact code into the area of your app where you plan to show this ad. Repeat this process for all the ad spaces that you want to set up. Learn more about how to integrate your code here. Your code will not change, regardless of how many further changes or edits you make to your Ad Space on the Flurry developer portal. At this point you’re ready to start showing ads.
Configuring AppCircle & Rewards
Use this section to edit the look and feel of AppCircle ads, as well as designate the ad space as rewarded or non-rewarded.
You have three options available for showing rewarded and non-rewarded ads. If you have a reward system such as currency or virtual goods to give to users, we recommend you choose to enable rewards with “Let Flurry Decide”. This option allows Flurry to show the highest value ad based on AppCircle’s yield optimizer. If you always want to show rewarded ads, select “Rewarded.” If you don’t have a currency, choose “Standard”.
If you choose “Rewarded,” or “Let Flurry Decide”, you will be prompted to set up and define your rewards. These can be configured in the Rewards section of the Manage tab on the left-hand nav.
If you plan to use a rewarded integration with your Flurry ads, you will need to designate the Ad Space type in which you'd like display rewarded ad units, as well as define what rewards you plan to give to the user.
Select Your Ad Mix
Flurry provides several options for developers who choose to host rewarded promotions within their app. Rewarded inventory can be served into both banner and interstitial-sized Ad Spaces. Flurry provides rewarded solutions for two ad types: With Clips video ads, users are offered a reward for watching a video (available for both iOS and Android). Users are rewarded after the video view is complete. Users can also view a further promotion, either a link to a mobile web site, or a download opportunity for the app that has been advertised. Neither of these actions is rewarded. On the Android platform only, users can also be rewarded for downloading and launching a new app.
Both of these promotions can be hosted in a range of ad units, however, one of most popular integrations is in the storefront area of an app. In a storefront, users can generally purchase goods, get virtual currency, and see opportunities to take actions in order to earn free currency or goods. In a storefront, the most effective ad unit is the Catalog View. This web view ad unit lists a number of ads that a user can interact with in order to earn rewards. Typically, developers will create a button within their app, e.g. "Click here for free points," which launches the Catalog view. If you have selected "Rewarded" as the ad mix you'd like integrate, and you have designated your Ad Space placement to be "Full Screen," you will have the option to display a full screen takeover interstitial ad unit, which displays a single promotion, or a Catalog View.
Define Your Rewards
If you’ve selected the AppCircle ad mix within your Ad Space to be “Rewarded,” or “Let Flurry Decide”, you will be prompted to define the rewards a user will receive for engaging with a Flurry promotion. To define your rewards, go to the Manage tab on the left nav, and click Rewarded Options. YOU MUST DEFINE YOUR REWARDED OPTIONS IN ORDER TO SERVE REWARDED ADS. In the Rewarded Options tab you will see a table that lists projects for which you can define rewards. Click “Create Reward” in the right-side column. For developers who already have callbacks set up for rewards with older integrations, your details will be listed on this page. You cannot, however, edit these settings. To access this new functionality drop in a new Ad Space, download the latest SDK, and create your rewards.
You will see a new page for the project you have selected. The first field to complete is the reward name. This is the name of the virtual good or currency that you will give to your user for engaging with a Flurry promotion. The name will display in the Ad Space. The reward name limit is 13 characters, not including the quantity. Next, you can select a square icon as a visual example of the reward or currency to upload. This choice is optional, but Flurry highly suggests you include an image in order to boost conversion rate. This image will appear within the ad unit along with the reward type and quantity.
You will next define the quantity/conversion rate of your reward or currency. Add the amount you’d like to credit the user for every $1 you receive from Flurry. When a user sees a rewarded ad, they will see how much currency or reward that they will receive for converting on the presented ad.
The final step to define your rewards is to paste your callback URL into the bottom field. The callback URL is the notification Flurry sends to your servers with information to credit a user for converting on a rewarded ad. When you add your callback URL be sure to format the string with key parameters for awarding your users.
Callback URL Example:
Matching Rewards to Users
After getting a rewarded callback from Flurry, you will need to match it back up to whichever user triggered the callback. The best way to do that is to use the [FlurryAds setUserCookies] method in the Flurry SDK. In that method, you will enter a dictionary of key value pairs which can be used to identify your user's account with you. For example you can pair user_id with the value 1234 in the UserCookies. When Flurry makes a callback to your rewarded server, it will automatically append any user cookies that you had set using the SDK. In this case, it will append user_id=1234 to your callback URL.
Callback URL Security
Flurry will add the following parameters to the end of the callback URL automatically:
- fguid - a unique identifier for the action to be rewarded
- rewardquantity - an integer number denoting the number of reward units to be granted to the user
- fhash - an md5 hash which can be used to verify that the callback really came from Flurry and that the reward quantity is correct.
The fhash value is the following:
md5( fguid:rewardquantity:secretkey )
Here is an example using realistic looking input:
The URL that the Flurry service will hit in this example would be:
We recommend that you verify that the fhash value equals:
md5( f2dcd862-f2c7-4e61-beb3-a7e8641bc944:10:865B906F71E61D1C6FAF280A5F06C9037A9AC24D )
which, in this case equals:
Doing so ensures that the callback really came from Flurry because only we and you know your secret key.
Because Flurry wants to ensure that your users get their rewards there is a possibility that you could get the same callback URL twice for the same rewarded action. Therefore we also recommend that you store the fguid on your end and ensure that you only give your users one reward for each unique fguid value that you receive from our callback service.
You can see your application's secret key by going to the Publishers tab -> Manage -> Rewarded Options page in the Flurry Developer Portal. Or simply click on this URL: https://dev.flurry.com/rewards.do
Note that there is a different secret key for each of your applications!
Advanced Options allow you to create AppCircle ad filters and set some serving logic options for your Ad Spaces.
Filter the AppCircle ads in this Ad Spaced by Ad ID, App Name, and Advertiser Name.
The Ad Refresh rate allows you to specify how often an ad rotates through Flurry's available ads. This is most useful with banner size ads that persist on a view, and therefore warrant semi-frequent refreshes.
Pre-caching of ads is a recommended option for app experiences with interstitial ads rendered between pages, game levels, or other content areas. Pre-caching ensures that the ad is pre-loaded before the ad request, and therefore has a lower latency. For rewarded inventory, such as the catalog view, this option is not recommended, as users will be returning to the experience to fetch new ads to earn more rewards.
Setting up Network Mediation
When you’re ready to move beyond AppCircle, you can configure campaigns on the Flurry Developer Portal to show ads from other mediated ad networks, like AdMob, iAd, Millennial Media, inMobi, Greystripe and Mobclix. You’ll need to have an active publisher account with these networks and integrate their SDK’s into your app. For instructions on integrating the Network SDK’s, please refer to the Technical Integration document, included with the Flurry Publisher SDK.
Once you’ve integrated the network SDK’s, you can configure Network Campaigns on the server-side on the Flurry developer portal. Please refer to the Campaigns section of this document for more details.
You can also mediate to networks currently not supported by Flurry. In order to do this, you’ll need to write a custom adapter to the Flurry AppSpot SDK, instructions for which are provided in the documentation accompanying the SDK. For more details, please contact our support team.
Setting up Advertisers & Creatives
Advertiser Campaigns allow you to run ads on behalf of advertisers you’ve directly negotiated with. You can also use this functionality to run your own cross-promotional campaigns. Each Campaign is associated with an Advertiser. A Campaign can have one or more Creatives associated with it, with each Creative also associated with an Advertiser.
You need to setup an Advertiser before creating a Campaign on their behalf. To do this, navigate to the Advertisers tab on the left-hand nav, click on New Advertiser, and simply type in the name of the Advertiser.
To setup a Creative associated with a campaign, navigate to Creatives on the left-hand nav, and click on New Creative. Here, you can setup creatives of various types:
- Image (uploaded image assets, such as .jpg)
- HTML (including redirects to external ad servers)
- App Store (ads constructed with assets pulled from an app’s App Store page)
Campaigns & Targeting
Now, you’re ready to setup a Campaign. AppSpot supports two types of campaigns: Advertiser and Network. Each campaign type has different options for specifying the Goal (budget or percent-based), Price (CPM or CPC), Frequency Cap, Pacing, Start Time and End Time. In addition, each campaign has a Priority setting, which determines the rank order in which the campaign is selected when an ad impression is requested.
Advertiser campaigns are used for deals sold directly to advertisers, or your own cross-promotional house ads. Depending upon the value of these ads to you and the delivery commitments made to the advertisers, the campaign could be set at a high, medium or low priority, specified from 1-20. The delivery goal for these campaigns can be specified in the form of a budget (e.g. $10,000 at $5.00 CPM) or a fixed percentage of targeted impressions for a sponsorship deal. You can also specify a frequency cap per user.
Once you’ve satisfied your high priority/guaranteed campaign commitments to your advertisers, you can sell any remaining impressions to various ad networks. Network campaigns can be configured in multiple ways to maximize your revenue from multiple ad networks. Single Network campaigns let you allocate a fixed percentage of inventory to a network. Network Rotation campaigns let you specify a group of ad networks to mediate your ad inventory to within a single campaign. Finally, Network Waterfall campaigns let you specify an ordered sequence of networks to call for each ad impression, also in a single campaign. You’ll need to integrate the SDK’s for the various ad networks you work with, and upgrade to the latest Flurry SDK (v4.2 on iOS and v3.2 on Android) for the Waterfall feature.
Setting up a Single Ad Network
Simply create a new Network campaign, specify the Priority level (e.g. 8), the percentage Goal for how much inventory should be eligible for the network (e.g. 10%), and the name of the network under Network 1 in the waterfall section (be sure to have integrated the network SDK). Use the Targeting section to limit what users are eligible for this network, and the Inventory section to specify which Applications & Ad Spaces this network will run on. AppSpot will then allocate the specified percentage of matching impressions to this ad network (e.g. if a campaign has a 10% goal, then there is a 10% chance that the campaign will get selected when AppSpot checks that priority level, and a 90% chance that it will be skipped). If the network fails to return ad, the next priority level of campaigns will be used.
Setting up Network Rotation
Create a new Network campaign, specify the Priority level (e.g. 10), and the percentage Goal for how much inventory should be eligible for the network rotation (e.g. 100%). Then, specify the various networks that AppSpot should call. Be sure to use a lower priority level (numerically higher) than any single-network campaigns. By filling in the (average) CPM values for each network, you can get approximate CPM and revenue reporting for various networks and ad spaces based on the number of impressions delivered by each network (the numbers are used for reporting purposes only).
When an ad is requested, Flurry will rotate through these networks to find an ad. If the first network does not fill the request, the selection logic moves to the 2nd network, and so on, until the ad request is filled. If all networks fail to deliver an ad, nothing is served, and the next priority level of campaigns is used. When AppSpot receives a second ad request from the same device, it starts calling ad networks where it last left off.
Setting up Network Waterfall
Create a new Network campaign, specify the Priority level (e.g. 10), and the percentage Goal for how much inventory should be eligible for the network waterfall (e.g. 100%). Then, specify the sequence in which AppSpot should call various networks, generally in descending order of CPM. Be sure to use a lower priority level (numerically higher) than any single-network campaigns. You’ll also need to update to the latest Flurry SDK to use the Waterfall feature.
When an ad is requested, Flurry will successively check each of these networks to find an ad. If the first network does not fill the request, the selection logic moves to the 2nd network, and so on, until the ad request is filled. The process is repeated, starting with Network 1, for each new ad request from the same device. This is the only difference from Network Rotation, and requires the use of the newest Flurry SDK (v4.2 on iOS and v3.2 on Android).
Setting up Multiple Network Rotations / Waterfalls You can create different rotation or waterfall sequences for different types of users, e.g. users in the UK vs. users in the US, or users on iOS devices vs. Android. Simply create multiple campaigns and use the Targeting section to define which users are eligible for any specific campaign.
You can use different Targeting parameters to specify the subset of your users that should see the campaign. These include Geography, Flurry Analytics Segments, Demographics (age, gender & Persona), Device & OS, Keywords and more. Many of these targeting options are specific to Flurry, based on our analytics data and the inference models we’ve built.
Demographic targeting (age, gender & Persona) is based on data from Flurry Analytics. Flurry has confident estimates on a fraction of users, which means that targeting by age or gender will constrain the amount of impressions that match the campaign.
The Inventory section of the Campaign lets you specify one or more ad spaces in which you want the campaign to run. You can run a campaign in one or more ad spaces of different sizes, across multiple applications and platforms.
The Creatives section lets you select previously defined creatives (associated with the same Advertiser as the campaign) and associate them with the campaign. Make sure that the creatives have the same or smaller size as the inventory associated with the campaign.
Reporting & Analytics
AppSpot lets you analyze the performance of all your ad campaigns in a single view. You can view common performance metrics by Ad Space, Application, Advertiser, Campaign or Creative. Certain Flurry Estimates, such as age, gender and geography can be viewed by both impressions and clicks, allowing you to analyze not only which users are seeing you campaigns, but also which ones are clicking on ads.
You can compare the performance of your Direct and Network campaigns over time, and also view Flurry Estimates of the audience demographics for each of those campaigns.