Video hosted by Apple at devstreaming-cdn.apple.com

Configure player

Close

WWDC Index does not host video files

If you have access to video files, you can configure a URL pattern to be used in a video player.

URL pattern

preview

Use any of these variables in your URL pattern, the pattern is stored in your browsers' local storage.

$id
ID of session: wwdc2012-603
$eventId
ID of event: wwdc2012
$eventContentId
ID of session without event part: 603
$eventShortId
Shortened ID of event: wwdc12
$year
Year of session: 2012
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: [2012] [Session 603] Tools, Serv...

WWDC12 • Session 603

Tools, Services, and APIs for iTunes Affiliate Program Marketing

Safari and Web • iOS, OS X • 44:34

The iTunes affiliate program offers a number of powerful tools which you can use to add rich media and promotional links within your app or on the web. Start with an overview of the iTunes affiliate program and see how simple it is to get started linking to iTunes content. Dive deeper and learn how to use the advanced APIs and Services like Search, EPF, LinkMaker, and Web iMix to quickly and easily link to relevant content from the iTunes store.

Speakers: Ted Hosmann, Mark Miller

Unlisted on Apple Developer site

Downloads from Apple

HD Video (412.8 MB)

Transcript

This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.

My name is Mark Miller, and we're going to be talking today about the iTunes and App Store Affiliate Program. Before we get started with the tools and services we provide to make this possible, I wanted to go over a quick overview of what the affiliate program is, what it can do for you, and kind of the basics just to make sure that everybody's on the same page.

So what is the affiliate program? Well, basically, it's a matter of affiliates referring users to the stores. The users are exposed to great content and other things they can download and preview and obtain that they might not be otherwise familiar with. And in return, the affiliate earns a commission for each of the purchases made after the referral.

So what can it do for you? Why are we here? You can use it to promote your own apps and other content. So if you've got books or music or whatever, you can use it that way. You can also promote other things that you don't create. So any content on the store is really up for grabs.

And of course you can use it to earn money for referrals. And in some cases this money can be a very important revenue stream and you can base an entire business around it. You can also use it to track the effectiveness of your marketing. So trying to figure out what people are clicking on and where they're going, you can do that. And the program works perfectly well both on your website and in your apps.

So there's a couple of common use cases that I might go over. The first one is to drive customers to your apps and other content. So if you've got a promotional website for a new app that you just released, go ahead and make the links from that promotional website into the store affiliated.

You can also point users to similar or complementary content. So if you've got a gaming app that has a soundtrack or something, you can point to that soundtrack on the store. You can also, if maybe your app has a productivity app that it integrates well with, you can refer users to that and earn a commission on those purchases. Most of all, you're trying to get users to the content that they want so that they can get it and make them happy. And again, this works on the web and in your apps.

A quick cast of characters for what's going on with all this. First of all, there's the iTunes app store, iBook store, Mac app store. For our purposes, that's pretty much one entity. There's also, down at the other side, the affiliate publishers, and that would be you, hopefully, at the conclusion of this session. The affiliate networks are the ones that are mediating that relationship. These networks provide geo-specific services, payments, reporting, all that sort of things that we are not set up to do. And finally, of course, there's the customers, your customers and ours.

Now these affiliate networks, they vary depending on which region you're operating in. The networks provide all the services I mentioned before, and it's important to use the right ones for the right location. So in North America, in the US, Canada, and recently Mexico, we partner with LinkShare, and we also use a LinkShare subsidiary in Japan.

In Europe and South America, we use Trade Doubler. And again, the terms and kind of some of the details about the programs will vary according to the network. So I mentioned earlier there's a kind of a window of commissionable sales. And also the percentage of the commission might change from network to network. But in general, it's about three days for the window and the commission is four or five percent. So finally, in Australia and New Zealand, we've got DGM.

So how does it work? Well, it's all about links, putting links in front of users so that they can click on them and get into the store. So here's an example link. Pretty simple URL that will take a user into the store. To affiliate this, we just need to put some information onto the URL.

