Baseify Developer Hub
Below you will find comprehensive guides and documentation to help you start working with Baseify as quickly as possible, as well as support if you get stuck. Please post any questions you might have to our support portal.
1.Get Started
1.1.Getting Started with The Baseify Semantic Monetization Platform
Before You Start
Made sure that you conform to the following criteria:
- You are a software or website publisher, or operate a collection of such properties either directly or have access to them via an exchange
- There is no adult, pornographic or gambling traffic that you plan to send Baseify
- It is clear and understood that any deviation from Baseify’s terms and conditions will constitute a material breach and result in immediate termination
Step 1: Apply for An Account
Due to the premium nature of our demand partners, we make sure to vet each and every publisher or network that joins the Baseify platform passes a thorough review.
- Review or gallery of solutions to understand what options might be a fit for a collaboration with Baseify, see here.
- Navigate to our enroll page and fill out the details that will give us a full understanding of your business and opportunity.
- Complete your application by clicking “register”, that action also is the acceptance of the binding contract between your company and Baseify. Make sure to read it here.
Step 2: Review and Notification
After the application form is received in our system, we will take time to review it. We use multiple factors to determine a fit. If we think there is potential, we will reach out for a skype or phone discussion to learn more.
We do not share reasons for rejection, but we do encourage applicants to re-attempt applying after there has been a noticeable change they can report from one application to another.
You will receive your confirmation \ rejection email to the email you applied with.
Step 3: Activation Code
Once you are accepted you will be getting an email that will include code for you to integrate with. The code will already include your CUID which is the publisher identifier each partner receives when they are accepted to the Baseify platform.
Once you have that email you can review the various technical documents in the remainder of this page for next steps to integrate.
1.2.Understanding Baseify's Reporting
Before you start
If you are not familiar with how performance marketing works, we recommend you either appoint someone within your company who is to take point on this integration or review this helpful video.
Reporting Delivery
Each report can be accessed via:
- A daily email sent to the email you enrolled with
- Logging into your account using your dashboard credentials
Dimensions of Reporting
The standard dimensions of the daily report include:
- Date – [yyyy-mm-dd]
- Publisher – your alphanumeric identifier in the Baseify system
- Subid – a dynamic parameter in the Baseify code you integrated, can be anything you want up to 16 characters
- Widget – the Baseify solution that generated that received your traffic
- GEO – the country from which the traffic was generated
- Impressions – counting the number of impressions or queries intercepted via Baseify
- Clicks – the number of accepted clicks by the Baseify system
- Estimated revenues – Baseify’s estimation of the current value of traffic
Frequency of Reports
Reports are populated daily based off of the confirmed sales and conversions reported to Baseify by our demand partners. Reports go out at 10 AM PST on a daily basis.
Please note, as Baseify depends on 3rd party revenue information reports are often incomplete on a daily basis, especially after and during the weekends or national holidays of various countries. It is best to review reports with the understanding that there will be significant changes after 72 hours.
Timezone
The Baseify database reports information based off of Pacific Standard Time (-08 GMT).
2.Integrating Baseify's Ad Units to Accept Traffic
Baseify provides monetization solutions that allow users to search and shop via engaging ads.
The technology is integrated into a website or browser add-on via JS code injection, API or iframe placement. Once integrated, users can automatically find contextually relevant products on an ever-expanding database of online merchants and offers and experience true semantic search.
Our partners generate revenues every time a user clicks on a result.
Supported countries: https://www.baseify.com/geos
2.1.Shopping Ads for Direct Web Publishers
1. Basics
Current embedding code allows publisher with no programming skills operate with this kind of widget. The code consists of two parts:
spotting tag – defines a place where the widget will be displayed
<div id='holder-502267'></div>
injection script – does all job of processing and rendering
<script> (function(e, t) { o = "https://search.ocra.info/shopping-ads?kw=&cuid=dd45ae9c8aa5926714b2d742a35f83b7&subid=&type=iframe&source=" + t + "&method=direct&elid=" + e.id, s = document.createElement("script"), s.src = o, document.head.appendChild(s); })(document.getElementById("holder-502267"), encodeURIComponent(document.location.href)); </script>
2. Implementation
WordPress
If you are using WordPress as your main platform to generate content, you may switch to SOURCE CODE mode in article edit to inject the code. It is highly recommended to use HTML banner widget to inject Shopping Ads Widget on your website page
Source Code
If you have HTML coding skills and access to your website source code, you may easy adapt Shopping Ads Widget to look and feel in harmony with your website design. By injecting the code it should be placed as a part of HTML content. Please make sure your website design features will not overlap widget’s frame
If you still have questions please don’t hesitate to contact us
3. Improvement
In nearest future we are going to add more features in customization form, where publisher will be able to manage widget style, size, number of displayed results, use custom templates to display content similar to website look.
2.2.Search Suggest Integration for Website & Add On Publishers
- Supported countries: https://www.baseify.com/geos
- Installation video: https://youtu.be/BGG6biUjmjk
User Story
- The user types a query in the search field
- User is shown a list of related results, if applicable
- Once user clicks on result, they will be redirected to the advertiser page

