Ads for Virtual Goods

Re-engange your players with ads.

Engagement Ads are a great tool to re-engage people who have previously used your game or app. With desktop ads for virtual goods, you can display offers for virtual goods to your players, directly on Facebook as engagement ads.

Overview

These unique image and video ads are shown on the Feed or the right hand column for a pre-defined list of people who play your game, inviting them to buy a virtual item or currency. By clicking specific calls to action, like Buy Now or Get Offer, people can buy content and get redirected to your game after they complete the purchase.

Desktop ads for virtual goods can be created through our ads creation tools, including Ads Manager, or via one of our partners at Marketing Developers.

User Experience

When a person sees desktop ad for virtual goods in their Feed, they can click on the call to action and decide to accept the offer. This happens in the following order:

  1. See an advert in Feed
  2. Click Get Offer or Buy Now, and see a pay dialog showing the item and cost in the preferred currency, overlaid on Feed.
  3. Choose to change default payment method
  4. Complete purchase and get redirected to the game
User Experience

Defining the product for your ad

Once your app is ready to accept payments, it's necessary to define the virtual good product item that you're going to offer in the desktop ad.

This is an example of an in-game product representing 10,000 Friend Smash Coins:

<!DOCTYPE html><html>
 <head prefix=
    "og: http://ogp.me/ns# 
     fb: http://ogp.me/ns/fb# 
     product: http://ogp.me/ns/product#">
    <meta property="og:type" content="og:product" />
    <meta property="og:title" content="10,000 Friend Smash Coins" />
    <meta property="og:plural_title" content="10,000 Friend Smash Coins" />
    <meta property="og:image" content="http://www.friendsmash.com/images/coin_600.png" />
    <meta property="og:description" content="Friend Smash Coins to purchase upgrades and items!" />
    <meta property="og:url" content="http://www.friendsmash.com/og/coins.html" />
    <meta property="product:original_price:amount" content="12.99"/>
    <meta property="product:original_price:currency" content="USD"/>
    <meta property="product:price:amount" content="10.99"/>
    <meta property="product:price:currency" content="USD"/>
    <meta property="product:original_price:amount" content="13.99"/>
    <meta property="product:original_price:currency" content="GBP"/>
    <meta property="product:price:amount" content="11.99"/>
    <meta property="product:price:currency" content="GBP"/>
    <meta property="product:purchase_limit" content="2"/>
    <meta property="product:is_product_shareable" content="1"/>
  </head></html>

You'll notice that we've defined the price of this item to be $14.99 USD and £11.99 GBP. This price is the one that will show up in your ad's price information, depending on the user's preferred currency.

For desktop app ads, dynamically priced objects should only be used to compute after-sales-tax prices. The request_id parameter isn't supported for payments created through this feature. When the ad unit is displayed on your players' Feeds, the ad will be rendered with the pretax_priceamount and currency. When a person clicks on the ad, we'll issue a HTTP POST request to your Payments Callback URL to obtain the final price for the item. As a developer, you're responsible for responding to this request and returning an appropriate value.

For this special dynamic call, there's an extra parameter that will be sent to your server endpoint:

Parameter Description

is_from_page_post

This parameter lets the developer know that the payments_get_item_price call comes from an engagement ad.

There are several new meta tags for the product objects which are exclusive to objects used in desktop engagement ads. These new properties will define how the ad will be rendered and its behavior.

Property Description

product:original_price:amount

Original price of the item being advertised.

product:original_price:currency

Currency of the item.

product:pretax_price:amount

Used to define the price amount for dynamically priced items.

product:pretax_price:currency

Used to define the price currency for dynamically priced items.

product:purchase_limit

Quantity. Limit on the times this item can be purchased on a user base.

product:is_product_shareable

If set to 0, removes the ability to share the ad post.

Example:

<meta property="product:original_price:amount" content="12.99"/>
<meta property="product:original_price:currency" content="USD"/>
<meta property="product:purchase_limit" content="2"/>
<meta property="product:is_product_shareable" content="0"/>

The product:original_price properties are used to show users the product's original price in the ad, showing that the price is discounted. The regular price of the object has to be larger than the price defined on the object. This property is required if you want to use the Get Offer call to action for your engagement ad.

The optional product:purchase_limit property defines the quantity of objects a person can buy for your app or game for a specific ad unit. Once a person has purchased the amount defined by this property, they won't be able to purchase the item again.

The optional product:is_product_shareable property is used to set if the ad unit can be shared. When set to 0, the ad will be rendered without the "Share" button.

There are 2 easy ways that you can test the desktop app engagement ads once you've set up your items and your fulfillment flow.

The first way is to test with the regular payments flow via the Facebook SDK for Javascript and your newly created item inside your app. To invoke the payments dialog, you'll need to use the FB.ui method of the SDK with the product parameter set to the URL of your item's OG object: The second way to test the flow is via the Virtual Goods Ad Tester tool. This tool will help you invoke the payments dialog using your app's ID and the URL of your item's OG object.

Fulfillment

Once one of your players clicks on an ad and completes the payment flow, they'll be redirected to your game or app. At this point, we'll issue a webhook update to the endpoint defined in your app's subscriptions callback URL. When your server receives this notification, you'll need to check the payment status, complete the order if the payment was successful and inform them that they've received the product they purchased.

Testing

There are two easy ways that you can test the desktop app engagement ads once you've set up your items and your fulfillment flow.

The first way is to test with the regular payments flow via the Facebook SDK for Javascript and your newly created item inside your app. To invoke the payments dialog, you will need to make use of the FB.ui method of the SDK with the product parameter set to the URL of your item's OG object:

FB.ui(
    {
        method: 'pay',
        action: 'purchaseitem',
        product: 'http://www.friendsmash.com/og/coins.html'
    },
    callback
);

The second way to test the flow is via the Virtual Goods Ad Tester tool. This tool will help you invoke the payments dialog using your app's ID and the URL of your item's OG object.

Once that you've gone through the payment flow, verify that your server received the Realtime Update and that your database was updated to reflect that the item has been purchased by the user.

In order to avoid being charged each time you make a test, don't forget to add yourself as a payment tester for your app.

Next Steps

Once your application is ready to accept payments and your servers are configured correctly to fulfill the virtual goods ads for your players you can start building your Desktop App Ads.

To read more on how to create these type of ads, you can consult our Desktop App Ads creation guide or you can start creating ads through our Ad Creation Tools.