From a customer perspective, clicking on an affiliate link is exactly like clicking on any other link. They'll be on a page, they find a link they like, they click it, and they get taken to the appropriate content in the iTunes store. Now, this works the same way on iOS devices as the desktop.

Under the hood, there's a little more going on. So in this example, we've got Mobile Safari on the upper left. This could also represent a desktop browser or one of your apps. To the right of that is an iTunes client, which could be App Store, Music Store, Book Store, Mac App Store, et cetera. Then we've got the affiliate networks, and on the far right, the iTunes servers.

So it starts by a user clicking an affiliated link and that request goes to the affiliate networks. They're going to record that click for reporting purposes and send a redirect back to the browser. The browser is going to launch iTunes, which makes a similar affiliated request directly to the iTunes stores, which will respond with a cookie and a redirect. So that cookie is going to live on iTunes for the commission window and any purchases that are made within that window will be commissioned.

Then the user browses around and perhaps eventually buys a product, downloads it, everything's great, they're happy. After everything's settled, iTunes will report the sale to the affiliate networks who will eventually write you a check for the commission. I mentioned we have to add some important affiliate information to the URLs. We'll take that example URL from before. We have to add a partner ID query parameter. The partner ID identifies the affiliate network. There's also an affiliate token which identifies you to the affiliate network. That's sort of your user ID within LinkShare, Tread Doubler, or DGM.

So for LinkShare, the partner ID value is 30, and the affiliate token name is site ID. And here in this example, we've got ABCDEFG. That's the token assigned to you by the LinkShare network. For Trade Doubler, the Partner ID value is 2003 and the affiliate token name is TDUID. And for DGM, the partner ID is 1002 and the affiliate token name is Aftoken. It's important to get these right and make sure you've got the case of these query parameters correct.

When a lot of people get started with the program, they make a few common mistakes that I want to go over really quickly. When you're attaching your query parameters, make sure you're using the right delimiter. If the url does not already have a query string, you need to make sure that you're attaching the new values using a question mark. Similarly, if there's already a question mark on the url, don't use another one, because then the url won't parse and nothing will work. So instead, check for the presence of the question mark and do the right thing.

Another common mistake that's a little more complex is making sure that you're presenting the right link to users so that you can actually earn a commission. For example, if you have a French user who has an account in the French storefront, they need to see a trade doubler link in order for that to be credited to you. If you give them a link share URL, the sale won't be reported. So it's important to geo-target your users and create your links correctly.

Another one that commonly happens but is worth calling out is not testing. Just make sure that the links that you create actually work and take your users to the content that you're trying to promote. And if you're rolling out a new feature where you're generating a lot of links automatically, try clicking on one of those links and then making a small purchase just to verify that the sale is reported.

So that's the overview. Fortunately, we've got a lot of great tools to help you create these URLs, and I'd like to go into those now. So starting from the very basics, if you're just getting started with the affiliate program, you might just want to create a few links to add to your website and promote your app.

We've got some great tools to do that automatically. They're kind of focused at the end user. We also provide RSS feeds so that you can be aware of what's popular, new, featured on the stores and Promote it to your users with the knowledge that it's probably interesting to them.

If you have a better idea specifically about what you're interested in, we provide a web API so that you can search and look up by ID a bunch of metadata about store content. And as you get even further up the chain, you might need to... Do a bunch of offline processing for a large amount of data. And for that, we have a bulk data feed called Enterprise Partner Feeds, or EPF. And finally, we have a service that allows you to dynamically create playlists that you can customize specifically to a user, which can be really powerful if you use it correctly.

So let's get started with the simple stuff. First off is LinkMaker. LinkMaker is the simplest possible way to create links to content on the store. You go to LinkMaker, type in a search term, you'll get results back. It's pretty easy. If you click through to LinkMaker from an affiliate network, the nice thing about doing it that way is that all of the information about your account will be carried through automatically so that the links that are generated will be already populated with the affiliate data. And you don't need to worry about question marks and ampersands and all the rest. If you don't do it that way, it's available at iTunes.Apple.com slash LinkMaker. And if you go that route, you have to set up the URLs manually.

