Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The ayeT-Studios Rewarded Video SDK for HTML5 allows web publishers to request and run rewarded video ads within their page.
The table below shows all Placement & AdSlot Type combinations which allow you to utilize the Rewarded Video for Web integration.
If you integrate the Rewarded Video for Web SDK while using a different Placement & AdSlot combination in the ayeT-Studios dashboard, you won't be able to send correct ad requests.
Before you start with the integration, make sure you:
You will find more details here:
Adding an ads.txt to your domain is required (see Integration) to correctly utilize the Rewarded Video solution.
You can find the relevant ads.txt lines that you have to add to www.your-website.com/ads.txt under "Edit Placements" in your publisher dashboard.
We highly recommend using a CMP (Consent Management Platform) on your website.
Without a compliant CMP and without requesting consent from affected GDPR & CCPA users, both fill rate and eCPM will be impacted significantly or no ads will be delivered at all.
There are two different options for you to integrate a CMP:
Self-Hosted CMP
Look for a CMP that suits you
Follow the integration docs of that CMP
CMP from Google AdSense (free of charge)
Create a Google AdSense account
Setup and integrate the Google CMP
Our Team can assist with the setup
Our JavaScript library supports the following features:
OpenRTB header bidding with bundled prebid.js
Ad server functionality with custom waterfall demand sources, bid buckets and back fill
Consecutive waterfall VAST tag validation and fallback handling for no-bid scenarios
Content isolation and parent page protection using iframe playback
Native browser video rendering
Automatic detection of external CMPs and support for TCF2 / GDPR consent handling
Both S2S and signed client-side callbacks for user rewards
To integrate our video SDK on your site, add the following script to the <head></head>
section of your web / app or pages where videos are supposed to be played:
The script above is around 35kb in size and will load additional required scripts (bidders, players, configuration) upon initialization.
Next, please verify that the ads.txt on your server contains all requested entries listed for your placement in our dashboard in the Placement Details > Overview page.
To initialize the SDK for a user, make the following asynchronous call that returns a Promise:
externalIdentifier
is a string (up to 64 chars, min. 3 characters) you set to uniquely identify your user. It might be a UUID, a hashed email address or anything that allows you to persistently identify a user.
optionalParameter
is an optional string (up to 32 chars) you can use to add an additional reporting dimension to the video statistics. It can be accessed and filtered in the video adslot statistics and the reporting API.
To receive notifications for video playback events, the following global callbacks can be configured:
To request a video ad for your AdSlot, make the following asynchronous call:
Make sure not to call requestAd
before the initialization of the SDK is complete, otherwise the call will fail. Also note, that after a success callback, a video ad is ready to be played. Depending on your video demand sources, successful bids will timeout after a while (usually 1-60 minutes). It's advisable to make a requestAd
call just in time when a video should be played.
After a video ad has been successfully requested, the following calls are available to play an ad. Please note, that these functions should be called from a user-interaction (for example a click event) or from the requestAd
success callback which itself has been called from a user-interaction. Otherwise, video autoplay will be rejected by most browsers and we must render an additional button over the video for the user to click, which lowers the acceptance and usability.
The different play...Ad
functions will silently abort if an ad is already playing. In all other cases, they make use of the global callback handlers described in the Initialization & Global Callback Handlers section.
Additionally, it makes sense to check if a video is ready to play, especially if there's a bigger expected delay between requestAd
and play...Ad
, for example:
While a video is playing, it's possible to externally interrupt the ad and destroy the player by making a call to destroy
:
There are two ways to reward users for rewarded video views, (1) Clientside Video SDK Callbacks and (2) Server2Server Conversion Callbacks.
The S2S Callbacks are usually sent to your server within 60 seconds after a completed & rewarded video view.
Since rewarding users for video views in real time is usually important for a frictionless user flow, we recommend using (1) Clientside Video SDK Callbacks!
For more information on Server2Server Conversion Callbacks please use this link:
The Clientside SDK Callbacks are received through the global AyetVideoSdk.callbackRewarded
function shown in Initialization & Global Callback Handlers:
Please use AyetVideoSdk.callbackRewarded
and not AyetVideoSdk.callbackComplete
to reward users!
You can send the callback response to your server and validate the callback signature serverside. The signature can be verified serverside with your publisher API key (found in our Dashboard > Account Settings > Api Key), like the following example (in PHP). If custom parameters are present in the callback, they are also part of the signature
. Signature calculation example:
To pass custom parameters to server-side conversion callbacks and clientside callbacks, the function AyetVideoSdk.setCustomParameter('custom_n', 'value')
is available.
Where:
custom_n
can be one of these: custom_1, custom_2, custom_3, custom_4, custom_5
. value
is a string (up to 64 chars).
Custom Parameters are up to 64 chars of length!
AyetVideoSdk.setCustomParameter
can be called any time with the most recent content used when a video view is completed.
There are two different callback methods for errors in the ayetvideosdk
:
The global AyetVideoSdk.callbackError
function that can be configured and is invoked for any type of callback errors: AyetVideoSdk.callbackError = function(e)
{console.log("callbackError: "+JSON.stringify(e));};
The local error function in AyetVideoSdk.requestAd(adslotName, successFunction, errorFunction);
that is invoked if an ad request did not succeed
Possible error messages for AyetVideoSdk.callbackError
:
Possible error messages for the AyetVideoSdk.requestAd(...)
error callback:
Learn about:
Setting up callbacks
IP Whitelists
Securing callbacks using HMAC Security Hash
Testing callbacks
Click on the link below:
Placement Type | AdSlot Type | Eligible Integration Type |
---|---|---|
Website
Rewarded Video
Rewarded Video SDK for HTML5
no adTagUrl set, no video ad available.
No ad was requested using requestAd
or the request was unsuccessful.
provided ad unit did not start.
The player was unable to start the playback of the video.
provided ad unit stalled.
The video playback was interrupted for > 5 seconds and aborted (for ex. network issues).
provided ad unit is corrupt.
The video file or companion ads are corrupted or not supported (for ex. codecs).
all bids expired or contained invalid VAST responses, unable to render ad.
No valid bids response was found or all bids responses are expired (please request a new ad).
unrecoverable ad error: {message}
Other video player or VAST parser errors that were not covered above.
no fill.
This is expected behaviour: There is currently no video ad available for the device & user.
unhandled client exception.
Unspecified exception in the ayetvideosdk
during ad request.
invalid server response.
Error communicating with our servers, check your internet connection & make sure ad blockers are disabled.
cap reached.
The user/device video cap has been reached.
Coming soon
Coming soon
An ads.txt (Authorized Digital Sellers) file is essential for ensuring transparency in digital advertising
Hosted on a publisher's server, it lists authorized sellers of ad inventory, preventing fraud by verifying legitimate transactions. This file safeguards both publishers and advertisers, instilling confidence in the ad buying process and maintaining the integrity of the advertising ecosystem.
Implementing and regularly updating an ads.txt file is a fundamental step in fostering a trustworthy and secure advertising environment.
This is a step by step documentation on how you can get and automatically keep your ads.txt lines updated with ayeT-Studios' platform.
In the top right corner of the screen click on “Placements/Apps”
Locate your rewarded video placement, and click on edit (right-hand side of the screen)
In the pop-up window, click on “ads.txt”
You should update your ads.txt regularly, since ayeT-Studios might add new partners to sell your traffic for higher CPMs. If you don't update regularly, you might miss out on additional revenue opportunities.
You have two options to keep your ads.txt entries updated on your website:
You can either download the entire ads.txt file
Or you can copy the missing entries
You then have to manually add these lines to your ads.txt site on your domain.
Regular Manual Updates
You can use the Permanent URL option to automate keeping the ads.txt entries on your site updated.
Recommened: Using the Permanent URL ensures that you don't have to regularly check on new entries or inform your tech team to update the ads.txt entries regularly.
Tell your tech to write a few linkes of code to e.g. crawl the permanent URL once a day to search for updated ads.txt entries. Once you fetch changes, automaically update the ads.txt entries on your website.
For more information on the API integration please go to the following link:
Learn more about the Rewarded Video metrics available in our dashboard and how to use them in your reporting
Group | Metric | Description |
---|
Revenue & Costs | Revenue | The publisher's net revenue. *For AdServer integration the service fees are not considered and revenue is estimated based on Rewarded views (after our own fraud & viewability checks), VAST network configuration or RTB (real-time bidding) exchange eCPM in bid responses. |
| AdServer Fees | This is the amount deducted from the revenue for the AdServer service. (*equals 0 if AdServer is not used) |
Delivery | Requests | Number of requested video ads. |
| Fills | Ad requests with valid fill for at least one network. |
No Fills | The network didn't deliver an ad for the request. |
Unchecked Fill Status | The fill wasn't checked for this network, because a network higher up in the waterfall already delivered fill. |
Playback | Requested Plays | The number of filled ad requests for which playAd was called. |
| Media Errors | The number of requested plays for which the player was unable to load or initialize the media file. |
| Started Plays | The media file was loaded and playback started. |
| Play errors | The number of times video playback was prematurely interrupted (user abort, network errors, interactive ad termination). |
Performance | Completed Views | The number of completed video views. |
| Rewarded Views | The number of rewarded views after server-side fraud and visibility checks. |
eCPM | This is the effective Cost Per Mille calculated based on the revenue and rewarded views. eCPM= Revenue / Rewarded views *1000 |
TCF | TCF Missing | Consent String is missing |
TCF GDPR | GDPR Consent String is available |
TCF No GDPR | GDPR Consent String is not available |
TCF Rejected | User rejected the Consent |
TCF Partial | User partially accepted the Consent |
TCF Consented | User fully accepted the Consent |
You can bring your own VAST Tag Demand to our Ad Server solution to make direct deals with preferred partners in order to increase your overall eCPMs.
Attribute | Type | Description |
---|---|---|
{external_identifier}
string
Unique User ID passed to the Video SDK for each user.
{device_uuid}
string
ayeT-Studios internal device identificator
{device_make}
string
Device manufacturer
{device_model}
string
Device model
{device_ifa}
string
Device advertising id (GAID/IDFA) if known, otherwise empty
{device_os}
string
Device os
{device_osv}
string
Device os version
{country}
string
Country from which the ad request is made.
{ip}
string
IP address from which the ad request is made.
{ua}
string
User Agent from which the ad request is made.
{cat}
string array
Array of IAB content categories of the site.
{bcat}
string array
Array of Blocked IAB content categories of the site.
{site_name}
string
Site name / Placement name as set up in the ayeT dashboard by the publisher .
{site_domain}
string
Domain of the site (e.g., "sub.foobar.com")
{site_url}
string
URL of the site (e.g., "https://sub.foobar.com/abc")
{site_url_encoded}
string
Encoded URL of the site (e.g., "https%3A%2F%2Fsub.foobar.com%2Fabc")
{app_bundle}
string
A platform-specific application identifier intended to be unique to the app and independent of the exchange. On Android, this should be a bundle or package name (e.g., com.foo.mygame). On iOS, it is typically a numeric ID.
{app_name}
string
App name / Placement name as set up in the ayeT dashboard by the publisher.
{app_storeurl}
string
App store URL for an installed app.
{app_storeurl_encoded}
string
Encoded app store URL for an installed app.
{cmp_available}
int
1 if a CMP was detected, 0 if not
{tc_string}
string
Tcf Consent String received from the CMP
{gdpr_applies}
int
1 if the user is from a county where the GDPR applies, 0 if not
{ts}
int
Unix timestamp
{uid_criteo}
string
Macro for passing an external / share User ID from our integrated partner Criteo