Search Suggest – step 1

Search Suggest – Step 2
Implementation
- You will be provided with archive containing required javascript library and cascade styles
- Disable previous logic applied to input
- Include <script src=js/bs-search.js></script> in bottom of body
- Include <link rel=stylesheet href=css/bs-outer-styles.css> in head
- Script will find the first appearance of input text and attach search-suggest functionality on it
2.3.Visual Search Integration for Software Publishers
- Supported countries: https://www.baseify.com/geos
- Demo video: https://youtu.be/tyzGjT3GaE8
User Story
- The user browses to an e-commerce website
- User views a product image
- They are shown related products either by:
- Mousing over a product image, via the In-Image Button
- Viewing the filmstrip appended to the product hero image

In Image Button & Modal Box

Hero Image Filmstrip
Implementation
javascript:(function(u){s=document.createElement('script');s.src=u;document.head.appendChild(s);})('https://ocra1-2w3auu9iq9yw.stackpathdns.com/sm/processor.sm.js?cuid= f28eb652f695b78be8673f523cd923e8&&sid=none&name=&mail=&optop=true&opfilmstrip=true')
Parameters
Should be placed in the JavaScript:
- sid – An optional parameter which allows you to distinguish between different campaigns or groups. To use, replace the string “none” with a new value per each new campaign launched.
- name – Dynamically populates the user interface attribution, Ads by XXX. Must match the product name of the toolbar or add-on.
- mail – Dynamically populates the email in the description to match your support email, required for compliance.
3.Integrating Baseify's Monetization APIs for Exchanges and Ad Networks
Baseify’s APIs support multiple use cases that are particularly useful for ad networks and exchanges, these include:
- Search API, Complete (JSON Response)
- Smart Redirector
- Real-Time Bidding (RTB) API
3.1.Ecommerce Product Search API
When querying the Product Search API, you will need to include specific parameters described in the table below. Upon generation of the API requests, you can then extract the necessary data from the JSON document for the purposes of providing your users with a custom presentation.
Base URL
https://search.ocra.info/api/v1
Request Structure
URI part
Consists of a string representing publisher’s unique key in baseify systems. e.g.: https://search.ocra.info/api/v1/e7191f7er , where e7191f7er is mentioned key
Request parameters
q – search term or query, required
subid – campaign name (subId), optional. Up to 12 symbols String identifies custom campaign name
ip – client IP address, optional. If this parameter is not specified, script will identify it basing on current client data
limit – a number of items to be returned by script, optional, default – 15
uid – click tracker id, not obligatory. If specified, system will report when user got redirected to merchant’s page. Initially tracking call-back settings should be specified and added into baseify systems
Example
https://search.ocra.info/api/v1/e7191f7er?q=iphone+x&subid=initial_campaing&uid=abc123&ip=8.8.8.8&limit=15&uid=2873he8237h827392ij3
Response structure example
{ "status": "ok", "ttl": 0.13556790351867676, "data": [ { "id": "50045bf5c011b00b98113f307850743b", "title": "Olympique Lyonnais COQUE IPHONE X & XS GONE bleu OL - Foot Lyon", "description": "Coque en silicone pour Iphone X et XS Prot\u00e8ge votre appareil contre les chutes\u00a0 Coque bleue avec une inscription Gone horizontale\u00a0", "link": "https:\/\/fr-go.kelkoogroup.net\/ctl\/go\/sitesearchGo?.ts=1582313325772&.sig=G_it3tcBCe3F.yD2ueXlLgPc.68-&affiliationId=96949509&catId=163801&comId=15512713&contextLevel=1&contextOfferPosition=1&contextPageSize=10&country=fr&ecs=ok&merchantid=15512713&offerId=50045bf5c011b00b98113f307850743b&searchId=10769819916067_1582313325407_920235&searchQuery=aXBob25lIHg%3D&service=5&wait=true&custom1=%7Bcampaign_id%7D_%7Bchannel%7D_%7Bbrowser%7D_%7Bdevice%7D", "image_link": "https:\/\/r.kelkoo.com\/resize.php?country=fr&merchantId=15512713&categoryId=163801&width=auto&height=auto&image=https%3A%2F%2Folbtqprdcdn.azureedge.net%2F21283-nq_social_share%2Fcoque-gone-bleu-vertical-iphone-x.jpg&sign=j9zFRoZxCcvfJzhhxxCtUfs0gMJV_GrFjP6hPq._T4s-&searchId=10769819916067_1582313325407_920235&offerId=50045bf5c011b00b98113f307850743b", "price": "14.99 EUR", "sale_price": "14.99 EUR", "ecpc": "0.05132399824261666", "merchant": { "id": "15512713", "name": "Boutique Officielle Olympique Lyonnais" }, "category": { "id": "163801", "name": "Sports collectifs" }, "api": "kelkoo", "brand": { "name": "Olympique Lyonnais", "id": "45953" } } ] }
Error response example
{ "status": "error", "code": 422, "message": "Invalid campaign data" }
3.2.Integration of Smart Redirect for Real Time Bidders or "Waterfalls"
This redirect script allows the publisher to send Baseify a query URL or Keyword. The Query URL will be analyzed for product-related content, using natural language processing, if no quality result will be found Baseify will use the keyword. If the keyword does not return a result from Baseify’s demand, or if there is no keyword the “out” parameter will be fired (ideal for “waterfall” flows).
Request
Method
|
URL
|
---|---|
GET | https://search.ocra.info/smr |
Params
|
Values
|
Required
|
---|---|---|
cuid | string | Yes |
subid | string | No |
kw | string | Yes |
source | string | Yes (if no kw provided) |
out | string | No |
cuid – Publisher unique ID – 32 alphanumeric symbols length string, provided by baseify publishers dashboard
subid – Additional custom id, performs additional tracking of campaigns. 1 to 32 alphanumeric + dash + underscore symbols string, may accept any value
kw – Search request. Should be URL-encoded. If source URL is not specified or contain no prospective data, kw value will be used as search query
source – URL of the page where user being sent from. Should be URL-encoded
out – destination URL where the user will be redirected if the script will not find a related advertisement. Should be URL-encoded
Response
HTTP Status
|
Response
|
---|---|
302 | Location to advertisement page or out URL |
204 | No Content: In case if there is nowhere to redirect |
500 | Request processing error |
Example
https://search.ocra.info/smr?cuid=4f45a87fd9d198a1a0e493a544c67b1c&subid=AUG-17&kw=SanDisk+32GB&source=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB0143RT8OY%2Fref%3Ds9_acsd_zgift_hd_bw_birY_c_x_2_w%3Fpf_rd_m%3DATVPDKIKX0DER%26pf_rd_s%3Dmerchandised-search-11%26pf_rd_r%3DFMB2BND3ZWK58KDH2K65%26pf_rd_t%3D101%26pf_rd_p%3Dfcb4f536-e749-5c31-91f7-ff7336983901%26pf_rd_i%3D172456&out=http%3A%2F%2Fmyb.ack%2Flocation
4.Integrate Baseify's Reporting API
Request format
‘GET’: http://publishers.baseify.com/api/stats.php?period[0]=YYYY-DD-MM&period[1]=YYYY-MM-DD
Header – Authorization: Basic HASHDATA
Hash data is unique per publisher and it is available on API page in publishers dashboard: http://publishers.baseify.com/api.php
Response format
JSON in case of failure:
{ "response": { "success": fasle, "message": "forbidden" } } { "response": { "success": fasle, "message": "Period is not valid" } }
JSON in case of success:
{ "response": { "success": true, "message": "Ok", "data": [ { "date": "2017-02-01", "subid": "subid1", "country": "US", "impressions": "23421", "clicks": "444", "commission": "40.628" }, { "date": "2017-02-01", "subid": "subid2", "country": "AU", "impressions": "4", "clicks": "0", "commission": "0.000" } } }