So here with link maker I've done a search for Bob Dylan and I've got some search results back, so I'm going to click on the one that I'm looking for. And I'll get a nice sheet overlay that has some pre-formatted HTML that I can just drop right into my website via my HTML editor. If I don't like the text link style, I can also select for a badged icon type look, and the icons come in two sizes; there's large and small. So you can choose whatever is appropriate for your website and do it that way.

We also provided, this is a recent addition, we provide some pre-canned widgets that you can drop onto your website. And these are really great to get started quickly. The widgets are available at widgets.iTunes.apple.com. and it's a really easy interface. You can choose from a drop down of available widgets, customize them, and generate some HTML that you can drop onto your website.

Some of the examples, you can do a search box. So put the search box on your site. Here the user is searching for Toy Story. You can also define a pre-canned playlist of content that's interesting to you. If you are just trying to promote a single app, you can create a picture frame for that app.

And finally, you can also do a collection of books. So if you're doing a summer reading list, perhaps, or something along those lines, you can drop those in. There's a lot of other options as well. Let's say we want to go more along the customization route. For that, we can use RSS. RSS is a really simple syndication originally.

And it's a feed of dynamic, constantly updating content. And it's available on your site and in your app. And there's a lot of feeds available for the most popular content, stuff that's been recently added, featured on the store. All these are available. And we have what's called the RSS generator available to create these links to the feeds. Let's take a look at some example usages, just because we can modify the URLs to the feeds and get different options back.

So for music, the URL might look like this. You can have the top albums feed in the US. Pretty simple there. You might also want to try the top songs feed. These are logically separate data. For apps, for example, we have the top paid applications feed, but we also have a top free applications feed and the top grossing applications feed. All these are available through RSS generator.

We also have a large amount of other media types covered, so podcasts, movies, books, TV shows, music video, all there. Again, it's all on the generator. RSS generator is available at iTunes.apple.com/rss. So some of the basic options, you can specify the country and the feed that you're interested in. So here I've specified that I want France based on the FR country code and top albums.

But maybe I'm interested in something more specific. I might want the top blues albums in the French storefront. And there we just provide a genre ID, which is two. We put that into the URL and we get something more specific that way. I can also say, well, maybe the default list of 25 top blues albums isn't really what I want. I want more. I want more depth. For that, you can introduce a limit into the URL, and you'll get back the top 200 albums.

There's even more advanced possibilities. The standard feed format is Atom, which is kind of the de facto standard for RSS. And that's specified by having that XML at the end of the URL. But you can also change it to get JSON output. JSON is JavaScript Object Notation. And using this output, you can pull RSS data from JavaScript on a web page very easily. It's very easy to parse. JSON is a pretty common format. It's similar to PList, but I can't go over it today. I do recommend JSON.org, though. They've got a great specification and a number of software libraries used to parse and generate JSON.

You might also be familiar with JSONP. If you're doing web programming and you need to pull a service from a different domain, JSONP stands for JSON Prefixed or Padded. It's essentially a way to work around the cross-site origin limits of a browser. So we support a callback parameter such as this, and the JSON that we generate is actually a function invocation that will call into your library.

Recently, we also added an RSS feed to track customer reviews for your apps. And this is a URL that looks like this. The tag name is customer reviews, and you plug in the ID of the content that you're interested in. And again, as you'd expect, JSON output is also available. And it's paginated because a number of apps have many thousands of reviews going back in time. So we support pagination so you can pull it in very easily.

Your newsreader may not support this pagination natively, so you might need to write a script to pull in the full list of information. But you can go into your iTunes Connect account and find links to the customer reviews tracking in there. It's a great way to stay on top if you just released a new version and you want to know what people are saying about it. It'll show up in your newsreader. Quite useful. So for that, for a demo of what you can do with Atom, I'm going to cut over to Ted Hosmann, who's going to show us how we can integrate an Atom feed into a website. Thank you, Mark.

Here I've got just a simple website that I've been developing. It's a music blog site that I'm working on, and you can see here that it's pretty basic, pretty plain. As Mark had mentioned, we've got widgets that you can embed in your website, and I've gone ahead and I've already done that with my first posting. The widgets are nice, they look good, and they've got this great feature where I can actually play a preview of the song directly in the widget.

This is our 30 second previews. And this is all done automatically for you. There's not really much that goes into making a widget. So, what I'm going to do is I'm actually -- I want more control over what I'm going to present in my next blog posting. I want to use the RSS feed so that I can have something that updates regularly. The widgets are nice, but the album art is a little small. I want a little bit bigger album art.

And I also want to show just a listing of the songs that are on the albums. So, to do that, I've gone ahead and built out -- here's my HTML for my blog. Let me first just bring up -- instead of this, I'm going to bring up my RSS code snippet that I've written. And this is a JavaScript code snippet. At the top you can see the very first line. I've defined the feed. I want to use -- right here I'm using the top albums. I want the genre 20, which is the alternative rock albums that are on the store.

And I'm using JSON. I've also included some of the information from my affiliate account so that all of these links automatically get populated with my affiliate tracking information. And then I've got JSON -- or JavaScript library that will go ahead and parse this for me. So, what I'm going to do is I'm just going to copy this and paste it right into my blog posting. As we scroll down, you'll see that here's my most recent blog posting. I'm just going to paste it right here.

And save it. And when we go back, let's refresh my blog. You'll see that here I've now got the top three albums from the alternative rock genre. As I hover over, I'm showing the first five songs from each album. And when I click on any of the albums, It will launch me into the iTunes preview page and iTunes will open up to that piece of content. And then just real quick, if I can go back.

They took away my back ability. Okay. So if I go back to my snippet that I did, let's say I don't want alternative, but I want the actual rock genre. Let's go ahead and save that. Refresh here. And automatically, it's been updated to our rock genre. So that's some of the things you can do with the RSS feeds. And this will update as the store charts update.

Back to you, Mark. So that was RSS. It's popular content coming in. But we might -- our users might have something specific in mind when they come to our app or site. And maybe we want to show something, allow them to search for content or look it up by their ID. For that, we have the Search and Lookup APIs.

So this is a metadata lookup available on the web. It's live, always up to date. The responses come back as JSON, just like in the RSS format. Sorry. Just like the feeds provide JSON, these responses are also in JSON. The two main actions available are search. This is pretty much as you'd expect. You put in a term, you get back results appropriate for that search term. You can also do a lookup if you already know the ID of a particular piece of content, which sounds kind of mundane, but you can actually do some pretty powerful stuff with it.

So a data example of this is kind of what you'll get back if you do a search. There's quite a bit of information here. There's URLs to some icons appropriate for this. This is a TV episode, so it's got a description of what's going on, what the TV season name is, what the price is, a lot of data there.

So when you do a search, the simplest possible thing to do is create a URL and add a term to it, and that's your search term. But there's a number of other modifiers you can do when you're creating that URL that will change the results that you get back.

The first two are pretty simple. It's country and language. Not all content is available throughout the world, so it's important to specify the right country for your users when you're doing a search or a lookup. And the language will also define how things are formatted when they come back. So if we have metadata available in a particular language, we'll use that one.

Media allows you to sort of narrow the scope of your search. So this allows you to define if you're looking for books versus apps or music versus music videos or whatever. If you want to get even more specific for within a media type, you can specify entity. And the entity will allow you to distinguish between, say, an album versus a song or a TV episode versus a season, that sort of thing. The attribute query parameter allows you to target your search term to a particular field of the content. So rather than searching for everything, you can search specifically for an album title or a TV episode title.

The limit parameter, again, as an RSS, allows you to change the default number of results that come back. And finally, to support that JSONP for cross-site script calls, we have a callback. So a callback specifies a function that is called in your JavaScript library. All these results come back as JSON dictionaries and they're sorted by relevancy. So we try and come back with the best results appropriate for your search.

The Lookup API, as I said before, it takes basically an iTunes ID. That's the most common case. So if you know the ID of the store content, put that in, you'll get back the most recent up-to-date metadata for it. You can also use other identifiers such as UPC or EAN. That's European Article Number. They're very similar values. If you have an ISBN for a book, you can use that or a bundle ID for an app either on the Mac App Store or iOS App Store.

Now the query parameters for Lookup are very similar to the ones for the search requests, but there's two important difference. One important difference. Entity allows you to kind of navigate the content tree. So if you have a TV show store ID and you want to know the particular episodes within that season, you can pass in entity equals episode and get back results for that. Sort, in this case, can change the default order of the results. By default, content is sorted by popularity, but you can also change it so that it's sorted by recentness. So if you want the most recent episodes, you can use a sort equals recent there.

To take us through some of how this works with some examples and update our blog a little bit more, we'll go back to Ted. Thanks. Thank you, Mark. First off, I'm just going to go through some of the information that you'll get back from using our search and our lookup APIs. Right here, I'm doing a lookup in Safari. We'll use Safari just so you can see what the data is that's presented back to you.

Obviously, you'll want to bake this into your system. But real quick, I'm just going to do a lookup, and I'm going to use the bundle ID just to get a sense of what we've got here. So I'm going to look up bundleid.com.apple.pages, and this will pull up information relating to the Pages app that Apple's built. As I scroll through some of this stuff, you'll see that the artist here is Apple. You can also see that the... The genres are included. The screenshots for iPad are included. The languages that are available for the app.

Importantly, the price is there. Other screenshots that we have. And then all the supported devices. So this is all information that might be relevant to what you're looking for when you look up a specific piece of content. I'm going to switch it up a little bit because my website is about music and not about apps. I'm going to say... I'm looking for... I'm going to make a search or a lookup that takes a broad amount of information. We're going to narrow it down. Right now, I know that the ID for Madonna happens to be 20,044.

And what we get back here is just the meta information about Madonna the artist. So Madonna is a pop artist. But I want to know more. I want to know more information about Madonna and the songs. Specifically, maybe the albums that she has on our store. I'm going to add some parameters. Entity equals album.

And now we'll see we've got 45 results. Again, the metadata for Madonna, the artist, is right there at the top. And then the rest of the information is specific to Madonna's albums. 45 is a bit much. I only want five albums, so I can put in that limit that Mark had talked about, limit equals five. The list right here is sorted by popularity, and maybe I'm not looking for the most popular albums. She had some very popular albums in the '90s, and I want the most recent albums, so I'm going to sort all of this. So sort equals recent.

And what this will give us is just six results. And what you'll see is there are, again, just the Madonna metadata at the top and then five albums, the most recent albums on the store for Madonna. So that's the lookup API. If you know something about what you're looking for, you can get to the meta information about that pretty quickly with the lookup API.

In my case, I've got a website and I want my users to search for something, and so I don't know what exactly they're looking for, so I'm going to use the search API. Search, and I'm going to have a term that the users are going to put in there. So let's say in this case they search for the term Madonna.

I'm going to get back 50 results. That's the default. And all of the results here are mixed and matched. You can see right here I've got an audio book about Madonna. That's not necessarily what I'm looking for in my website. It's about music, not about books. She is an author, and she's also a movie star. So let's narrow this down a little bit more. I want entity equals album again.

And now we're going to narrow it down to just albums by Madonna. You can see that the wrapper type here is a collection, so that is an album. Actually, we have collection type as album. All the information about that album is here.

[Transcript missing]

And now we've got just five results, and these are five Madonna albums.

Madonna happens to be a popular term, and we're seeing a lot of results from Madonna, but it's not necessarily the case in the search that you will get Madonna the artist. And I might actually be looking for song terms that have Madonna in the title of the song, and I don't necessarily want artists that are named Madonna. So let's narrow it down so that I can say Attribute. Attribute equals a song term. And now what we'll get is we'll get back... Oh, I'm sorry. I got to take out the entity equals album because we're not looking for albums necessarily.

So now you'll see we are -- the track name here is "The Power of Madonna." It's from -- it's a TV episode. It was from the Glee soundtrack or from the Glee -- actually, the Glee TV show. So now we can narrow down what our users are searching for to a specific piece of metadata, and in this case, it was a song term. So that's not what I'm going to do in my website. I do want the albums, all that search stuff. So let's go back to our code and see what I've written for this specific example.

I'm going to build out a search feature on my website. I want just a text input box and a submit button. Here you can see I've got just that, the text input, submit button, and I've also, in the JavaScript, I've included my affiliate credentials so that I can get affiliate commission for referencing users to this. Let's look at the JavaScript that's written for this. I've got this already embedded in my website.

If you look at the... The very top up here, the very beginning, I've got my search parameters that I want to use. And then the rest of this is just going to return results and format and make things pretty for my website. So let's go ahead and go into My blog posting. I want to put right at the top, I want to put this.

So I'm going to save this and we'll go back to my blog. Let me refresh. You'll see now there is an input box and I can search for Madonna. And now you'll see I've built out search functionality on my website that uses the store results. You've got the album art here.

You've got the name of the artist and the album names. And when you click on them, they will take you right into the store just as our widgets do and just as the RSS did on our website. So that's the Search and Lookup API that we have for the affiliate program.

Great. Thank you, Ted. So, yeah, there's a lot you can do with the Search API. And that also will work from an app, so if you need to pull in data that way, go ahead and do it. So up to now we've been talking about the Web API, the live, constantly updating feeds.

There's also an offline feed that you can pull down and import into a database for offline or batch processing. And we call these feeds EPF. They're bulk data feeds. EPF comes in two flavors. There's EPF relational, which is kind of intended for relational databases. And there's EPF flats for sort of more of the NoSQL crowd.

So for EPF Relational, this is a feed that has very rich metadata about virtually all the content on the store. It's intended for a relational database, and it's organized by files representing database tables. And this is aimed at orgs that have some pretty serious data processing needs. Perhaps they have a content library that they want to cross-reference with the iTunes store, or they have a music or app recommendation system that needs to know about everything that's available. That's where EPF Relational comes in.

So the data that's available is, as I said, very broad. There's apps, there's podcasts, music, audiobooks. It's pretty broad coverage. And it works by generating a bulk export in two main modes. There's a full export that's generated every week. And when I said this was a bulk data feed, this is 30, 40 gigabytes uncompressed metadata. So it's no small matter to bring this into a database.

Fortunately, we also have a daily incremental export, which is all the content that's been updated since the last full export. And so if you pull down each of the weekly full feeds, you don't have to import all 30, 40 gigs every day. You just use the incrementals. And this data you pull down from a website, you need to sign up with the program to get an account for that website first. And you pull it down with HTTP.

So EPF relational is organized into purpose-specific archives. There's iTunes, which is kind of the basic metadata package. There's a matching archive for UPC, ISBN, Grid, all those other ID systems is in the matching archive. There's a pricing archive, which is supposed to cover all of the countries that the content is available in, and there's quite a few at this point. And finally, the popularity archive gives you the top thousand pieces of content by rank in each genre.

Within each archive are those files that represent database tables. So for an example, if you're interested in artists, either music artists or movie directors or actors and actresses or even application developers, that information is going to be in the artist table. And if you're interested, for example, in application metadata, that will be in the application table.

And these are, again, both database tables represented in files. But if you want to know who did a particular app, who wrote what, essentially, it's pretty much as you'd expect from relational schema 101. There's a join table between the artist and the application files, and those are how you can cross-reference the two.

So that's EPF relational. EPF flat is a simpler way of doing things. And instead of archives full of multiple files, each archive is pretty much a single file. And each file is for a specific country and is intended for a given media type. So if you want apps in the UK, there's one file for that. You don't need to cross-reference anything with a join table or anything. Thank you.

and the format is actually compatible with a spreadsheet application. This is, again, a large data feed, so it's unlikely that your spreadsheet is going to be able to handle all, you know, several million rows. But if you chop it up, you can actually edit it with a spreadsheet.

There's no schema, no relational tables or anything. All the information for a given piece of content is available in a single row. And because of that, it's really easy to stuff this into one of those NoSQL content stores. So if you're using Lucene or SimpleDB, Voldemort, Memcached, anything with kind of a key value system, EPF Flat is a great way to do that.

So that's EPF. It's a lot of data, a lot of possibilities. To make it easier on you to pull this data into your database, we do have the EPF importer script. It's a cross-platform Python app, and it pulls down the EPF data into a MySQL database. It handles both the relational and the EPF flat data, and it's really easy to set up and get going because it's self-configuring.

It will actually read the comment headers from the export files and use that to generate column names, database type information. That allows us to distinguish a VARCAR from a number, and it will even pull in the suggested primary keys based on the comments in the export. Thank you.

You can restrict the imports with a whitelist and a blacklist. So if you're interested in just a subset of the information that's available, you can either blacklist the other stuff or whitelist the things you're interested in. Since it's such a large amount of data, it actually supports resume. So if it's interrupted for any reason, you don't have to start over from the beginning.

And it's released a sample code, so if you don't deploy MySQL in your production environment and you want to use it with one of these other data stores, totally easy to do. You just edit the code and you're off to the races. So now that we've got our live, updated over the web services and we've got our bulk processing, let's see what we can do with it. One of the cool things that you can do once you have a notion of what content is available on the store is to create a web mix.

These are dynamically generated playlists that you can create on the fly just by defining a URL. There's no upload required beforehand. So if you -- if a user on your site has expressed interest in a particular set of data, you can use Web iMiX to generate a playlist of content that they would be interested in, and they can buy it with a single click.

Now this works, it's worked for a few years on the desktop, but it recently came onto the iPad and iPhone as well. So it's got this great UI. So to get started with a Web Mix, you do need to register an account with the affiliate program first. And that's so that you can digitally sign each URL so that we know that a particular Web Mix came from you.

There's a script provided to get you going. And just take a look at this output. You can define the title for your Web Mix, and that's going to show up in the UI. You can also specify the description, and that will be there too. There's an IDs field for specifying the content that you actually want within the playlist, and you can specify both songs and albums.

So if you want to include an entire album, that's doable. And finally, there's the WDID, which identifies you as the source of this Web Mix URL, and a key which represents the hash of the URL that's been applied. So that's just we know that this came from a trusted source.

That's WebMix and the affiliate program. All of this information is available on this great resources website. It's available at apple.com/itunesaffiliates. There's a lot of information there about documentation. Some of these-- a lot of the keys and permitted values, there's a long list of pretty much everything you can do with it. There's a blog and some tips and tricks that we encounter.

So if you go there, we actually have an RSS feed that you can sign up for and stay up to date with all the goings on. So I mentioned the affiliate website already. If you have any questions, you can mail us at [email protected]. Our technology evangelist today was Vicki Murley. And if you have any more questions, you can always go to the devforums.apple.com website and ask them there. We'll be doing an affiliate lab after lunch, 2:00 p.m., in the Safari and web demo-- lab area.

And just to summarize, the affiliate program is a great way to earn commissions and to promote your apps and other content. This can be really powerful and also an important source of revenue. If you're just getting started, check out LinkMaker and the widgets. Pretty much no coding necessary to use that.

You can use RSS for keeping track of what's new, what's hot on the store. And you can do the Search API for on-the-fly queries and lookup to get the latest prices and other metadata. EPF is available as a bulk data feed which can help you do some offline processing. and Web Mix allows you to define custom playlists for users on the fly right when they're needed.

I really do urge you to check out the Affiliaite's website. It's a great way to stay in touch and stay abreast of what's going on with the program. and most importantly, if you're interested, go reach out to one or more of the affiliate networks, create an account, and get started because there's no other way to get started faster. All right, thanks.